分布式系统如何寻址

目前业界有很多可供你来选择的注册中心组件,比如说老派的 ZooKeeper,Kubernetes使用的 ETCD,阿里的微服务注册中心 Nacos,Spring Cloud 的 Eureka 等等。

这些注册中心的基本功能油有两点特征:
其一是提供了服务地址的存储;
其二是当存储内容发生变化时,可以将变更的内容推送给客户端。

分布式系统如何寻址_第1张图片

客户端会与注册中心建立连接,并且告诉注册中心,它对哪一组服务感兴趣;
服务端向注册中心注册服务后,注册中心会将最新的服务注册信息通知给客户端;
客户端拿到服务端的地址之后就可以向服务端发起调用请求了。
从这个过程中可以看出,有了注册中心之后,服务节点的增加和减少对于客户端就是透明
的。这样,除了可以实现不重启客户端,就能动态地变更服务节点以外,还可以实现优雅关闭的功能。
优雅关闭是你在系统研发过程中,必须要考虑的问题。因为如果暴力地停止服务,那么已经发送给服务端的请求,来不及处理服务就被杀掉了,就会造成这部分请求失败,服务就会有波动。所以,服务在退出的时候,都需要先停掉流量,再停止服务,这样服务的关闭才会更平滑,比如说,消息队列处理器就是要将所有,已经从消息队列中读出的消息,处理完之后才能退出。

你可能感兴趣的:(java,开发语言)