本站点由 Chris Richardson 编写和维护,他是经典技术著作《POJOS IN ACTION》一书的作者,也是 cloudfoundry.com 最初的创始人。Chris 的研究领域包括 Spring、Scala、微服务架构设计、领域驱动设计、NoSQL 数据库、分布式数据管理、事件驱动的应用编程等。Chris 是一位连续创业者,eventuate.io 是他的最新创业项目,一个微服务应用和数据服务平台。
Chris 定期为企业提供微服务设计培训和实战项目的架构咨询服务。近年来 Chris 多次访问中国,为包括华为、SAP、惠普、东风汽车等大型企业提供微服务架构相关的技术咨询服务。如您希望与 Chris 深入交流,建立合作,请点击下方按钮跟他取得联系。
核心模式
服务拆分
部署模式
需要关注的边界问题
通讯模式
数据管理
安全模式
可测试性
可观测性
UI 模式
全新的微服务应用支撑平台,成功解决微服务架构下分布式数据管理的难题。
加入 微服务架构的 Google 讨论组(需要翻墙)
如采用客户端服务发现模式或者服务器端服务发现模式,各服务实例必须在启动时注册至服务注册表,从而保证其能够被获取,并在关闭时进行注销。
如何在服务注册表内注册和注销服务实例?
一项服务实例必须可以自动注册到服务注册表中。在启动时,该服务实例将自身(主机与IP地址)注册至服务注册表,使自身可被发现。客户端必须定期更新其注册信息,确保注册表获悉其仍处于运行状态。在关闭时,服务实例从服务注册表中自动注销。
这一流程通常由微服务基底框架实现。
Netflix Eureka 即是服务注册表的一个例子。它为服务实现自动注册(注销)提供一个注册API及一套客户端库。
在使用 Apache Zookeeper 作为服务注册表时,每项服务对应一个特定的Zookeeper znode。在启动时,各服务实例会在该服务的znode下创建一个具有短暂存活时间的子znode。该子znode中包含该实例的位置信息。服务客户端通过检索该服务的子znode即可判断对应服务实例的可用性。如果服务实例终止但未移除对应的子znode,Zookeeper会在该子znode的存活时间超时后将其移除。
自注册模式的优势在于:
但自注册模式也存在着以下弊端:
为了避免重复翻译,本文根据中国普元公司宋潇文先生的译文整理修订,在此向宋潇文先生表示感谢!