注册中心
1.概述
-
注册中心是微服务架构中最核心的基础服务之一
-
注册中心可以看做是微服务架构中的通信中心,当一个服务去请求另一个服务时,通过注册中心可以获取该服务的状态,地址等核心信息
-
服务注册的三大角色:服务提供者、服务消费者、注册中心
2.基础流程
-
服务启动时,将自身的网络地址等信息注册到注册中心,注册中心记录服务注册数据
-
服务消费者从注册中心获取服务提供者的地址,并通过地址和基于特定的方式调用服务提供者的接口
3.核心功能
-
服务发现
-
服务启动后,自动注册到注册中心,提供自身的ip地址、端口、运行状况指标的uri、主页地址等信息
-
-
服务记录
-
记录注册中心的服务的信息,例如服务名称、IP地址、端口等
-
-
动态管理服务
-
注册中心基于特定的机制时测试已注册的服务
-
心跳机制
-
默认每30秒发送一次心跳来进行服务续约
-
90秒内没有收到心跳,service会将client实例从注册列表中删除
-
-
4.基础组件对比
-
Zookeeper
-
概述
-
经典的服务注册中心中间件
-
java体系中,大部分的集群环境都是依赖zookeeper管理服务的各个节点
-
-
组件特点
-
数据结构上高度抽象为K-V格式
-
支持节点短暂存在
-
-
Eureka
-
概述
-
Netflix开发的服务发现框架
-
基于REST的服务
-
用于服务注册、管理、负载均衡、服务故障转移
-
-
组件特点
-
包含两个组件:EurekaServer 和 EurekaClient
-
EurekaServer提供注册服务,服务节点的信息可以在界面中直观的看到
-
允许在注册服务时,自定义实现检查自身状态的是够健康的方法
-
EurekaClient简化与EurekaServer的交互,同时也是一个内置的、使用轮询负载算法的负载均衡器
-
-
Consule
-
概述
-
用于服务发现和配置的工具
-
分布式的,高度可用的,并且具有极高的可伸缩性
-
提供了功能齐全的控制面板
-
主要特点:服务发现、健康检查、键值存储、安全服务通信、多数据中心、ServiceMesh
-
-
组件特点
-
提供多个数据中心支持,基于Fabio做负载均衡
-
八卦池,其中包含给定数据中心的所有节点,目的:
-
不需要为客户端配置服务器的地址
-
检测节点故障的工作不是放在服务器上,而是分布式的,比心跳方案更有扩展性
-
被用作消息传递层,用于在诸如领导选举等重要时间发生时进行通知
-
-
-
Nacos
-
概述
-
用于微服务的发现、配置、管理
-
更敏捷、容易地构建、交付、管理微服务平台
-
-
组件特点
-
数据模型:服务 - 集群 - 实例
-
提供数据逻辑隔离模型,用户账号可以新建多个命名空间,每个命名空间对应一个客户端实例,这个命名空间对应的注册中心物理集群是可以根据规则进行路由的,这样可以让注册中心内部的升级和迁移对用户是无感知的
-
5.组件选择
-
推荐nacos
-
社区活跃
-
大规模业务验证
-
不但可以作为微服务注册中心,也支持RPC框架Dubbo的注册中心
-
有完善的中文文档
-