什么是服务

本人博客:落雪
微服务体系结构(有时也称微服务)是一种架构风格,它将应用根据业务逻辑拆分成一系列功能不同并且相互协同合作的一系列服务,这些服务共同组成一个完成的应用。这使持续交付/部署一个大而复杂的应用成为可能。微服务具有更好的伸缩性、容错性,实验新技术和迭代新的技术栈也更加方便。

在使用微服务时,最关键的体系结构决策是识别和设计服务,并确定这些服务之间如何协作,相比之下,技术相关的问题,例如docker、k8s等就显得无足轻重了。

服务的关键属性

一个服务具有以下关键属性:

  • 高可维护性和高可测试性-支持快速频繁地开发和部署
  • 与其他服务轻耦合-服务的ower在大部分时间应该能独立工作在自己的服务上,不受其他服务的影响,也不影响其他服务
  • 可独立部署-团队能够独立部署自己的服务,无需和其他团队进行协调
  • 小团队开发-通过避免大团队的高交流成本来获得高生产力

服务的结构

下图展示了一个六边形的服务结构,服务的核心是业务逻辑,业务逻辑被与之相关联的服务和应用所包围。

服务结构

具体来看一下每个结构:

服务具有API

从使用者的角度来看,服务唯一重要的是它的API。服务API由操作和发布的事件组成。

操作

有两种类型的操作:命令和查询。命令是一种改变数据的操作。查询是检索数据的命令

使用同步协议(如REST或gRPC)和异步消息传递的组合来调用服务操作。在为外部客户端(如移动应用程序和单页面应用程序)实现api时,同步协议(尤其是REST)特别有用。

事件

服务通常发布事件。事件通常是DDD域事件,由聚合在创建、更新或删除时发出。服务将事件发布到消息代理实现的消息通道。例如,Eventuate Tram框架支持发布事件到Apache Kafka, ActiveMQ和RabbitMQ。

业务逻辑

服务的核心和存在的原因。它实现API的操作和发布事件。业务逻辑调用其他服务的操作并订阅它们的事件。它将数据保存在服务的数据库中。

服务可能和其他服务协作

当服务协作时,是通过api而不是数据库。一个服务可以调用另一个服务的操作,服务还可以订阅另一个服务发布的事件。

服务的数据库是私有的

一个服务通常有一个数据库,用于存储它的数据,有时也存储从其他服务复制的数据,为了确保松耦合,服务共享数据库表通常不是一个好主意。相反,服务只能通过它们的api进行通信。

posted @ 2020-11-29 21:43  Aurora-Twinkle  阅读(444)  评论(0编辑  收藏  举报