一 概述
为了适应企业的业务发展,提高软件研发的生产力,降低软件研发的成本,软件架构也作了升级和优化,将一个独立的系统拆分成若干个小的服务,每个小服务运行在不同的进程中,服务与服务之间采用RESTful,RPC等协议传输数据,每个服务所拥有的功能具有独立性强的特点,这样的设计就实现了单个服务的高内聚,服务于服务之间的低耦合效果,这些小服务就是微服务,基于这种方法设计的系统架构即微服务架构。
二 微服务架构中服务发现的实现
如图所示,服务实例本身并不记录服务生产方的网络地址,所有服务实例内部都会包含一个服务发现客户端。
- 在每个服务启动时会向服务发现中心上报自己的网络位置。这样,服务发现中心内部会形成一个服务注册表,服务注册表是服务发现的核心部分,是包含所有服务实例的网络地址的数据库。
- 服务发现客户端会定期从服务发现中心同步服务注册表,并缓存在客户端。
- 当需要对某服务进行请求时,服务实例通过该注册表,定位服务网络地址。若目标服务存在多个网络地址,则使用负载均衡算法从多个服务实例种族观念选择出一个,然后发出请求。
总而言之,在微服务环境中,由于服务运行实例的网络地址是不断变化的,服务实例的数量也是动态变化的,因此无法使用固定的配置文件来记录服务提供方的网络地址,必须使用动态的服务发现机制用于实现服务之间的相互感知。各个服务实例会上报自己的网络地址,这样服务中心就形成了一个完整的服务注册表,各服务实例会通过服务发现中心来获取访问目标服务的网络地址,从而实现服务发现的机制。
三 Nacos的特性
- 服务发现与服务健康检查:Nacos使服务更容易注册,并通过DNS或者HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或实例发送请求。
- 动态配置管理:动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序,这使配置的更改更加高效和灵活。
- 动态DNS服务:Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端点,让三方应用方便的查阅及时发现。
- 服务和元数据管理:Nacos能够从服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述,生命周期,服务的静态依赖分析,服务的健康分析,服务的流量管理,路由及安全策略。