服装做外贸的网站建设/域名解析ip地址
目录
一、服务拆分
1、案例一:多端口微服务
2、案例二:服务远程调用
二、Eureka
1、Eureka 原理分析
2、Eureka 服务搭建(注册 eureka 服务)
3、Eureka 服务注册(注册其他服务)
4、Eureka 服务发现(服务拉取)
三、Ribbon 负载均衡
1、负载均衡原理
2、负载均衡策略
3、饥饿加载
一、服务拆分
通过 2 个案例,学习如何实现服务拆分。
- 都需要引入 web 的起步依赖:
1、案例一:多端口微服务
需求:
- 将 Order 和 User 模块的服务进行拆分,通过不同的 URL 进行服务调用。
(1)项目结构
- 为 2 个模块都添加上各自的 Controller;
(2)编写 Controller
- 写一个简单的 Controller,在页面上显示字符串即可;
- UserController 类似;
(3)设置不同的端口,启动 application
- 为两个模块设置不同的服务器端口(user 设置 8081、order 设置 8080);
- 将 Order 模块和 User 模块的 Application 都启动起来;
- 访问页面 /user/query 和 /order/query
2、案例二:服务远程调用
需求:
- 在 Order 的实体类中包含了 User 类型的属性,当根据订单号获取订单信息时,由于 Order 和 User 的数据库访问也是独立的,导致 User 属性为 null。
- 因此在 Order 模块中需要调用 User 模块的查询 user 的功能来获取 User 信息,再赋值给 Order。
(1)项目结构
- 两个模块都需要创建对应的实体类;
- Order 还需要创建 service 和 mapper;
(2)OrderController 和 UserController
- 两个模块的 Controller 都需要添加相应的方法;
(3)OrderMapper
- 为了简单起见,这里不引入连接数据库操作;
- 直接在 mapper 中实现返回一个 User 的方法;
(4)OrderSrevice
OrderSrevice 需要两个属性:OrderMapper 和 RestTemplate;
其中 RestTemplate 就是帮助我们实现远程服务调用的关键;
- url 属性:表示发送的请求;
- responseType 属性:表示返回的数据类型(默认是 JSON);
- getForObject() 方法:表示发送 get 请求;
- postForObject() 方法:表示发送 post 请求;
(5)启动两个模块的 application
- 访问 /order/queryForOrderById/xxx;
二、Eureka
1、Eureka 原理分析
观看下面视频:
08-Eureka-eureka原理分析_哔哩哔哩_bilibili
2、Eureka 服务搭建(注册 eureka 服务)
(1)创建 eureka 服务模块(eureka 为子工程)
- 子工程的 pom 文件中引入依赖;
- 父工程的 pom 文件做好依赖管理;
(2)编写 application 配置文件,注册 eureka
- 设置服务端口;
- 设置 eureka 服务名称;
- 设置 eureka 服务地址;
为什么 eureka 自身的服务地址信息也是 client?
- eureka 也是一个微服务,所以 eureka 启动的时候,会将自己也注册到 eureka 上。
- 这是为了 eureka 之间的集群通信,当有多个 eureka 时,defaultZone 就需要写上多个 URL。
(3)启动 application,访问 eureka
- 为启动类添加 @EnableEurekaServer 注解;
- 访问 localhost:10086/eureka,则会跳转到 eureka 的管理界面;
- instances 表示注册到 eureka 的服务示例(服务列表);
3、Eureka 服务注册(注册其他服务)
(1)引入依赖
- 分别在 Order 模块和 User 模块的 pom 文件中,都添加上如下依赖;
- 注意:使用的是客户端 client 的依赖;
(2)编写 eureka 地址信息
这一步骤跟前面的是一样的。
- 设置服务端口;
- 设置 eureka 服务名称;
- 设置 eureka 服务地址;
(3)将 User 和 Order 的 application 都启动
- 在 Service 中添加 SpringBoot 服务,即可一次性启动;
- 访问 /localhost:10086,来到 eureka 管理页面;
- 此时已经可以看到服务列表已经有 3 个服务了;
(4)多实例部署
如果我们想要 User 有多个服务实例可以添加到服务列表上,可以复制多几份 User 的运行配置。
- 选中要复制的运行配置,点击复制;
- 在 VM Option 中,添加参数 server.port = 一个没用过的端口;
- 启动 5 个 application,观察服务列表;
- 可以发现,Order 和 User 各多了 1 个服务;
4、Eureka 服务发现(服务拉取)
服务发现就是服务拉取。
服务拉取是基于服务名称获取服务列表(比如获取 UserService 的服务列表,内含 2 个服务),然后在对服务列表做负载均衡。
基于前面“服务拆分”的“案例二:服务远程调用”,我们来学习服务拉取。
(1)获取服务列表
- 修改 OrderService 中的代码,用服务名代替 ip:port;
- (既然需要负载均衡,因此肯定无法指定 ip:port,所以使用服务名代替)
(2)添加负载均衡注解 @LoadBalanced
- 在 order-service 项目的启动类 OrderApplication 中的 RestTemplate 添加负载均衡注解:
(3)启动 application,查询 Order
- 启动下面 5 个 application;
- 然后我们选择使用 8080 端口的 Order 来获取信息(也可以用 8083 的);
- 发送 4 次获取 Order 信息的请求,id 从 1~ 4;
- 观察 2 个 User 启动类的输出,都输出了 2 次信息;
- 说明对 user-service 服务列表做到了负载均衡;
三、Ribbon 负载均衡
Ribbon 是一个基于 HTTP 和 TCP 客户端的负载均衡的工具。
它可以在客户端的 application 配置文件中,配置 RibbonServerList(服务端列表),使用 HttpClient 或 RestTemplate 模拟 http 请求,但是步骤比较繁琐。
1、负载均衡原理
2、负载均衡策略
Ribbon 的负载均衡规则是一个叫做 IRule 的接口来定义的,每一个子接口都是一种规则。
(1)Java 可以使用的负载均衡规则
(2)负载均衡规则修改方法
默认情况下,使用的是 ZoneAvoidanceRule。
需要注意的是:
- 第一种方式,可以对所有 order-service 模块访问的服务列表做到负载均衡;(大)
- 第二种方式,只能对配置文件中指定的 service 做到负载均衡;(小)
3、饥饿加载
Ribbon 默认是采用懒加载,即第一次访问时才会去创建 LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:
- enabled = true,表示开启饥饿加载;
- clients = user-service,表示指定对 user-service 这个服务饥饿加载;
- clients 其实是数组形式,可以协商多个服务;
相关文章:

[SpringCloud] Eureka 与 Ribbon 简介
目录 一、服务拆分 1、案例一:多端口微服务 2、案例二:服务远程调用 二、Eureka 1、Eureka 原理分析 2、Eureka 服务搭建(注册 eureka 服务) 3、Eureka 服务注册(注册其他服务) 4、Eureka 服务发现…...

【Python 零基础入门】常用内置函数 再探
【Python 零基础入门】内容补充 1 常用内置函数 Python 简介为什么要学习内置函数集合操作len(): 计算长度sorted(): 排序all(): 检查所有元素any(): 检查任一元素filter(): 过滤元素map(): 应用函数zip(): 组合元素 文件操作和输入输出open(): 打开文件read(): 读取文件write(…...

10.30二叉树一些性质,找公共祖先(一般与搜索树),操作的复杂度,选择题细节
课上 一些结论,性质 n0,n1,n2指的是子结点的数量,n0没有子节点,叶子结点 n2*n2n11,若n1为奇数,则n为偶数,不然,则为奇数 满二叉树 没有度为1的结点,即每个结点要么没有孩子结点,要么…...

亮氨酸脯氨酸肽——一种新型的医药中间体研究肽
亮氨酸脯氨酸医药中间体肽是一种合成(人造)激素,类似于大脑中产生的天然激素。它用于治疗许多医疗问题,包括: 子宫平滑肌瘤(子宫肌瘤)出血引起的贫血,或晚期或晚期前列腺癌症&#…...

Ubuntu 22.04 开机闪logo后卡在/dev/sda3: clean
环境 Vmware 17.0.0,CPU 2,内存4G,硬盘50G Ubuntu 22.04 问题描述 开机 --> 显示两行代码 --> 显示ubuntu logo --> 左上显示两个代码卡住不动 原因分析 1、网上大多说显卡驱动,最近没安装相关软件,也没…...

avue-crud 自定义列
基本设置: option: {columnBtn: false,refreshBtn: false,addBtn: false,delBtn: false,editBtn: false,viewBtn: false,searchShowBtn: false,height: auto,maxHeight: auto,calcHeight: 70,searchLabelWidth: 58,tip: false,searchShow: false,searchMenuSpan: 6…...

达索系统SOLIDWORKS 2024 装配体新增功能
如今市场环境紧迫,许多企业在这样的情形之下,都需要尽快将产品推向市场,赢得头筹。所以产品设计需要快速进行装配验证,以确保产品功能和性能的准确性和可靠性,同时原型或样机的制造和装配需要尽快完成,以满…...

电脑入门:电脑专业英语500词,供新手参考
1. file n. 文件;v. 保存文件 2. command n. 命令,指令 3. use v. 使用,用途 4. program n. 程序 5. line n. (数据,程序)行,线路 6. if conj. 如果 7. display vt. 显示,显示器 8. set v. 设置,n. 集合 9. key n. 键,关键字,关键码 10. list n. 列表,显示,…...

采购管理工具-采购软件-Leangoo免费看板工具
我们可以按照公司的实际情况定制采购流程。 1、在Leangoo免费看板工具中创建一个项目,项目类型建议选择“轻量级协作”,项目模版建议选择“人事与行政” 系统会自动为您创建四个看板,如下图: 图1 2、在项目内创建一个 “办公室采…...

【23真题】大神凭这套拿452分!看看你能拿多少?
今天分享的是23年福州大学866的信号与系统试题及解析。23年福州大学新一代电子信息的最高分是452分!但是我看不到单科分数。按照75,75,150,150。也就是只有450,说明这个同学,专业课和数学几乎拿满ÿ…...

大数据之LibrA数据库系统告警处理(ALM-12002 HA资源异常)
告警解释 HA软件周期性检测Manager的WebService浮动IP地址和数据库。当HA软件检测到浮动IP地址或数据库异常时,产生该告警。 当HA检测到浮动IP地址或数据库正常后,告警恢复。 告警属性 告警参数 对系统的影响 如果Manager的WebService浮动IP地址异常…...

CSS基础入门04
目录 1.内边距 1.1基础写法 1.2复合写法 2.外边距 2.1基础写法 2.2复合写法 2.3块级元素水平居中 3.去除浏览器默认样式 4.弹性布局 4.1初体验 5.flex 布局基本概念 6.常用属性 6.1justify-content 6.2align-items 1.内边距 padding 设置内容和边框之间的距离. …...

LeetCode2741.特别的排列 状压
暴力枚举的话是n! 考虑状压DP,其实就是用二进制表示状态 再进行暴力 同时加一个记忆化就好了 这里有常用技巧: 全集(1<<n)-1 增加某个元素 x | (1<<i) 删除某个元素 x & ~(1<<i) const i…...

【Linux】Centos 8 服务器部署:阿里云域名注册、域名解析、个人网站 ICP 备案详细教程
目录 一、背景信息 二、操作步骤 (1)查询域名 (2)加入域名清单 (3)确认订单信息 (4)支付 (5)等待域名实名认证通过 三、域名注册成功 四、查看域名…...

Sass、Less和Stylus之间有什么主要的区别?
Sass、Less和Stylus是三种常见的CSS预处理器,它们在功能和语法上有一些区别。以下是它们之间的主要区别: 1:语法差异: Sass使用缩进的语法,使用类似于Python的缩进来表示嵌套规则和块级作用域。Less和Stylus使用类似…...

第八章 软件测试自动化
一、学习目的与要求 通过本章的学习,了解自动化测试应考虑的各种因素及如何衡量自动化测试成本,掌握自动化测试和手工测试的优缺点,能正确选择软件测试策略,了解测试工 具的分类和使用目的,熟悉常用的测试工具…...

科大讯飞勾勒生成式AI输入法“模样”,开启下一代输入法革命
回顾国内第三方输入法赛道近十余年的发展,移动互联网的市场红利催生了科大讯飞、百度、搜狗等颇具规模和实力的头部厂商。与此同时,历经多年、多方角逐,第三方输入法市场进入存量阶段,升级技术、优化用户体验来挖掘存量࿰…...

OV-VG: A Benchmark for Open-Vocabulary Visual Grounding
OV-VG: A Benchmark for Open-Vocabulary Visual Grounding 一、Abstract 写在前面 又是一周周末,光调代码去了,都没时间看论文了,汗。 这是一篇关于开放词汇定位的文章,也是近两年的新坑,但是资源也是需要不少。 …...

win10 javaweb 项目8080端口被占用
文章目录 前言出现场景:解决思路: 前言 提示:生活该走向何处?也许你还不知道答案,但是你一定是答案的一部分。 出现场景: 解决思路: 找到运行的进程直接干掉 打开命令窗口(win r…...

C语言每日一题(22)合并两个有序数组
力扣网 88. 合并两个有序数组 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意…...

C++学习day--24 推箱子游戏图像化开发
环境要求: 1、VS2015以上 2、成功安装并配置图形库 项目注意事项:代码复制好以后,把下面的字符集改为多字节字符集 第 1 节 项目需求 实现一款推箱子游戏,效果如下图所示 , 具体规则: 1. 箱子只能推动而不能拉动…...

YOLOv8中的After Fuse指的是什么?
Fuse是指模型的一些模块进行融合。常见的就是conv和bn层进行融合,在训练的时候模型是存在conv和bn的,但在推理的过程中,模型在初始化的时候会进行模型fuse,把其中的conv和bn进行融合,通过一些数学转换把bn层融合到conv里面,还有一些例如DBB,RepVGG等等模块支持融合的这些在fuse…...

R-FCN: Object Detection via Region-based Fully Convolutional Networks(2016.6)
文章目录 AbstractIntroduction当前最先进目标检测存在的问题针对上述问题,我们提出... Our approachOverviewBackbone architecturePosition-sensitive score maps & Position-sensitive RoI pooling Related WorkExperimentsConclusion 原文链接 源代码 Abstr…...

Linux服务器部署Spring Boot项目的一些shell命令脚本
1.启动jar包的命令(根据jar包数量创建,并指定相对应的jar包) nohup java -server -Xms64m -Xmx128m -jar 项目jar包的名称.jar --spring.profiles.activeprod > 记录jar包的日志.log 2>&1 &可以写在start.sh文件里(…...

Youtube DNN:Deep Neural Networks for YouTube Recommendations
1.介绍 本文主要解决的三个挑战: 大规模的推荐场景,能够支持分布式训练和提供有效率的服务。不断更新的新物料。稀疏的用户行为,包含大量的噪声。 2.推荐系统 文章包含推荐系统的两阶段模型:召回和排序。 召回网络根据用户的历…...

Python 入门基础知识点有哪些?
Python是一种高级的、解释性的、面向对象的、动态类型语言,它在机器学习、数据分析、Web开发、科学计算等领域都有广泛的应用。下面是Python入门基础知识点的详细介绍。 1、变量和数据类型 在Python中,可以使用变量来存储数据。Python的数据类型包括整…...

【每日一题】补档 CF487B. Strip | 数据结构杂烩 -> 单调队列 | 困难
题目内容 原题链接 给定一个长度为 n n n 的数组,将这个数组进行拆分成若干个连续子数组, 使得每个子数组的最大值减去最小值小于等于 s s s , 且每个子数组的长度大于等于 l e n len len 。 问最少可以拆分成多少个连续子数组࿰…...

向量数据库和普通关系型数据库的区别,LAXCUS支持哪种数据库?
这是一位Laxcus用户在后台的提问,贴出来供大家参考: 1. 向量数据库与传统的关系型数据库主要有以下几个区别: 数据类型:向量数据库专门用于存储和查询向量数据,而传统数据库可以存储各种类型的数据,如文本…...

操作系统 --- 存储器管理
一、简答题 1.存储器管理的基本任务,是为多道程序的并发执行提供良好的存储器环境。请问好的存储器环境”应包含哪几个方面? 答: 2.内存保护是否可以完全由软件实现?为什么? 答:内存保护的主要任务是确保每…...

Python selenium无界面headless
视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium Chrome-headless 模式, Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界面的情况下使用 Chrome 浏览器,所以运行效果与 …...