本站点由 Chris Richardson 编写和维护,他是经典技术著作《POJOS IN ACTION》一书的作者,也是 cloudfoundry.com 最初的创始人。Chris 的研究领域包括 Spring、Scala、微服务架构设计、领域驱动设计、NoSQL 数据库、分布式数据管理、事件驱动的应用编程等。Chris 是一位连续创业者,eventuate.io 是他的最新创业项目,一个微服务应用和数据服务平台。
Chris 定期为企业提供微服务设计培训和实战项目的架构咨询服务。近年来 Chris 多次访问中国,为包括华为、SAP、惠普、东风汽车等大型企业提供微服务架构相关的技术咨询服务。如您希望与 Chris 深入交流,建立合作,请点击下方按钮跟他取得联系。
核心模式
服务拆分
部署模式
需要关注的边界问题
通讯模式
数据管理
安全模式
可测试性
可观测性
UI 模式
全新的微服务应用支撑平台,成功解决微服务架构下分布式数据管理的难题。
加入 微服务架构的 Google 讨论组(需要翻墙)
一项服务的客户端需要使用客户端服务发现或者服务器端服务发现机制,从而获取给其发送请求的服务实例的位置。
服务的客户端(在客户端服务发现机制中)或者服务路由(在服务器端服务发现机制中)如何获取可用服务实例的信息?
建立一套服务注册表,即一个包括服务、服务的实例和其位置信息的数据库。各服务实例需要在启动时注册至该服务注册表,并在关闭时进行注销。该服务的客户端以及/或者路由器通过查询此服务注册表以找到可用的服务实例。
服务注册表的例子(或者经常作为服务注册表使用的技术)包括:
Kubernetes、Marathon 以及 AWS ELB 等系统中存在一套隐式的服务注册表。
服务注册表模式的优势包括:
服务注册表模式的弊端包括:
开发者需要决定各服务实例如何注册至该服务注册表。有两个选项:
服务注册表的客户端需要获取服务注册表实例的位置。另外,各服务注册表实例也必须被部署在固定且已知的IP地址上。各客户端则利用这些IP地址进行配置。
举例来说,Netflix Eureka服务实例通常会根据弹性IP地址进行部署。其弹性IP地址可用资源池则利用属性文件或者通过DNS进行配置。当一个Eureka实例开始启动时,它会查询配置,寻找可用的弹性IP地址。Eureka客户端也需要通过该弹性IP地址池进行配置。
为了避免重复翻译,本文根据中国普元公司宋潇文先生的译文整理修订,在此向宋潇文先生表示感谢!