本站点由 Chris Richardson 编写和维护,他是经典技术著作《POJOS IN ACTION》一书的作者,也是 cloudfoundry.com 最初的创始人。Chris 的研究领域包括 Spring、Scala、微服务架构设计、领域驱动设计、NoSQL 数据库、分布式数据管理、事件驱动的应用编程等。Chris 是一位连续创业者,eventuate.io 是他的最新创业项目,一个微服务应用和数据服务平台。
Chris 定期为企业提供微服务设计培训和实战项目的架构咨询服务。近年来 Chris 多次访问中国,为包括华为、SAP、惠普、东风汽车等大型企业提供微服务架构相关的技术咨询服务。如您希望与 Chris 深入交流,建立合作,请点击下方按钮跟他取得联系。
核心模式
服务拆分
部署模式
需要关注的边界问题
通讯模式
数据管理
安全模式
可测试性
可观测性
UI 模式
全新的微服务应用支撑平台,成功解决微服务架构下分布式数据管理的难题。
加入 微服务架构的 Google 讨论组(需要翻墙)
在开发服务端企业应用时,应用需要支持各种不同类型的客户端,比如桌面浏览器、移动浏览器以及原生移动应用。应用还需要向第三方提供可访问的API,并通过Web Service或者消息代理与其它应用实现集成。应用通过执行业务逻辑、访问数据库、与其它系统交换信息、并返回一条HTML/JSON/XML响应,来处理请求(HTTP请求与消息)。
应用采用多层架构或者六角架构,主要由以下几类不同组件构成:
不同逻辑组件分别响应应用中的不同功能模块。
应用的部署架构是什么?
使用单体架构构建应用。例如:
假设需要构建一款电子商务应用程序,使其能够接收来自客户的订单、验证库存信息与可用信用额度,而后进行发货。该应用程序会包含多个组件,其中StoreFrontUI负责实现用户界面,而其它后端服务则分别负责检查信用额度、维护库存信息以及发送订单。
应用被当作一个单体进行部署。例如:一个 Java Web 应用仅包含一个运行在 Tomcat 之类的 Web 容器上 WAR 文件。一个 Rails 应用由单一目录层级构成,该目录层级的部署通过在 Apache/Nginx 上使用 Phusion Passenger,或者在 Tomcat 上使用 JRuby 得以实现。为了提高扩展性和可用性,你可以在负载均衡器之后运行此应用的多个实例。
这类解决方案拥有以下优势:
然而,一旦应用变大、团队扩大,这种方案的弊端将会变得愈发明显:
微服务架构 是一种能够解决单体架构各种局限的备选模式。
知名的互联网服务商最初皆采用单体架构,包括 Netflix、Amazon.com 以及 eBay 等等。作者开发的大多数 Web 应用也是用单体架构。
无
为了避免重复翻译,本文根据中国普元公司宋潇文先生的译文整理修订,在此向宋潇文先生表示感谢!