笔记补录:
spring cloudeureka 是spring cloud netflix 微服务套件的一部分,基于 netflix eureka 做了二次封装,主要负责实现微服务架构中的服务治理功能。
服务治理是微服务架构中必不可少的一部分,阿里开源的 dubbo 框架就是针对服务治理的。服务治理必须要有一个注册中心,除了用 eureka 作为注册中心外,我们还可以使用 consul、etcd、zookeeper 等来作为服务的注册中心。
eureka 由两部分组成:服务端和客户端,服务端就是注册中心,用来接收其它的服务注册,客户端是一个java客户端,用来注册,并可以实现负载均衡等功能。eureka 的搭建和集群请点击查看。
eureka图解如下:
从图中可以看出eureka有三个角色:
eureka rver
:注册中心eureka provider
:服务提供者eureka consumer
:服务消费者注册中心就是管理所有服务的信息和状态,12306 就好比一个注册中心,顾客就好比调用的客户端,当他们需要坐火车时,就会在12306 网站上查询余票,有票就可以椁怎么读音购买,然后获取火车的车次、时间等,最后出发。程序也是一样,当你需要调用某一个服务的时候,你会先去 eureka 中去拉取服务列表,查看你调用的服务在不在其中,在的话就拿到服务地址、端口等信息,然后调用。
注册中心带来的好处就是,不需要知道有多少提供方,你只需要关注注册中心即可,就像顾客不必关心有多少火车在开行,只需要去 12306 网站上看有没有票就可以了。
为什么 eureka 比 zookeeper 更适合作为注册中心呢?主要是因为 eureka 是基于 ap 原则构建的,而 zookeeper 是基于 cp 原则构建的。在分布式系统领域有个著名的 cap 定理,即 c 为数据一致性;a 为服务可用性;p 为服务对网络分区故障的容错性。这三个特性在任何分布式系统中都不能同时满足,最多同时满足两个。zookeeper 有一个 leader,而且在这个 leader 无法使用的时候通过 paxos(zab)算法选举出一个新的 leader。这个 leader 的任务就是保证写数据的时候只向这个 leader 写入,leader 会同步信息到其他节点。通过这个操作就可以保证数据的一致性。
想要保证 ap 就要用 eureka,想要保证 cp 就要用 zookeeper。
dubbo 中大部分都是基于 zookeeper 作为注册中心的。spring cloud 中当然首选 eureka。
eureka rver主要对外提供了三个功能:
服务注册,所有的服务都注册到eureka rver上面来提供注册表,注册表就是所有注册上来服务的一个列表,eureka client在调用服务时,需要获取这个注册表,一般来说,这个注册表会缓存下来,如果缓存失效,则直接获取最新的注册表同步状态,eureka client 通过注册、心跳等机制,和eureka rver同步当前客户端的状态eureka client 主要是来简化每一个服务和eureka rver 之间的交互。eureka client 会自动拉取、更新以及缓存eureka rver 中的信息,这样,即便eureka rver 所有节点都宕机,eureka client 依然能够获取到想要调服务的地址(但是地址可能不准确)。
2.2.1 服务注册
服务提供者将自己注册到服务注册中心(eureka rver),需要注意,所渭的服务提供者,只是一个业务上的划分,本质上他就是一个 eureka client 。当 eureka client 向 eureka rver 注册时,他需要提供自身的一些元数据信息,例如ip地址、端囗、名称、运行状态等等。
2.2.2 服务续约
eureka client 注册到 eureka rver 上之后,事情还没有结束,刚刚开始而已。注册成功后,默认情况下,eureka client 每隔30秒就要向 eureka rver 发送一条心跳消息,来告诉eureka rver 我还在运行。如果 eureka 美轮美奂造句rver 连续90秒有沿有收到eureka client 的续约消息(连续三次没发送),它会认为eureka client已经线了,会将掉线的eureka client从当前的服务注册列表中剔除。
服务续约,有两个相关的属性(一般不建议修改):
2.2.3 服务下线
当 eureka client 下线时,它会主动发送一条消息,告诉eureka rver,我下线了。
2.2.4 获取注册表信息
eureka client 从eureka rver 上获取服务的注册信息,将其缓存在本地。本地客户端在需要调用远程服务时,会从该信息无所谓的意思中查找远程服务所对应的ip地址、端囗等信息。eureka client 上缓存的服务注册信息会定期更新(30秒),如果 eureka rver 返回的注册表信息与本地缓存的注册表信息不同的话,eureka client 会自动处理。
这里,也涉及至两个属性,一个是是否允许获取注册表信息:
eureka client 上缓存的服务注册艾青诗选好词好句信息,定期更新的时间间隔,默认30秒:
背景:用户量比较大或者用户地理位置分布范围很广的项目,一般都会有多个机房。这个时候如果上线springcloud服务的话,我们希望一个机房内的服务优先调用同一个机房内的服务,当同一个机房的服务不可用的时候,再去调用其它机房的服务,以达到减少延时的作用。
概念:region:能够简单理解为地理上的分区。好比亚洲地区,或者华北地区,再或者北京地区等等,没有具体大小的限制,根据项目具体的状况,能够自行划分region。 zone:能够简单理解为 region 内的具体机房,好比说 region 划分为华北地区,而后华北地区有两个机房,就能够在此 region 之下划分出 zone1、zone2 两个 zone eureka 也借用了 region 和 zone 的概念架构
如图所示,有一个 region:华北地区,下面有两个机房,机房a 和机房burl
每一个机房内有一个 eureka rver 集群 和两个服务提供者 rvicea 和 rverb如今假设 rvera 须要调用 rverb 服务,按照就近原则,rvera 会优先调用同一个 zone 内的 rviceb,当 rviceb 不可用时,才会去调用另外一个 zone 内的 rvicebcode服务注册相关:
eureka: client: # 尽可能向同一区域的 eureka 注册,默认为true prefer-same-zone-eureka: true #地区 region: huabei availability-zones: huabei: zone-1,zone-2 rvice-url: zone-1: http://eureka抄日记大全的ip地址:8761/eureka/ zone-2: http://eureka的ip地址:8761/eureka/
当存在多个注册中心时,选择逻辑为cdn
若是 prefer-same-zone-eureka 为 fal,按照 rvice-url 下的 list 取第一个注册中心来注册,并和其维持心跳检测,再也不向list内的其它的注册中心注册和维持心跳。rver只有在第一个注册失败的状况下,才会依次向其它的注册中心注册,总共重试3次,若是3个rvice-url都没有注册成功,则注册失败。blog注册失败后每隔一个心跳时间,会再次尝试。it
若是 prefer-same-zone-eureka 为true,先经过 region 取 availability-zones 内的第一个zone,而后经过这个zone取 rvice-url 下的list,并向list内的第一个注册中心进行注册和维持心跳,再也不向list内的其它的注册中心注册和维持心跳。只有在第一个注册失败的状况下,才会依次向其它的注册中心注册,总共重试3次,若是3个rvice-url都没有注册成功,则注册失败。注册失败后每隔一个心跳时间,会再次尝试。为了保证服务注册到同一个 zone 的注册中心,必定要注意 availability-zones 的顺序,必须把同一 zone 写在最前面
服务消费者和服务提供者分别属于哪一个zone,均是经过 eureka.instance.metadata-map.zone 来断定的。服务消费者会先经过 ribbon 去注册中心拉取一份服务提供者的列表,而后经过 eureka.instance.metadata-map.zone 指定的 zone 进行过滤,过滤以后若是同一个 zone 内的服务提供者有多个实例,则会轮流调用。只有在同一个 zone 内的全部服务提供者都不可用时,才会调用其它zone内的服务提供者。eureka: instance: # 服务和注册中心的心跳间隔时间,默认为30s lea-renewal-interval-in-conds: 30 # 服务和注册中心的心跳超时时间,默认为90s lea-expiration-duration-in-conds: 90 metadata-map: # 当前服务所属的 zone zone: zone1
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-06 01:05:16,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/db268b29a048c058248f0a9cfbbcad56.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Spring Cloud Eureka(全面解析) 大白话.doc
本文 PDF 下载地址:Spring Cloud Eureka(全面解析) 大白话.pdf
留言与评论(共有 0 条评论) |