本文为普元云计算架构师宋潇男翻译微服务模式文章系列,独家授权EAII企业架构创新研究院(微信号:eaworld)发布,转载请注明出处,违者必究。
译者自序:
熟悉我的朋友都知道,我很不喜欢翻译东西,因为在两种语言的思维方式之间做频繁切换对我来说是件很痛苦的事情。但是这次不一样,公司和同事的大力支持降低了我的痛苦指数,让我能够坚持把Chris Richardson的微服务模式系列文章翻译完,今天发布第八篇——《第三方注册》。
背景
如采用客户端服务发现模式或者服务器端服务发现模式,各服务实例必须在启动时注册至服务注册表,从而保证其能够被获取,并在关闭时进行注销。
问题
如何在服务注册表内注册和注销服务实例?
需求
各服务实例必须在启动时被注册至服务注册表,并在关闭时进行注销。
崩溃的服务实例必须从服务注册表中注销。
可运行但无法处理请求的服务实例必须从服务注册表中注销。
方案
由第三方注册机制负责各项服务实例在服务注册表中的注册与注销。当该服务实例启动时,其将服务实例注册至服务注册表。而在服务实例关闭时,其将该服务实例从服务注册表中注销。
示例
第三方注册模式的示例包括:
Netflix Prana - 这是一款“边车”类应用,可与非JVM应用共同运行并利用Eureka为该应用注册。
AWS Autoscaling Groups能够自动将EC2实例注册(注销)至Elastic Load Balancer。
Joyent的Container buddy运行在Docker容器当中,作为服务的父进程并将其注册至注册表。
Registrator - 能够将Docker容器注册至多种服务注册表,或者从其注销。
以Kubernetes与Marathon为代表的各类集群框架将服务实例注册至内置/隐式的注册表,或者从其注销。
结果
第三方注册模式的优势在于:
与自注册模式相比,服务代码复杂程度更低,因为其无需实现自动注册。
注册工具可对服务实例执行健康检查,并根据检查结果注册或者注销该实例。
但第三方注册模式也存在着以下弊端:
第三方注册模式可能只了解服务实例的一些表层状态,例如其是否正在运行,因此 无法了解其是否能够处理请求。不过,之前提到的Netflix Prana等注册工具能够通过执行健康检查来判断当前服务实例的可用性。
除非该注册工具属于基础设施的一部分,否则我们需要对其进行安装、配置与维护。另外,因为它是关键系统组件,因此需要保证其具有高度可用性。
相关模式
原文链接:http://microservices.io/patterns/3rd-party-registration.html
若想与作者有更多交流,请添加微信号:cloud_primeton
关于译者:
宋潇男
EAII-企业架构创新研究院 专家委员
现任普元云计算架构师,曾任华为云计算产品技术总监。曾负责国家电网第一代云资源管理平台以及中国银联基于OpenStack的金融云的技术方案、架构设计和技术原型工作。
原著作者
Chris Richardson
世界十大软件架构师之一,《POJOS IN ACTION》一书的作者。他的研究领域包括Spring、Scala、微服务架构设计、NoSQL数据库、分布式数据库、分布式数据管理、事件驱动的应用编程等。
关于EAII
EAII(Enterprise Architecture Innovation Institute)企业架构创新研究院,致力于软件架构创新与实践,加速企业数字化转型。
eaworld项目(微信号:eaworld,长按二维码关注)
eaworld是EAII的官方微信账号。
本周五(10月14日)下午14:30,微课堂持续进行中,等你来看!