首页 > 其他分享 >微服务拆分需要考虑哪些因素?

微服务拆分需要考虑哪些因素?

时间:2023-07-22 22:23:19浏览次数:29  
标签:基于 功能 服务 哪些因素 模型 业务 领域 拆分

微服务拆分需要考虑哪些因素?

理论上一个限界上下文内的领域模型可以被设计为微服务,但是由于领域建模主要从业务视角出发,没有考虑非业务因素,比如需求变更频率、高性能、安全、团队以及技术异构等因素,而这些非业务因素对于领域模型的系统落地也会起到决定性作用,因此在微服务拆分时我们需要重点考虑它们。我列出了以下主要因素供你参考。

1. 基于领域模型

基于领域模型进行拆分,围绕业务领域按职责单一性、功能完整性拆分。

2. 基于业务需求变化频率

识别领域模型中的业务需求变动频繁的功能,考虑业务变更频率与相关度,将业务需求变动较高和功能相对稳定的业务进行分离。这是因为需求的经常性变动必然会导致代码的频繁修改和版本发布,这种分离可以有效降低频繁变动的敏态业务对稳态业务的影响。

3. 基于应用性能

识别领域模型中性能压力较大的功能。因为性能要求高的功能可能会拖累其它功能,在资源要求上也会有区别,为了避免对整体性能和资源的影响,我们可以把在性能方面有较高要求的功能拆分出去。

4. 基于组织架构和团队规模

除非有意识地优化组织架构,否则微服务的拆分应尽量避免带来团队和组织架构的调整,避免由于功能的重新划分,而增加大量且不必要的团队之间的沟通成本。拆分后的微服务项目团队规模保持在10~12人左右为宜。

5. 基于安全边界

有特殊安全要求的功能,应从领域模型中拆分独立,避免相互影响。

6. 基于技术异构等因素

领域模型中有些功能虽然在同一个业务域内,但在技术实现时可能会存在较大的差异,也就是说领域模型内部不同的功能存在技术异构的问题。由于业务场景或者技术条件的限制,有的可能用.NET,有的则是Java,有的甚至大数据架构。对于这些存在技术异构的功能,可以考虑按照技术边界进行拆分。

标签:基于,功能,服务,哪些因素,模型,业务,领域,拆分
From: https://www.cnblogs.com/15078480385zyc/p/17574409.html

相关文章

  • java游戏服务器2023年7月22日
    name卡牌军团放置卡牌游戏开发语言:javamysql通信http账号服务器提供验证等功能中心服务器跨服功能排行榜公会......
  • 验证码识别服务2Captcha框架
    2Captcha是一个自动验证码识别服务,主要用于解决各种互联网服务中的验证码问题。在许多网站注册账户或进行敏感操作时,为了验证用户是真实的而不是自动化程序,会出现验证码。用户必须正确输入验证码,才能继续使用网站的功能。该框架的目标是帮助客户自动化解决验证码问题。客户可以通......
  • 自然数的拆分
    #include<bits/stdc++.h>usingnamespacestd;inta[1001],n;voiddfs(intp,intc,ints){if(s==n){cout<<n<<"="<<a[0];for(inti=1;i<c;i++)cout<<'+'<<a[i];......
  • Linux 网络基础 2 三次握手 三次挥手 多进程 多线程服务器
    1.包裹函数对服务器客户端等函数进行报错处理以及简化处理比如bindinttcp4bind(shortport,constchar*IP){structsockaddr_inserv_addr;intlfd=Socket(AF_INET,SOCK_STREAM,0);bzero(&serv_addr,sizeof(serv_addr));if(IP==NULL){//......
  • “三feng云”“免费虚拟主机““免费云服务器”
    “三feng云”“免费虚拟主机““免费云服务器”控制台链接:https://www.sanfengyun.com/control/#/freeServerList1.点击管理面板进入管理界面2.点击基本信息查看服务器配置3.点击安装操作系统安装操作系统,设置登录密码。支持linux、Windows4.流量统计查看访问流量情况5.......
  • 关于 SAP Fiori Launchpad 工作所依赖的 OData 服务
    Thelaunchpadandlaunchpaddesignerneedareverseproxytodirectthebrowserrequeststoeitherthefront-endsysteminwhichtheJavaScriptsourcesarestored,ortotheSAPGatewaysysteminwhichtheODataservicesarelocated.Launchpad和Launchpa......
  • C#原生Socket服务器与客户端的实现
    上个项目中用到了Socket通讯,项目中直接借助SuperSocket实现,但是我觉得这毕竟是一个我没接触过的东西,所以也顺便学习了一下原生socket的使用,做了一个socket服务器与客户端的开发.本人菜鸟一枚,只做了一个简单的实现,希望有看到我博客的大佬不吝指点,抱拳!socket通讯......
  • k8s 学习笔记之搭建 nginx 服务测试搭建的环境
    服务部署接下来在kubernetes集群中部署一个nginx基础程序,测试集群是否正常工作。#部署nginx[root@master~]#kubectlcreatedeploymentnginx--image=nginx:1.14-alpine#暴露端口[root@master~]#kubectlexposedeploymentnginx--port=80--type=NodePort#......
  • mysql 服务卸载
    如何卸载MySQL服务作为一名经验丰富的开发者,我将帮助你学习如何卸载MySQL服务。在开始之前,让我们先了解整个卸载过程的步骤。下面的表格将展示每个步骤和需要执行的任务。步骤任务代码说明1停止MySQL服务sudoservicemysqlstop停止运行中的MySQL服务2......
  • LntonCEC算法算力云平台服务通过EasyNTS内网穿透到公网上的具体操作流程
    算法算力云平台的主要特点包括高性能、高可靠性、高可扩展性和低成本。LntonCEC算法算力云平台是一种为用户提供高效、强大的算法计算服务的云计算平台。它可以帮助用户快速、灵活地运行各种复杂的计算模型和算法,包括机器学习、人工智能、大数据分析、图像识别等领域。算法算力云平......