微服务的简述

162 阅读2分钟

什么是微服务

微服务是系统或应用程序中的自包含独立组件。每个微服务都应该有明确的作用域和责任,理想情况下,一个微服务只做一件事。它应该是无状态的或有状态的,如果它是有状态的,它应该带有自己的持久层(即数据库),不与其他服务共享。

设计原则

  • 清晰的边界,责任划分
  • 清晰的层级,服务群
  • 拒绝同层的直接调用
  • 二级服务,尽量走消息异步,如果不行,则走同步调用,但是需要留意可熔断的二级服务

系统结构

  • 业务群,直接向C端提供服务,一群业务的聚合
  • 基础业务服务,核心微服务,无状态,分布式,可扩展,边界清晰
  • 基础组件,提供存储,缓存,查询
  • 基础功能/lib封装,提供工具基础服务

微服务边界

我认为微服务边界是没有规则去判断的,但是有些个人看法。

  • 开发运维人员和微服务数量的比例控制,能知道服务拆分的大概粒度
  • 哪个服务拥有该数据,则拥有该feature,数据同步,可考虑消息同步,规避请求循环调用

微服务通信方式

  • front-server,面向C端的业务集合,调用一系列的基础微服务,
  • 帖子服务,因为拥有帖子,所以有责任暴露帖子的状态变化
  • 活动服务,因为需要关心帖子内容,提供查询服务,所以会去订阅帖子变更topic
  • 积分服务,因为需要增加积分,所以会去订阅增加积分所可能会触发的动作

如果出现扣减等动作怎么办呢,可以在front-server中进行同步的扣减。分布式事务,可考虑seata,mq最终一致性等方式解决。

与中台的区别

  • 中台意在为不同渠道的产品提供服务,比如外卖,app,门店等渠道产品
  • 微服务旨在某一具体产品,偏向业务的服务拆分,使得系统不再那么冗余