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

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

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

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

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

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

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

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

相关文章:

  • 【Vue框架】Vuex状态管理
  • Linked List
  • javascript数组基础
  • 【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)
  • Golang之路---01 Golang VS Code创建项目
  • vue 表单form-item模板(编辑,查看,新建)
  • 【IC设计】DC工具的target、link、synthetic、symbol库
  • redisson常用APi-Example
  • 小程序学习(四):WXML模板语法
  • IDEA好用的插件总结
  • 如何在Linux系统中安装ActiveMQ
  • 【Latex】常用公式编辑与符号:公式换行,标号居中、常用符号等
  • 【ArcGIS Pro二次开发】(55):给多个要素或表批量添加字段
  • CentOS7.3 安装 docker
  • 代码随想录算法训练营第五十二天 | 300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组
  • 1、Tomcat
  • centos 内网实现mail发送
  • 【雕爷学编程】MicroPython动手做(25)——语音合成与语音识别2
  • 如何用C#实现上位机与下位机之间的Wi-Fi通信?
  • 学习笔记|大模型优质Prompt开发与应用课(二)|第五节:只需3步,优质Prompt秒变应用软件
  • VB客运中心汽车售票管理系统设计与实现
  • 计算机网络——学习笔记
  • JSON对象
  • 26 用lsqnonlin求解最小二乘问题(matlab程序)
  • Verilog语法学习——LV6_多功能数据处理器
  • 发送信息----策略模式
  • PySpark介绍与安装
  • 细讲TCP三次握手四次挥手(三)
  • vue 组件中 data 为什么必须是函数
  • 从零开始学python(十二)如何成为一名优秀的爬虫工程师