小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
Nacos
简介
一个更易于构建云原生应用的动态服务发现(Nacos Discovery)、服务配置(Nacos Config)和服务管理平台。就是一个集成 注册中心 + 配置中心 + 服务管理 平台。
特性
- 服务发现和服务健康监测
- 动态配置服务
- 动态
DNS服务 - 服务及元数据管理
Nacos 注册中心校演变过程
核心功能
服务注册
Nacos Client 会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如:ip地址、端口等信息。Nacos Server接受到注册请求后,就会把这些元数据信息存储到一个双层的内存Map中。
服务心跳
在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s一次心跳。
服务同步
Nacos Server集群之间会互相同步服务实例,用来保证服务信息一致性。
服务发现
服务消费者(Client)再调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存。
服务健康检查
Nacos Service会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将他的healthy属性改为false(客户端服务发现时不会发现),如果某个实例超过30s没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)
注册中心对比
Nacos | Eureka | Consul | CoreDNS | Zookeeper | |
|---|---|---|---|---|---|
| 一致性协议 | CP + AP | AP | CP | 不支持 | CP |
| 健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | 不支持 | Keep Alive |
| 负载均衡策略 | 权重/metadata/Selector | Robin | Fabio | RoundRobin | 不支持 |
| 雪崩保护 | 支持 | 支持 | 不支持 | 不支持 | 不支持 |
| 自动注销实例 | 支持 | 支持 | 支持 | 不支持 | 支持 |
| 访问协议 | HTTP/DNS | HTTP | HTTP/DNS | DNS | TCP |
| 监听支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
| 多数据中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 跨注册中心同步 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
Spring Cloud集成 | 支持 | 支持 | 支持 | 不支持 | 支持 |
Dubbo集成 | 支持 | 不支持 | 支持 | 不支持 | 支持 |
K8S集成 | 支持 | 不支持 | 支持 | 支持 | 不支持 |
CAP:C一致性;A可用性;P分区容错性