微服务架构是一种以小型服务集合
来创建服务端应用的方法。每个服务在独立进
程中运行,通过通信协议(如HTTP/HTTPS、
WebSockets或AMQP)彼此通信。每个微服
务负责实现一个特定的端到端领域,或有着
确定边界的业务逻辑,并且每个微服务必须能
独立开发和部署。最后,每个微服务应该拥有
自己特定的领域数据模型和领域逻辑(自治和 去中心化的数据管理),它们是基于不同数据
存储技术(SQL、NoSQL)和不同编程语言
实现的。
微服务到底能有多小?在开发微服务时,大小
不应该是重点,重点是要创建低耦合的服务,
以便能独立地开发、部署和扩展每个服务。当
然在确定和设计微服务时,只要它们之间没有
太多直接依赖,就应该使它们尽可能地小。比
大小更重要的还有必要的内部一致性和对其他
服务的依赖。
为什么需要微服务架构?简而言之,它提供了
长期的敏捷性。微服务可以基于多个独立部署
的服务来创建应用,这些服务通常拥有细粒度
和独立生命周期等特征,这使得复杂的、大型
的以及高度扩展的系统拥有更好的可维护性。
微服务的另一个优势在于能独立进行横向扩展
。相对于单体应用必须作为整体来扩展,微服
务可以只扩展特定部分,这样就能只扩展真正
需要更多处理资源或网络带宽的功能,而不是
一起将本不需要扩展的其他功能区域也进行扩 。因为使用的硬件更少,这也意味着可以
节约成本。
对于复杂的大型可扩展应用
程序,我们可以只变更其中的特定区域,所以
微服务方式可以让我们对每个微服务进行敏捷
变更和快速迭代。
通过设计基于微服务的细粒度应用架构,即可
顺利采用持续集成和持续部署实践,并能加速
新功能的发布。细粒度构成的应用也使得独立
地运行和测试微服务成为可能,并且通过维护
清晰的交互协议实现自主进化。只要不变更接
口和协议,就能在任何一个微服务里修改内部
实现或添加新功能,而不会破坏其他微服务。