现代微服务拆分与设计


在设计一个微服务的时候,一般会遵守4个原则

  1. AKF微服务拆分
  2. 前后端分离
  3. 无状态服务
  4. RestFul服务通信

一、AKF扩展立方体

AKF
微服务的拆分原则主要参考立方体中的Y轴,根据不同的业务划分

微服务拆分的要点:

  1. 高内聚,低耦合,每个服务完成具体的功能
  2. 根据团队划分,一个团队负责1-2个服务模块,进行快速的更新迭代

Y轴

Y轴
Y轴扩展将一个庞大的业务拆分成多个具体的服务,前端通过客户端或者PC端通过服务网关的治理请求到不同的服务

X轴

X轴
X轴扩展主要解决系统的容量和可用性问题,通过水平扩展服务,增加机器,采用集群+负载均衡的模式,可以满足在大型互联网架构中的三高问题

Z轴

Z轴
Z轴扩展通常是指基于请求者或用户独特的需求,进行系统划分,并使得划分出来的子系统是相互隔离但又是完整的。

同样拿这个模型举例,当我们的系统为一个大型电商业务架构时,订单管理服务中有一个秒杀场景的服务,由于秒杀的瞬时流量巨大,从而会导致订单管理服务的流量激增,需要承载大量的请求压力,所以我们可以将秒杀服务从里面抽离出来,然后可以按需再次水平扩展,或着再将秒杀服务具体拆分

二、前后端分离

早期未分离(JSP+Servlet)

JSP
早期前后端未分离时一般是采用JSP+Servlet形式,会发现在前端界面中会冗余非常多的后端Java代码,而且如果这套系统是用在PC端中供用户请求,当系统需要部署到APP或着小程序时,则由需要开发多套代码

半分离

半分离
半分离时期,前端通过Ajax/Json与后端进行数据交互,但是当业务非常复杂时,一次渲染可能需要多次请求,而且传递的Json字符串可能十分大,导致用户可能请求十分缓慢

完全分离

完全分离
浏览器不再通过Ajax去请求后端进行渲染,而是:

  1. 浏览器请求服务器端的NodeJS
  2. NodeJS再发起HTTP去请求后端
  3. 后端依然原样输出JSONNodeJS
  4. NodeJS收到JSON后再渲染出HTML页面
  5. NodeJS直接将HTML页面Flush到浏览器

三、无状态服务

Session共享
一个很常见的例子,分布式Session共享问题,用户发起登录请求,负载转发到不同的服务节点上,这些服务节点都是直接去缓存(Redis)拿到对应的用户Session,所以对所有的服务A的节点来说都是无状态的,可以对任意的服务节点进行删除或着扩展

四、RestFul服务通信

RestFul

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值