1 SOA(面向服务架构)
面向服务架构 SOA 思想概念的提出已不是什么新鲜事,大概在10年前就有不少相关书籍介绍过。当时 Java 企业应用领域 J2EE 依然是主流,应用程序被部署在庞大统一的符合 J2EE 规范的容器中运行,在单一进程中提供所有的功能。 而 SOA 提出的一些架构原则,在当时看来无疑是革命性的。 由于业已存在的大量单一庞大的应用,按照 SOA 的思想和架构原则来改造无疑相当于推翻重新开发一遍,在成本上很难接受。 因此早期的 SOA 通常和另外一个术语关联在一起——ESB(企业服务总线)。 当时在 SOA 的实施思路上无一例外的选择了 ESB 模式来整合集成大量单一庞大的应用,以保护企业前期投入成本。因此 ESB 其实是 SOA 特定历史阶段的一种实现方式。
然而,愿望总是美好的,现实却要残酷的多。过去这些年我们看到了很多实施 ESB 搞砸了的项目,投入几百万,产出几乎为 0,因此 SOA 这个概念也蒙上了不详的标签。 近几年流行起来的服务化架构,其拥护者开始拒绝使用包裹着失败阴影的 SOA 这个标签,而称其为微服务架构(Microservices Architecture Style)。但事实上 微服务架构依然是 SOA 架构思想的一种实现。
2 MicroService(微服务架构)
采用一组服务的方式来构建一个应用,服务独立部署在不同的进程中,不同服务通过一些轻量级交互机制来通信,例如 RPC、HTTP 等,服务可独立扩展伸缩,每个服务定义了明确的边界,不同的服务甚至可以采用不同的编程语言来实现,由独立的团队来维护。
3 微服务架构特征
1) 通过微服务实现组件化
2) DevOps
3) 细粒度,独立部署
4) 去中心化治理
5) 基础实施
4 微服务不足
1) 复杂性
2) DevOps开发运营要求较高
3) 关联业务