微服务设计原则第二弹!一文带你彻底吃透,尽情徜徉微服务世界

本文深入探讨微服务设计原则,包括服务拆分、前后端分离、版本控制、围绕业务构建、CAP理论、数据一致性及设计模式。强调服务拆分的适中性、前后端分离的益处、API版本管理和业务驱动的重要性,同时讲解了CAP的权衡选择和数据一致性策略。通过这些原则,有助于构建高效、灵活的微服务系统。
摘要由CSDN通过智能技术生成

昨天咱们整理了微服务架构的一部分设计原则,朋友们反映还不错,今天,咱们继续更新,每天都会让朋友们学到新知识,咱们每天进步一点点!!!

设计原则之服务拆分

拆分粒度不应该过分追求细粒度,要考虑适中,不能过大或过小。按照单一职责原则和康威定律,在业务域、团队和技术上平衡粒度。拆分后的代码应该是易控制、易维护的,业务职责也是明确单一的。

AKF扩展立方体是一个叫AKF公司的技术专家抽象总结的应用扩展的三个维度。理论上按照这三个扩展模式,可以将一个单体系统进行无限扩展。AKF 扩展立方如下图所示。

微服务设计原则第二弹!一文带你彻底吃透,尽情徜徉微服务世界

 

x轴:水平复制,即在负载均衡服务器后增加多个Web服务器。

y轴:功能分解,将不同职能的模块分成不同的服务。从y轴方向扩展,才能将巨型应用分解为一组不同的服务,例如,订单管理中心、商品信息管理中心、库存管理中心等。

z轴:对数据库的扩展,即分库分表(分库是将关系紧密的表放在一台数据库服务器上,分表是因为一张表的数据太多,需要将一张表的数据通过Hash放在不同的数据库服务器上)。

三个维度的扩展对比如下图所示:

微服务设计原则第二弹!一文带你彻底吃透,尽情徜徉微服务世界

 

下面看一下AKF的拆分实践。

  • 拆分应用

x轴:从单体系统或服务,水平克隆出许多系统,通过负载均衡平均分配请求。

y轴:面向服务分割,基于功能或者服务分割,例如,电商网站可以将登录、搜索、下单等服务进行y轴的拆分,每一组服务再进行x轴的扩展。

z轴:面向查找分割,基于用户、请求或者数据分割,例如,可以将不同产品的SKU分到不同的搜索服务,可以将用户哈希到不同的服务等。

  • 拆分数据库

x轴:从单库水平克隆为多个库上读,一个库写,通过数据库的自我复制实现,要允许一定的读写时延。

y轴:根据不同的信息类型分割为不同的数据库,即分库,例如,产品库、用户库等。

z轴: 按照一定算法进行分片, 例如,将搜索按照MapReduce 的原理进行分片,把SKU的数据按照不同的哈希值进行分片存储,每个分片再进行x轴冗余。

要做好微服务的分层:梳理和抽取核心应用、公共应用,作为独立的服务下沉到核心和共能力层,逐渐形成稳定的服务中心,使前端应用能更快速地响应多变的市场需求。

对于服务的拆分,要

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值