天天看点

什么是Microservices Architecture

Microservice Architecture(微服务架构)目前还没有标准的定义,维基百科解释为:微服务是 SOA - Service-oriented architectures(面向服务体系结构)实现方法的一个特殊形式,用以建立灵活的和可独立部署的软件系统。其中作为微服务架构的关键组成部分 - Service(服务)是一些通过网络相互通信以共同完成某一目标的程序。

服务间的交流通信取决于特定的软件需求,但是大多是开发者选择HTTP或REST协议辅助以JSON或Protobuf。 并且,虽然开发者可以自由地选择通信协议,但大多数情况下, 作为一个优秀的整合途径,REST - Representational State Transfer(表述性状态转移)由于其较低的复杂度而被广大开发者采用。

虽然微服务架构目前没有标准定义,但是大部分微服务软件都有共同的特征:

1. 可拆分成多个服务组件。

  • 优点:利于服务的修改和重新部署,而不至于影响整体。
  • 缺点:服务之间的远程通信比较昂贵;当重新为服务组件分配职责时,复杂度增加。

2. 微服务的开发风格基于业务容量和优先度:传统单一整体软件的开发是由分工明确的多个团队完成的,如UI团队、数据库团队、服务器端团队等。而微服务架构利用跨职能的综合性团队,使其基于一个或多个服务来开发产品。

  • 优点:团队对于其开发软件有足够管理权,应对变化反应迅速,利于软件更新。

3. 微服务架构运作方式在一定程度上类似UNIX系统:接收请求,处理请求,反馈响应。

4. 不同于传统单一整体软件,微服务基于多种技术和平台,适合分散治理,同时微服务应用的每一个服务都有唯一的数据库。

  • 优点:一个有用的工具也可以被其他开发者使用。
  • 缺点:数据分散,管理工作相对复杂。

5. 需具备容错能力:当一个服务失效时,其相邻的服务能起到弥补作用。

  • 缺点:增加开发复杂度。

6. 扩展性强,利于不断成长的软件系统。

继续阅读