本站点由 Chris Richardson 编写和维护,他是经典技术著作《POJOS IN ACTION》一书的作者,也是 cloudfoundry.com 最初的创始人。Chris 的研究领域包括 Spring、Scala、微服务架构设计、领域驱动设计、NoSQL 数据库、分布式数据管理、事件驱动的应用编程等。Chris 是一位连续创业者,eventuate.io 是他的最新创业项目,一个微服务应用和数据服务平台。
Chris 定期为企业提供微服务设计培训和实战项目的架构咨询服务。近年来 Chris 多次访问中国,为包括华为、SAP、惠普、东风汽车等大型企业提供微服务架构相关的技术咨询服务。如您希望与 Chris 深入交流,建立合作,请点击下方按钮跟他取得联系。
核心模式
服务拆分
部署模式
需要关注的边界问题
通讯模式
数据管理
安全模式
可测试性
可观测性
UI 模式
全新的微服务应用支撑平台,成功解决微服务架构下分布式数据管理的难题。
加入 微服务架构的 Google 讨论组(需要翻墙)
假设我们正在利用微服务模式构建一套在线商店,并要包含产品细节页面,需要为产品信息用户界面开发出多个版本:
另外,在线商店必须通过REST API发布产品细节,以供第三方应用程序使用。
产品细节UI可以显示出大量产品信息。举例来说,Amazon.com的 POJOs in Action 图书详情页面中会显示:
在使用微服务模式的在线商店中,产品详情数据会分布在多项服务之间,例如:
因此,显示产品详情的代码需要从这些服务中获取信息。
微服务架构的应用客户端如何访问各项服务?
使用 API 网关作为全部客户端的单一入口点。该 API 网关通过以下两种方式之一处理请求。部分请求会被直接代理/路由至对应的服务,另一部分请求则需要接入多项服务。
相比提供满足所有需求的API,API网关可以针对不同客户端提供出不同的API。举例来说,Netflix API 网关运行的是客户端特定适配代码,这种代码能够为各客户端提供最符合其需求的API。
API网关还能够实现安全防护,例如验证当前客户端是否有权执行该请求。
API网关有以下优势:
API网关模式也有一些弊端:
问题:
为了避免重复翻译,本文根据中国普元公司宋潇文先生的译文整理修订,在此向宋潇文先生表示感谢!