服务拆分+Eureka
服务拆分--服务远程调用
第一步: 注册RestTemplate
![](https://i-blog.csdnimg.cn/blog_migrate/3d6a5a012454de460ae234e3d259e4c4.png)
第二步:服务远程调用RestTemplate
![](https://i-blog.csdnimg.cn/blog_migrate/df32b0a38ecd483a363ad2e808c4b972.png)
Eureka
提供者与消费者
一个服务可以同时是提供者和消费者。
Eureka原理分析
在Eureka架构中,微服务角色有两类:
EurekaServer:服务端,注册中心
记录服务信息
心跳监控
EurekaClient:客户端
Provider:服务提供者
注册自己的信息到EurekaServer
每隔30秒向EurekaServer拉取服务列表
Consumer:服务消费者
根据服务名称从EurekaServer拉取服务列表
基于服务列表做负载均衡,选中一个微服务后发起远程调用
搭建Eureka服务
第一步:创建项目,引入spring-cloud-starter-netfix-eureka-server的依赖
第二步:编写启动类,添加@EnableEurekaServer注解
第三步:添加application.yml文件,编写下面的配置
server:
port: 10086 # 服务端口
spring:
application:
name: eurekaserver # 服务名
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
服务注册
第一步:引入eureka-client依赖
第二步:在application.yml中配置eureka地址
服务发现
引入eureka-client依赖
在application.yml中配置eureka地址
给RestTemplate添加@LoadBalanced(负载均衡)注解
用服务提供者的服务名称远程调用
Ribbon负载均衡策略
ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。
RoundRobinRule:简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。
AvailabilityFilteringRule:对以下两种服务器进行忽略:
(1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。
(2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数的上限,可以由客户端的 . .ActiveConnectionsLimit属性进行配置。
WeightedResponseTimeRule:为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。
BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器。
RandomRule:随机选择一个可用的服务器。
RetryRule:重试机制的选择逻辑
Ribbon饥饿加载
Ribbon负载均衡规则
规则接口时IRule
默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询
负载均衡自定义方式
代码方式:配置灵活,但修改时需要重新打包发布
配置方式:直观,方便,无需重新打包发布,但无法做全局配置
饥饿加载
开启饥饿加载
指定饥饿加载的微服务名称