背景
因为注册中心是微服务架构中最核心的基础服务之一,在选择注册中心方案之前,我们先了解以下什么是微服务架构。
在Monolithic架构中我们经常会面临以下问题:
-
系统间以api的形式互相访问,导致系统之间紧密的耦合在一起难以维护
-
不同的业务需要相同的技术栈,无法快速应用新技术
-
系统任何修改都必须整个系统一起部署,维护成本高
-
系统负载增加时候,难以水平拓展
-
一个问题影响全局
为了解决这些问题,微服务架构就产生了,微服务是一种架构风格,也就说将复杂的应用拆分成多个独立的服务,服务之间通过松耦合的方式调用。在松耦合方式中注册中心扮演了重要的角色。注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。
目前经常被用到作为注册中心的有Zookeeper和Eureka,那么此时我们就会纠结如何去选择这两个注册中心,下面我们来系统的学习这两种注册中心的原理和优劣势,这样才能在架构搭建中合理的选择注册中心。
注册中心概念
注册中心涉及三大角色
● 服务提供者
● 服务消费者
● 注册中心
他们之间的关系主要是
● 各个服务启动的时候,将自己网络地址等信息记录到注册中心
● 服务消费者从注册中心查询服务提供者提供的服务,并通过对应的地址调用服务提供者的api
● 微服务与注册中心使用心跳机制通信,如果注册中心与微服务长时间无法通信,就会注销该服务实例
注册中心架构图:
注册中心的主要作用
在微服务架构中,注册中心主要起到了协调者的作用,主要有以下功能
1. 服务发现
服务注册/反注册:保存服务提供者和服务调用者的信息
服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能
服务路由(可选):具有筛选整合服务提供者的能力。
2. 服务配置
配置订阅:服务提供者和服务调用者订阅微服务相关的配置
配置下发:主动将配置推送给服务提供者和服务调用者
3. 服务健康检测
检测服务提供者的健康情况
Zookeeper和Eureka如何选择
在分布式架构中往往伴随CAP的理论。因为分布式的架构,不再使用传统的单机架构,多机为了提供可靠服务所以需要冗余数据因而会存在分区容忍性P。
冗余数据的同时会在复制数据的同时伴随着可用性A 和强一致性C的问题。是选择停止可用性达到强一致性还是保留可用性选择最终一致性。通常选择后者。其中 Zookeeper 和 Eureka分别是注册中心CP AP 的两种的实践。
Zookeeper概述
ZooKeeper主要为大型分布式计算提供开源的分布式配置服务、同步服务和