掌握 Java 微服务:从基础到实战
在当今的软件开发领域,微服务架构正日益成为构建可扩展、易维护应用的主流选择。本文将深入探讨微服务的发展历程、与传统单体架构的对比,以及微服务在容器上的部署等关键内容。
微服务的发展历程
微服务并非一夜之间出现的概念。Martin Fowler 指出,“微服务”一词于 2011 年 5 月在威尼斯附近的一次软件架构师研讨会上被提出,用于描述许多人近期探索的一种常见架构风格。到了 2012 年 5 月,同一团队确定了“µServices”作为最合适的名称。
企业架构的发展经历了从历史悠久的大型机计算,到客户端 - 服务器架构(2 层到 n 层),再到面向服务的架构(SOA)的演变。从 SOA 到微服务的转变并非由任何行业组织定义的标准,而是许多组织实践的实用方法。前 Netflix 架构师 Adrian Cockcroft 将微服务描述为“细粒度的 SOA,强调小型临时组件”。
微服务与 SOA 有许多共同特征,如都关注服务以及服务之间的解耦。但 SOA 围绕单体应用集成发展,主要通过基于简单对象访问协议(SOAP)的 API 进行交互,因此企业服务总线(ESB)等中间件对 SOA 至关重要。而微服务相对不那么复杂,即使使用消息总线,也仅用于消息传输,不包含任何逻辑。
单体架构概述
在微服务流行之前,开发本地和云应用主要采用单体架构。单体架构允许开发不同的组件,如表示层、应用逻辑、业务逻辑和数据访问对象(DAO),然后将它们打包成企业归档(EAR)/Web 归档(WAR),或存储在单个目录层次结构中(如 Rails、NodeJS 等)。
许多著名的应用,如 Net