服务架构演进
分层架构
分层架构模式(Layered Architecture Pattern)是架构模式中最常见的架构模式之一,也称为 n 层架构模式,分层架构模式中的组件被组织成水平层,每个层在应用程序中执行特定的角色(例如,表示逻辑或业务逻辑)。尽管分层架构模式没有指定模式中必须存在的层的数量和类型,但大多数分层架构都包含四个标准层:表示层、业务层、持久层和数据库层。
分层架构特征:
- 整体敏捷性低
- 部署成本低
- 可测试性高
- 性能低
- 扩展性低
- 开发成本低
事件驱动架构
事件驱动架构模式(Event-Driven Architecture Pattern)是一种流行的分布式异步架构模式,用于生成高度可扩展的应用程序。它还具有很强的适应性,既可用于小型应用程序,也可用于大型、复杂的应用程序。事件驱动架构由高度分离的、单一用途的事件处理组件组成,这些组件异步接收和处理事件。
事件驱动架构模式由两个主要拓扑结构组成,中介者和代理。
事件驱动架构特征:
- 整体敏捷性高
- 部署升本高
- 可测试性低
- 性能高
- 可扩展性高
- 开发成本低
微服务架构
微服务架构模式(Microservices Architecture Pattern)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 (Language-Independent/Language agnostic)的API集相互通信。
最重要概念可能是服务组件的概念。服务组件的粒度可以从单个模块到应用程序的大部分。服务组件包含一个或多个模块(例如 Java 类),这些模块代表单一用途功能(例如,提供特定城市或城镇的天气)或大型业务应用程序的独立部分(例如,股票交易配售或确定汽车保险费率)。设计正确级别的服务组件粒度是微服务架构中最大的挑战之一。
由于主要的应用程序组件被拆分成更小的、单独部署的单元,使用微服务架构模式构建的应用程序通常更健壮,提供更好的可扩展性,并且可以更轻松地支持持续交付。
特征:
- 整体敏捷性高
- 部署成本高
- 可测试性高
- 性能低
- 可扩展性高
- 开发成本高
微服务中最重要的就是每个服务的独立与自主,因此服务与服务之间也不应该有所沟通。倘若真有沟通,也应采用异步沟通的方式来避免紧密的相依性问题。