站务联系

微服务架构中的服务发现(Service Discovery)(2)

发布时间:2021-05-06   来源:网络整理    
字号:

服务器端发觉方式同样有一些特点跟劣势。这种方式最大的特点是,服务发觉的细节从客户端抽离下来了。客户端只用发送恳求至负载均衡器即可。这样就无需为客户端服务使用的每种编程语言跟框架实现服务发觉逻辑。此外,如上所述,某些布署环境已然免费提供了该功能。当然,这种方式还有一些劣势,除非负载均衡器是由布署环境提供,它还须要你搭建跟管理另外一个高可用系统组件。

服务注册表

服务注册表是服务发觉的关键部份,它是一个包含服务例子网路地址信息的数据库。服务注册表还要具备高可用性跟实时更新性。客户端可以缓存从注册表荣获的服务例子网路地址信息。但信息最终会过时,客户端也将难以发觉服务例子。因此,服务注册表还要由一组服务构成集群,集群之间通过复制合同维持一致性。

前面早已提及,Netflix Eureka是一个挺好的服务注册表样例。它提供了基于REST API方式的服务例子注册跟查询功能。一个服务例子可以通过POST恳求将自己的网路地址进行注册。每隔30秒,通过PUT恳求刷新它的注册信息。可以通过Http的DELETE恳求或超时模式来删掉例子的注册信息。客户端也可以使用Http的GET恳求来检索注册的服务例子。

Netflix通过在每位Amazon EC2的可用区域中运行一台或多台Eureka服务器来实现高可用性。运行在EC2例子上的每位Eureka服务器都有一个弹性IP地址。DNS TEXT适于储存Eureka群集配置,该配置是可用区域至Eureka服务器网路位置列表的映射。当Eureka服务器启动时,查询DNS来检索Eureka群集配置,定位其他服务,并为自己分配一个未使用的弹性IP地址。

服务注册表的其他组件:

微服务架构中的服务发现(Service Discovery)

微服务架构中的服务发现(Service Discovery)

开源项目Registrator便是一个样例,它可以基于Docker容器手动注册跟吊销服务例子。Registrator支持多种注册表,包括etcd跟Consul。

NetflixOSS Prana项目是另外一个样例,它主要适于非JVM语言撰写的服务,是与服务例子并行的Sidecar应用程序。Prana基于Netflix Eureka注册跟吊销服务例子。

微服务架构中的服务发现(Service Discovery)

图说天下

  • 2页:
  • 上一页
  • 1
  • 2
  • 下一页
  • ×
    二维码生成