架构师进阶实战随堂笔记五

作者 : 开心源码 本文共1796个字,预计阅读时间需要5分钟 发布时间: 2022-05-12 共187人阅读

场景五:微服务中的服务划分问题 微服务拆分准则、方法与最佳实践

目录

image.png

应该怎么去拆分服务呢?

基本准则:

  • 低耦合,高内聚。单一准则:一个服务只负责一件事情,可以独立部署。
  • 最小知识准则,一个组件或者者是对象不应该知道其余组件或者者对象的内部实现细节
  • 不允许循环依赖,不允许从低层向高层依赖。不能让稳固的服务依赖一个不稳固的服务
  • 根据业务发展情况不同,公司所处阶段不同,服务拆分的粒度也不相同。粒度越小,维护成本越大。
    image.png

常见的拆分方法

  • 根据业务进行建模,依据业务领域的边界划分,这也是当前微服务社区十分推崇的领域驱动设计(Domain Driven Design,简称DDD)方法;清楚各个服务的职责边界是什么,比方:购物车、订单管理、单品页、实时库存等等;最常使用的方式。
  • 按照系统功能划分,比方:接入子系统、消息推送子系统、用户端监控管理子系统等等
  • 根据资源使用类型划分,这种方式主要使用在对硬件资源需求很高、或者对特定硬件类型存在依赖的大型服务系统,例如系统的某些功能非常消耗CPU。此时可以依据对不同资源的需求作为边界进行的划分,以最大化运行效率
  • 根据边界划分,直接从数据表结构活数据源着手,依据数据归属关系界定服务。这种划分方法简单粗暴

    image.png

服务划分的最佳实践-不要从数据库开始建模

  • 传统软件开发中,数据模型被认为是整个系统的核心,架构评审会花很多时间来探讨系统庞大的ER图(实体关系图)设计
  • 微服务架构设计时,服务划分时采用ER图进行建模甚至是十分有害的。

危害

  • ER图设计时使用的是关系型说的数据库,设计出来的表结构冗余度很低,且使用非常灵活,但正是这种灵活性往往导致系统中多个业务逻辑表出现错综缠绕的关系,从而使剥离单独服务进行异构设计变得困难;
  • ER图还会导致实体类似的不同业务逻辑在设计时被耦合在一起

    image.png

  • ER图设计时假定?

    image.png

服务划分的最佳实践-推荐使用领域建模

image.png

服务划分的最佳实践-端到端的划分服务

image.png

服务划分的最佳实践-识别核心业务服务

image.png

微服务的设计模式

image.png

微服务的设计模式-服务代理商模式

用途:灰度发布、ABtest、新老切换

image.png

微服务的设计模式-服务聚合模式(最常用)

image.png

  • 优点

    image.png

  • 应用案例

    image.png

image.png

微服务的设计模式-服务串联模式

image.png

  • 优点

    image.png

  • 案例

    image.png

微服务的设计模式-服务分支模式

  • 应用案例

    image.png

微服务的设计模式-服务异步消息模式

image.png

  • 应用案例

    image.png

微服务的设计模式-服务共享数据模式

其实是反模式

image.png

  • 应用场景
    image.png
    image.png
    除了上面提到的两个场景,任何场景都不能使用服务数据共享模式
    假如系统大量存在共享模式,那就说明需要进行数据治理了。

微服务的隔离容错

舱壁隔离模式

image.png

线程隔离

image.png

  • 业务线程之间的隔离

    image.png

降级

比方系统推荐功能,随着系统性能吃紧,就要降低相关体验
千人千面–>千人百面–>千人十面–>停用服务

image.png

限流

最外层限流效果最好,但不好管理控制,越内层越好控制,需要人工参加
Nginx+lua

image.png

熔断

不需要人工参加,自动实现。直接引入Hystrix(晚上详细讲解)实现熔断,但缺乏可视化功能及通知报警灯。比方系统可用性低于99.9%自动熔断,设置时间窗口默认5s后自动重试,判断能否需要自动恢复。
熔断自动化的东西,用不好的话会不好判断问题,假如流量不大的话,有人为降级的时间的情况,可以考虑不使用。

image.png

快速失败-链路中的超时

默认超时时间是180s,比较慢,需要自行设置。最重要的超时是网络相关的超时。

image.png

动态更改,实时生效。经验值,比方正常时间是5ms,则可配置5-10倍,如50ms,需要不断调整尝试。

image.png

微服务架构中职能团队的划分

image.png

推荐业务性团队

image.png

协作

image.png

本章小结

image.png

下午答疑环节:
spring cloud:ip 升级速度较慢
dubbo:tcp 国内,看9月份的发布情况
ServiceMesh:业务性弱,sidecar

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 架构师进阶实战随堂笔记五

发表回复