微服务拆分技巧

news2024/11/25 4:35:26

微服务架构整体思路

在这里插入图片描述

常见场景实施建议

拆分方式基础设施要求服务拆分落地方式
从0开始构建业务系统按业务拆分微服务搭建完善基础设施,按照微服务基础设施优先级逐步落地一步到位
单体架构微服务化按业务拆分微服务,先从非核心业务开始拆分搭建完善基础设施,按照微服务基础设施优先级逐步落地逐步落地
粗粒度服务微服务化按质量拆分微服务重用已有基础设施逐步落地
局部系统优化按质量拆分微服务重用已有基础设施逐步落地

按业务拆分微服务

DDD

概要介绍

在这里插入图片描述

战略设计

  1. 领域,对应微服务的“子域”
  2. 限界上下文,对应微服务的“服务”

战术设计

聚合根、实体、值对象:对应面向对象方法的对象

聚合根:核心的有状态对象

实体:有状态的对象

值对象:无状态的对象

难以落地的核心问题

DDD告诉你限界上下文是什么,却没有告诉你如何划分

实际项目中的业务边界划分

在这里插入图片描述

做法风险技巧
业务专家以业务专家意见为准业务专家太水从行业挖人才
粗分+演进先按照某个维度粗粒度划分,后面随着业务发展而演进,划分为细粒度边界太粗导致频繁演进三个火枪手
参考业界实现直接参考业界类似业务的划分方式照搬导致水土不服三个火枪手

实际项目中的服务拆分

在这里插入图片描述

服务拆分技巧

在这里插入图片描述

服务粒度优先

三个火枪手原则

定义

平均3个开发人员负责一个微服务

剖析
为什么不是1个?

因为没有备份,且一个人思维有局限

为什么不是2个?
  • 因为异常情况下剩余1个,压力会很大
  • 2个人负责维护一个微服务,微服务复杂度偏低
为什么不是4个或者5个?

如果4个或4个以上,每个人不一定能掌握单个服务所有细节

技巧
  1. 微服务数量=服务端开发人数/3
  2. 3=1+2,1个有经验的(P7/P6+),2个普通的(P5/P6)
  3. 处于维护期的服务,维护人员为2人
案例

在这里插入图片描述

一对一服务映射

在这里插入图片描述

多对一服务映射

在这里插入图片描述

一对多服务映射

在这里插入图片描述

####### 技巧
列出核心业务功能的处理流程,将流程中的处理步骤作为拆分的维度

####### 案例
方案1:拆分为5个

方案2:拆分为2个,下单(包含订单生成、订单支付)、物流(包含商家发货、确认收货、交易成功)

方案3:拆分为3个,下单(包含订单生成、订单支付)、发货(包含商家发货)、收货(包含确认收货、交易成功)

按质量属性拆分微服务

按性能拆分

在这里插入图片描述

方法:根据运维系统统计请求量排名前3的业务,将流量最大的业务以及强关联的业务拆分出来

目的:降低业务互相影响程度,拆分后优化流量大的业务,提升性能降低成本

按业务重要程度拆分

在这里插入图片描述

方法:将重要程度高的业务拆分出来,注意重要程度高不一定是流量大的

目的:降低业务互相影响程度,拆分后提升重要程度高的业务的可用性

案例:儿童电话手表的电话功能

按可用性拆分

在这里插入图片描述

方法:将经常出问题的业务拆分出来

目的:降低业务互相影响程度,拆分后有针对性的提升问题多的业务

按稳定性拆分

在这里插入图片描述

方法:将稳定的业务拆分出来

目的:降低业务互相影响程度,拆分后有利于不断变化的业务快速迭代

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python初学者日记】用PIL批量给HEIC格式的照片,添加拍摄日期、拍摄地点的水印戳

【python初学者日记】用PIL批量给HEIC格式的照片,添加拍摄日期、拍摄地点的水印戳问题合集1、读取 HEIC 格式照片的拍摄信息2、将已知坐标转码成具体省市地址的文字信息3、将文字添加到HEIC格式的照片上问题解决一、问题分析二、代码实现最近在整理手机相册&#xf…

网站SEO优化有哪些要点?

1、网站关键词优化 对于网站关键词,每一个站长朋友应该很熟悉了,所谓的关键词就是对网站的一种简单而又综合性的描述,网站关键词分析也叫做关键词定位。seo教程认为网站关键词分析是进行SEO优化的最重要的一环。关键词分析首先要做的就是根据…

Go语言入门【6】切片

切片 在go语言中,切片是对数组的抽象,数组在声明时指定了长度之后就不可再进行改变,在特定场景下数组就不适用,所以就有了切片类型,切片就是“动态数组”,和数组相比,切片的长度是不固定的&…

mybatis逆向工程的实现

在本地创建一个test数据库,并在test数据库中创建一个student表;表中的数据如下: 创建表: DROP TABLE IF EXISTS student; CREATE TABLE student ( studentID int NOT NULL AUTO_INCREMENT, StudnetName varchar(20) CHARACTER SET…

Linux 之 Ubuntu 下安装配置ARM交叉编译器(工具链)的简单整理

Linux 之 Ubuntu 下安装配置ARM交叉编译器(工具链)的简单整理 目录 Linux 之 Ubuntu 下安装配置ARM交叉编译器(工具链)的简单整理 一、简单介绍 二、下载 arm 交叉编译安装工具包,并安装到虚拟机中 一、简单介绍 Linux/Ubuntu 开发的一些知识整理,方…

微服务基础设施选型

微服务基础设施架构 全貌 优先级 微服务框架模式 核心 服务注册、服务发现、服务路由 模式1-嵌入SDK 优点 架构简单,天然支持高性能、高可用维护简答,无需维护独立的Proxy节点 缺点 应用侵入,需要集成SDK,并联动升级多语言重…

强化学习 Lesson2 学习笔记

Lesson2-1 MDP、Q表格 一、强化学习MDP四元组<S,A,P,R> S:state 状态A:action 动作R:reward 奖励 r[st,at]P:probability 状态转移概率 p[st1,rt|st,at] 强化学习是一系列决策的过程,通过当前的环境状态和收到的奖励来决定下一次执行的动作 ​ Model-based: P函数和R函…

零售业迎来全新发展,这个技术少不了

零售业在创新方面比较频繁&#xff0c;创新是推动零售业发展的动力&#xff0c;这可以让零售业具有了外在的生命力和内在的动力。创新要求零售商从内部建立机制&#xff0c;以创新的心态经营管理。 现在&#xff0c;零售商陷入泥潭。其中一个原因是&#xff0c;他们失去了创新能…

Docker详解(一)

文章目录参考资料一、Docker基本概念二、Docker安装1. 卸载旧版本2. 使用 Docker 仓库进行安装设置仓库安装 Docker Engine-Community卸载 Docker安装Docker CE 环境三、Docker命令1. Docker容器运行流程2. 镜像命令docker images 查看所有本地主机上的镜像docker search 搜索镜…

后端自学两个小时前端,究竟能做出什么东西?

又来给大家更文了&#xff0c;今天是微服务网关实战的第六篇。 今天的内容比较偏前端一点&#xff0c;主要是给大家换换口味&#xff0c;毕竟学一个东西学久了就想学点新东西休息一点&#xff0c;俗称换换脑子。 其实早就想学学前端看了&#xff0c;不过碍于工作繁忙&#xf…

冒泡排序和数据结构和算法可视化网站(及其一点小优化)

目录 一、冒泡排序的原理 二、动图演示原理 三、代码实现&#xff1a; 四、优化后的冒泡排序 五、算法演示网站 一、冒泡排序的原理 冒泡排序就是两两交换&#xff0c;第一趟排序可以得到最大值&#xff0c;那么第二趟排序就不用再比较最大值了&#xff0c;同样是两两交换…

电商后台管理系统(基于SSM + Vue + Restful + jquery + axios)

1.项目架构 2.config配置 JdbcConfig public class JdbcConfig {Value("${jdbc.driver}")private String driver;Value("${jdbc.url}")private String url;Value("${jdbc.username}")private String username;Value("${jdbc.password}&qu…

Spring——五大类注解和方法注解详解

文章目录1.Spring的创建2.Spring对象的存储3.将 Bean 对象通过配置文件注册到 Spring 当中4.从 Spring 中将 bean 对象读取出来并使用4.1 先得到 Spring 上下文对象4.2 再通过上下文对象提供的方法获取需要使用的baen对象4.3 使用bean对象[可选步骤]4.4 获取 getBean 的更多方法…

易基因技术推介|m1A RNA甲基化测序(MeRIP-seq/m1A-seq)

N1-甲基腺苷&#xff08;N1-methyladenosine&#xff0c;m1A&#xff09;是一种普遍存在于真核生物tRNA、rRNA和mRNA且可逆的转录后RNA修饰。基于高通量测序技术最新研究揭示m1A RNA修饰在基因调控和生物过程中的关键作用&#xff1a;对RNA稳定性和翻译起始等过程有着重要调节作…

Mybatis+Spring+SpringMVC及SSM整合

文章目录一、Mybatis&#xff08;一&#xff09;Mybatis简介1、Mybatis历史2、Mybatis特性3、Mybatis下载4、和其它持久化层技术对比&#xff08;二&#xff09;搭建Mybatis1、MySQL不同版本的注意事项2、创建Maven工程1、引入依赖3、创建MyBatis的核心配置文件3.1、核心配置文…

WRF进阶:WRF中Noah-MP地面方案中雪反照率的计算

Noah-MP简介 Noah-MP是以Noah-LSM为基础发展的一种多层模型&#xff0c;相对于Noah-LSM&#xff0c;它对于下垫面的冠层、土壤、积雪有了更多的拓展。 Noah-MP允许3层雪&#xff0c;对于雪的模拟有了极大的提升&#xff0c;同时&#xff0c;Polar-WRF中对Noah LSM和Noah MP中海…

IIS 部署HTTP 转 HTTPS完整版

1,准备SSL证书&#xff0c;阿里云有1年免费证书 免费证书有 20个&#xff0c;每年用一个就行 审核通过后下载 下载文件包含证书文件和密码 2.安装重定向模块 如果IIS上默认有安装Web平台安装程序&#xff0c;我们可以使用平台自动安装URL Rewrite重写工具&#xff0c;也可以…

Tomcat日志分割

使用cronolog日志切分工具 RPM包下载方法&#xff1a;在 rpmfind.net 上搜索cronolog选择对应RPM包复制下载链接即可 下载安装 cronolog yum install https://rpmfind.net/linux/epel/7/x86_64/Packages/c/cronolog-1.6.2-14.el7.x86_64.rpm -y验证是否安装成功及安装位置 使…

《安卓逆向》Magisk的编译踩坑记录-安装方法-分享魔改后的Magisk过root检测方法

为什么: 1.体验下如何编译面具源码 2.魔改面具-绕过更深的root检测 1.ubuntu 虚拟机下载地址 http://mirrors.aliyun.com/ubuntu-releases/20.04/github:https://github.com/topjohnwu/Magisk 编译根据这篇文章做好前缀下代码工作 https://zhuanlan.zhihu.com/p/385255256编…

图片1920x1080分辨率怎么调 ?图片如何修改分辨率?

图片是我们日常生活中经常需要使用到的东西&#xff0c;但是在使用图片时我们会遇到需要调图片分辨率的情况&#xff0c;有很多小伙伴对于图片分辨率这个概念并不了解&#xff0c;今天就来为大家具体介绍一下图片1920x1080怎么调以及怎么给图片修改分辨率&#xff0c;下面一起来…