1. 经典文档
1、什么是服务治理? - call back : 经典
2、服务治理脑图 - 统揽全局
2. 服务治理的三大门派
Eureka | Consul | nacos | |
---|---|---|---|
一致性 | 弱一致性(AP) | 弱一致性(AP) | AP/CP |
性能 | 快 | 慢 | 快 |
网络协议 | http | http、dns | http、dns、udp |
应用广度 | 目前主流 | 目前非主流 | 稳中有升,尚待观察 |
consul性能慢原因:它是基于raft协议leader选举,正因为需要选举leader,在选举的过程中服务是不可用的 |
3. eureka初识
3.1 eureka的服务流程
- eureka分为:服务端/注册端(Eureka Server/registry)和客户端(Eureka Client)
- Eureka Server/Registry 是供服务注册的服务器,所有的客户端都会注册到服务端上
- Eureka Client 同来简化与服务器的交互,作为轮训负载均衡器,并提供服务的故障切换支持(所以eureak是客户端的发现机制)
- Eureka Server 作为服务注册的服务器,它作为注册中心
- 而系统中的其它服务呢,使用的 Eureka Client 连接到 Eureka Server,并维持心跳链接,这样就能监控系统中各个微服务是否正常运行
3.2 eureka的服务调用流程
- eureka client、eureka consumer,他俩都是客户端,工作的流程是
- 它们都将自己注册到server上,并提供自己的ip和port
然后client调用consumer需要找到他的port和ip发起请求远程调用
3.3 优秀的参考文章
注册中心的基本逻辑 - 等待戈多 —> region zone url
- 服务注册知多少?- 完美文档
-
3.4 注册中心页面详解
Uptime:注册中心从启动到运行至今经过的时间
- Lease expiration enabled:是否启用租约过期。false代表着开启
- 例如“假设服务自保处于关闭状态,a服务的租约过期,没有及时进行服务续约,注册中心可以利用服务剔除,把服务下线掉”
- Renews threshold:每分钟最少的服务续约数,例如“后面的值是3,每分钟最少3个服务和我续约”
- Renews (last min):过去一分钟,也就是最后一分钟的续约数量
- DS Replicas:注册中心高可用的时候,显示其它注册中心的信息
Instances currently registered with Eureka:当前注册到该注册中心的实例
4. 注册中心的核心保障
4.1 服务注册
客户端注册到注册中心后会提供给注册中心哪些信息呢?
- 提供的服务是多少呀 - 接口地址
- Ip + port
- 服务状态,通常完成注册之后的状态是up
- 客户端在等待服务端入陆续注册的时候默默做的动作
- 服务端会定时的向客户端发送请求,如果没有的到响应(心跳监测),如果长时间不回复我,那么服务端会将他们从注册中心提出(服务剔除)
- 注册信息同步:多个注册中心分别接受不同的客户端注册,那么他们就抽空做客户端的分享,让大家同时用于所有的注册客户端
- 茫茫网络世界,客户端如何找到注册中心呢?
- 当然是程序员事先告诉的,它有三要素
- region:代表地理上的分区,
- zone:则是这个分区下的机房
- url:大多数情况下我们的配置中心只存在一个机房,这时配置URL就好了(比如http://localhost:20000/eureka/),这是注册中心的IP地址,同时Eureka会为我们指定一个默认的Region和Zone
- 例如我们在上海机房的注册中心
- Region = east_chain,zone = sh
- 当然是程序员事先告诉的,它有三要素
EnableDiscoveryClient & EnableEurekaClient 的区别?
- 因为Eureka支持多种注册中心
- EnableDiscoveryClient注解在使用任何Eureka支持的注册中心时都可以使用,是一个通用的注解
- 而EnableEurekaClient注解只有在使用Eureka作为注册中心时才可以使用,是Eureka注册中心的专用注解,在使用其他注册中心的时候不管用.
- 所以,在使用Eureka作为注册中心的时候,推荐使用EnableEurekaClient注解,在使用其他注册中心的时候,使用EnableDiscoveryClient注解
- EnableDiscoveryClient是spring cloud封装的标准服务发现接口,EnableEurekaClient是netflix封装的接口,如果以后要替换底层服务发现组件的话,强烈建议使用EnableDiscoveryClient,这样你的代码就和底层组件无关了。
4.2 服务发现
4.2.1 服务端发现与客户端发现
Tips:注意查看Ribbon章节的,服务端注册均衡和客户端负载均衡(两者十分相似,可以理解为一样的)
客户端- eureka
- eureka是基于客户端的服务发现,服务调用者,从注册中心获取可用服务列表,客户端再通过负载均衡确认服务提供者具体是哪一个
- 服务端 - nginx
- 客户端会转发到一个中间代理层,他决定负载均衡的策略,并且发起调用
核心参考本文章:https://class.imooc.com/lesson/1239#mid=29696
4.2.2 eureka的客户端发现
作为服务调用方,我在这里选择对应的服务,说明客户端有服务列表的信息4.3 心跳检测
4.3.1 参考文章
- 服务续约:https://class.imooc.com/lesson/1239#mid=29698
4.4 服务续约
4.5 服务剔除
4.6 服务自保
4.7 服务下线
4.8 注册中心高可用