java技术--服务注册中心

1.在微服务架构中,注册中心是核心的基础服务之一
2.服务治理的实现主要依靠的就是注册中心,用来进行服务的发现与注册
3.什么是注册中心

(1)注册中心可以说是微服务架构中的”通讯录“
      <1>记录了服务和服务地址的映射关系
      <2>在分布式架构中,服务会注册到服务注册中心
      <3>当服务需要调用其它服务时,就到这里找到服务的地址,进行调用

4.为什么需要注册中心

(1)在分布式系统中,不仅仅是需要在注册中心找到服务和服务地址的映射关系  
(2)还需要考虑更多更复杂的问题:
       <1>服务注册后,如何被及时发现
       <2>服务宕机后,如何及时下线
       <3>服务如何有效的水平扩展
       <4>服务发现时,如何进行路由
       <5>服务异常时,如何进行降级
       <6>注册中心如何实现自身的高可用      

5.常见的注册中心

(1)Dubbo中的注册中心
         <1>Dubbo支持多种注册中心的实现,常用的是:Redis,Zookeeper
         <2>以上的实现主要是为了集中存储服务的信息
 (2)SpringCloud中的注册中心
         <1>在SpringCloud中,也是支持多种注册中心的:
              Spring Cloud Netflix Eureka
              Spring Cloud Zookeeper
              Spring Cloud Consul        
         <2>以上三种,最常用的主要是Eureka    

6.注册中心规则

(1)每一个微服务启动的时候,都需要去注册中心注册(eureka或zookeeper)
(2)同类服务注册的服务名必须相同,不同类服务注册的服务名一定不能相同
      <1>订单服务:
      部署5台服务器,那么这5台微服务在注册中心中注册的服务名必须一致,例如ORDER
      <2>商品服务:
      部署4台服务器,那么这4台微服务在注册中心中注册的服务名必须一致,例如GOODS
      <3>订单服务和商品服务注册的服务名一定不能相同,不能同为ORDER或者GOODS

6.Eureka、Zookeeper区别

(1)Eureka是什么      
     <1>作为分布式系统的注册中心,主要作用是用于服务治理
     <2>Eureka使用的是C/S架构:
         2.1. Eureka Server,注册中心
         2.2. Eureka Client,服务消费者和服务提供者
(2)Eureka原理          
     <1>每一个微服务中都有eureka client,用于服务的注册与发现   
         1.1. 服务的注册:把自己注册到eureka server
         1.2.服务的发现:从eureka server获取自己需要的服务列表
     <2>每一个微服务启动的时候,都需要去eureka server注册
         2.1.当A服务需要调用B服务时,需要从eureka服务端获取B服务的服务列表
         2.2.然后把列表缓存到本地
         2.3.根据ribbon的客户端负载均衡规则,从服务列表中取到一个B服务
         2.4.然后去调用此B服务
         2.5.当A服务下次再此调用B服务时,如果发现本地已经存储了B的服务列表
         2.6.就不需要再从eureka服务端获取B服务列表
         2.7.直接根据ribbon的客户端负载均衡规则,从服务列表中取到一个B服务
         2.8.然后去调用B服务
     <3>默认每30秒,就会从eureka服务端获取一次最新的服务列表
     <4>如果某台微服务down机,或者添加了几台机器
         4.1.eureka server会通知订阅他的客户端,并让客户端更新服务列表
         4.2.还会通知其他eureka server更新此信息
     <5>心跳检测,微服务每30秒向eureka server发送心跳
         5.1.eureka server若90s之内都没有收到某个客户端的心跳,则认为此服出了问题
         5.2.会从注册的服务列表中将其删除,并通知订阅它的客户端更新服务列表
         5.3.还会通知其他eureka server更新此信息
      <6>eureka server保护机制
         6.1.如果一段时间内,85%的服务都没有发送心跳,则此server进入保护状态
         6.2.此状态下,可以正常接受注册,可以正常提供查询服务,但是不与其他server同步信息
         6.3.不会通知订阅它的客户端,这样就不会误杀其他微服务
(3)zookeeper原理
     <1>zookeeper也可以作为注册中心,用于服务治理
        1.1.还有其他用途,例如:分布式事务锁等
     <2>每启动一个微服务,就会去zk中注册一个临时子节点
        2.1.5台订单服务在zk中的订单目录下创建的5个临时节点
        2.2.4台商品服务在zk中的商品目录下创建的4个临时接点
     <3>每当有一个服务down机,由于是临时接点,此节点会立即被删除
        3.1.通知订阅该服务的微服务更新服务列表
        3.2.zk上有watch,每当有节点更新,都会通知订阅该服务的微服务更新服务列表
     <4>每当有一个新的微服务注册进来,就会在对应的目录下创建临时子节点 
        4.1.通知订阅该服务的微服务更新服务列表
        4.2.zk上有watch,每当有节点更新,都会通知订阅该服务的微服务更新服务列表
     <5>每个微服务30s向zk获取新的服务列表                    

7.CAP基本概念

(1)分布式系统的三个指标
      <1>Consistency	一致性
      <2>Availability	可用性
      <3>Partition tolerance	分区容错性        
(2)eureka基于AP
(3)zookeeper基于CP
(4)由于作为注册中心可用性的需求要高于一致性,所以eureka要比zookeeper合理一些       
发布了178 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq591009234/article/details/105047036
今日推荐