当前位置: 首页 > news >正文

如何将单体项目拆分成微服务

1、如何将单体项目拆分成微服务

如何拆分微服务?其实对不同的业务项目场景,对应有不同的拆分方案。需要项目人员详细的分析项目需求、团队现状、业务边界、业务逻辑等方方面面,拆分的粒度既不能过细,也不能过粗,需要把控好尺度。

如下为较为通用的拆分思路:

  • 从业务模型切入,根据业务边界进行拆分
  • 确保一个微服务团队对应一个开发小组或团队
  • 确保拆分之后所带来的收益大于拆分之前,否则不进行拆分
  • 考虑团队人员配置。在人员少的情况下,服务拆分的粒度不必过细

根据业务场景 ,总结出以下几点

  • 划分服务必须满团队开发需求,以业务为导向,明确业务界限,再进行划分
    • 对于项目来说,业务界限比较清晰的有这个几块:用户服务、商品服务、车厂服务、订单服务、支付服务、优惠券服务、推荐服务、消息服务等
  • 最大化的复用微服务,避免重复造轮子
    • 对于订单服务,支付服务、优惠券服务而言,它既可以支撑车厂出库需求,又可以支撑车品商城需求,二者代码有很多重复的地方,通过复用服务,减少了重复性的代码
  • 最小化地变更原有服务
    • 对于车品商城中的推荐功能而言,它相对较为独立,处于服务的下游,暂时只能被上游商品服务调用,只需要将相关的推荐代码取出来即可,并且也可为之后新业务提供推荐服务。
  • 确定基础公共服务与业务服务,并从原有项目中抽象公共服务。
    • 在项目中,除了业务相关的服务外,还有一些基础服务模块,如日志监控,权限检验,搜索服务等,这些也需要从原有的庞大项目中抽取出来,作为独立的微服务
  • 尽可能避免循环依赖,若出现循环依赖的情况,需要设计中间层做冗余处理。
  • 尽可能避免过度拆分微服务,必须结合实际业务场景做划分
    • 对于车场服务而言,如果进一步拆分车厂地图服务、车场详情服务、车场预约服务的话,会导致团队一进步拆分,而车场相关的功能是一个整体,需要成员紧密合作、一同完成需求开发、不适合进行更细粒度的拆分。此外,过度拆分微服务,会导致出现分布式问题,复杂度上升,带来不必要的技术成本。

相关文章:

如何将单体项目拆分成微服务

1、如何将单体项目拆分成微服务 如何拆分微服务?其实对不同的业务项目场景,对应有不同的拆分方案。需要项目人员详细的分析项目需求、团队现状、业务边界、业务逻辑等方方面面,拆分的粒度既不能过细,也不能过粗,需要把…...

【Vue框架】Vuex状态管理

前言 在上一篇 【Vue框架】Vue路由配置 结尾时说到store.js,在代码里new Vuex.Store()传入了getters对象;本篇专门针对getters的内容进行整理。 1、getters.js 1.1 代码 // 用于存储获取状态的方法 const getters {// 这里的state参数,是…...

Linked List

文章目录 链表定义专业术语代码链表分类常见算法链表创建和常用算法 链表总结 链表 补充知识 typedef 给类型换名字,比如 typedef struct Student {int sid;char name[100];char sex; }ST;//ST就代表了struct Student //即这上方一大坨都可以用ST表示 //原先结构体…...

javascript数组基础

文章和代码已经归档至【Github仓库:https://github.com/timerring/front-end-tutorial 】或者公众号【AIShareLab】回复 javascript 也可获取。 文章目录 数组的基本使用定义数组和数组单元访问数组和数组索引数据单元值类型数组长度属性操作数组 数组:(…...

【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Golang之路---01 Golang VS Code创建项目

Golang VS Code创建项目 代码组织 Golang使用包和模块来组织代码,包对应到文件系统就是文件夹,模块就是xxx.go的go源文件。一个包中会有多个模块,或者多个子包。 早期使用的是gopath来管理项目,不方便,比较麻烦&…...

vue 表单form-item模板(编辑,查看,新建)

目录 formatFormData 后端数据格式​编辑 JSON解析和生成 加载(请求前,await后) formComp formatFormData 后端数据格式 为空的,可以直接不提交/提交null/undefined JSON解析和生成 var str {"name": "…...

【IC设计】DC工具的target、link、synthetic、symbol库

Specifying Libraries You use dc_shell variables to specify the libraries used by Design Compiler. Table 4-1 lists the variables for each library type as well as the typical file extension for the library. 你使用dc_shell变量去指定dc要使用的库。下表列出了每种…...

redisson常用APi-Example

中文文档目录 redisson中文文档目录 分布式对象 package com.example.redissondemo.test;import com.example.redissondemo.RedissonDemoApplication; import com.example.redissondemo.test.domain.Order; import lombok.Data; import lombok.extern.slf4j.Slf4j; import o…...

小程序学习(四):WXML模板语法

WXML模板语法-数据绑定 1.数据绑定的基本原则 ①在data中定义数据 ②在WXML中使用数据 2.动态绑定属性 WXML模板语法-事件绑定 3.什么是事件 4.小程序中常用的事件 5.事件对象的属性列表 6.target和currentTarget的区别 7.bindtap的语法格式 8.在事件处理函数中为data中的数据…...

IDEA好用的插件总结

IdeaVim 这个看个人喜好,我比较喜欢用vim,并且支持自定义修改按键绑定alibaba java code guidelines alibaba的java编程规范plantUML 绘制UML,支持语言显示plantUML integration 能够直接将代码转化为UML图,非常方便rainbow brack…...

如何在Linux系统中安装ActiveMQ

1、环境 ActiveMQ是一个纯Java程序,这里安装5.18.2版ActiveMQ,该版MQ运行在JDK 11环境内,为此需要先搭建JDK 11环境,这里安装JDK 15。 1.1、卸载 卸载开源JDK软件包,如下所示: [rootlocalhost ~]# rpm -…...

【Latex】常用公式编辑与符号:公式换行,标号居中、常用符号等

【Latex】常用公式编辑与符号 文章目录 【Latex】常用公式编辑与符号1. 公式换行,且标号居中2. 常用符号3. 常用的希腊字母 1. 公式换行,且标号居中 \begin{equation}\label{eq14} \begin{aligned}a & b/c, \\d & e/f \end{aligned} \end{equ…...

【ArcGIS Pro二次开发】(55):给多个要素或表批量添加字段

在工作中可能会遇到这样的场景:有多个GDB要素、表格,或者是SHP文件,需要给这个要素或表添加相同的多个字段。 在这种情况下,手动添加就变得很繁琐,于是就做了这个工具。 需求具体如下图: 左图是待处理数据…...

CentOS7.3 安装 docker

亲测、截图 阿里云服务器 文章目录 更新源2345 启动开机自启 更新源 sudo yum update -y2 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo4 sudo yum …...

代码随想录算法训练营第五十二天 | 300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组

文章目录 一、300.最长递增子序列二、674.最长连续递增序列三、718.最长重复子数组 一、300.最长递增子序列 题目链接 代码如下&#xff1a; class Solution { public:int lengthOfLIS(vector<int>& nums) {if (nums.size() < 1) return nums.size();vector<…...

1、Tomcat

java介绍 Java语言和平台由以下几个主要部分组成&#xff1a; 1、Java编程语言(Java Language)&#xff1a;这是Java的核心部分&#xff0c;包括Java语法、关键字、数据类型、运算符、控制结构等。程序员使用Java语言来编写应用程序的源代码。 2、Java开发工具包(Java Developm…...

centos 内网实现mail发送

文章目录 1、frp 穿透公网和内网2、邮件 配置2.1、mail配置文件 3、测试 1、frp 穿透公网和内网 参考地址&#xff1a;https://zhaosongbin.blog.csdn.net/article/details/88865890 frps端部署在内网&#xff0c;frpc端部署在外网 frps端配置和上面文章中的一样&#xff0c…...

【雕爷学编程】MicroPython动手做(25)——语音合成与语音识别2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…...

如何用C#实现上位机与下位机之间的Wi-Fi通信?

有IP协议支持的话用UDP报文或者TCP直接发IP地址和端口不行么&#xff1f;你说的WiFi难道是2.4GHz频率模块那种东东&#xff1f; 你既然用了wifi&#xff0c;那么只要上位机和下位机的对应wifi网卡都具有ip地址以及其协议支持&#xff0c;那么和网络编程没啥子明显区别的吧………...

降AI率软件越便宜越好吗?实测5个主流降AI工具,首选嘎嘎降!

一、前言:2026 年毕业必须通过 aigc 检测 2026 年各高校对学术论文的 AIGC 疑似度的审查全面变严, 均发布了具体 AIGC 检测报告和数值要求,211 和 985 高校规定本科论文 AI 率要低于 20%, 硕士要求 AI 率不高于 15%。普通高校一般要求 AI 率控制在 30% 以内。AIGC 检测率超标的…...

告别3D-DNA的卡顿:用Chromap+Yahs快速搞定植物Hi-C辅助组装(附完整代码)

植物基因组Hi-C辅助组装新方案&#xff1a;ChromapYahs全流程解析 在植物基因组研究中&#xff0c;Hi-C技术已成为提升组装连续性的重要手段。然而传统3D-DNA流程在植物数据上的表现常令研究者头疼——运行速度缓慢、内存占用高&#xff0c;且对植物特有的重复序列处理效果欠佳…...

深度学习篇---向量空间

向量空间&#xff08;或称线性空间&#xff09;是一个很美妙的数学结构。它不仅是线性代数的核心&#xff0c;更是我们理解很多高级概念&#xff08;比如深度学习中的词向量、特征空间&#xff09;的基础。简单说&#xff0c;向量空间就是一个定义了向量加法和数乘运算&#xf…...

血管分割新突破:详解DSCNet中的蛇形卷积如何解决管状结构难题

血管分割新突破&#xff1a;详解DSCNet中的蛇形卷积如何解决管状结构难题 在医学影像分析领域&#xff0c;血管分割一直是个令人头疼的问题。想象一下&#xff0c;当你面对一张OCTA&#xff08;光学相干断层扫描血管成像&#xff09;图像时&#xff0c;那些细如发丝、蜿蜒曲折…...

智能卡通信调优实战:手把手教你用逻辑分析仪抓取并解析ISO7816 PPS协商过程

智能卡通信调优实战&#xff1a;手把手教你用逻辑分析仪抓取并解析ISO7816 PPS协商过程 在嵌入式系统和智能卡应用开发中&#xff0c;通信稳定性往往是项目成败的关键。当你的智能卡设备频繁出现通信中断、数据丢失或速率不达标时&#xff0c;问题很可能隐藏在协议协商阶段。IS…...

Ardb源码深度解析:从网络层到存储引擎的完整架构设计

Ardb源码深度解析&#xff1a;从网络层到存储引擎的完整架构设计 【免费下载链接】ardb A redis protocol compatible nosql, it support multiple storage engines as backend like Googles LevelDB, Facebooks RocksDB, OpenLDAPs LMDB, PerconaFT, WiredTiger, ForestDB. …...

Steam-Economy-Enhancer多货币支持:全球交易定价策略

Steam-Economy-Enhancer多货币支持&#xff1a;全球交易定价策略 【免费下载链接】Steam-Economy-Enhancer Enhances the Steam Inventory and Steam Market. 项目地址: https://gitcode.com/gh_mirrors/st/Steam-Economy-Enhancer Steam-Economy-Enhancer是一款强大的S…...

僧伽罗文语音本地化迫在眉睫!斯里兰卡新《数字服务法》2024年10月生效前,你必须掌握的7项ElevenLabs合规配置

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;僧伽罗文语音本地化的法律动因与技术紧迫性 斯里兰卡《官方语言法》&#xff08;No. 33 of 1956&#xff09;及2023年修订的《国家数字包容战略》明确要求&#xff1a;所有面向公众的政府数字服务必须支…...

从布列松决定性瞬间到AI生成:Midjourney黑白摄影风格构建方法论(附可复用的5层Prompt结构模板)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;从布列松决定性瞬间到AI生成的范式迁移 亨利卡蒂埃-布列松提出的“决定性瞬间”强调在精确的时间、空间与形式三重统一中捕捉不可复制的真实。这一美学范式统治摄影近百年&#xff0c;其内核是人类对意…...

PHP 的多态机制的庖丁解牛

它的本质是&#xff1a;多态 (Polymorphism) 允许不同的类对象&#xff0c;在响应 相同的方法调用 (Method Call) 时&#xff0c;表现出 不同的行为 (Behavior)。它基于 继承 (Inheritance) 或 接口实现 (Interface Implementation)&#xff0c;通过 父类/接口引用 指向 子类/实…...