首页 > 其他分享 >如何设计微服务的粒度?

如何设计微服务的粒度?

时间:2023-06-05 22:00:43浏览次数:37  
标签:服务 一个 稳定性 研发 粒度 设计 维护

微服务有个永恒的话题,就是微服务的粒度到底该怎么定。一个人应该分到几个微服务,还是几个人一起维护一个微服务呢?

对于这个问题,你肯定听到过各式各样的答案。有讲 3 个人维护一个的,也有说应该两个人维护一个的,还有说一个人维护一个的。

划分微服务的粒度不仅需要考虑研发的人性,还要考虑服务本身的原子性、团队大小、团队人员的稳定性、服务的高可靠性要求等等。不过单从人性角度思考,如果你独立负责一个核心微服务的话,那么你的安全感和自尊都是最大化的。

这是从研发 ROI 的角度来思考微服务粒度的问题,我们还可以从微服务本身的设计出发来思考。微服务的核心价值在于以下几点:

  1. 粒度小,单个服务可以紧贴业务快速迭代;
  2. 去中心化组织和部署结构,减少不必要的协同;
  3. 数据和商业逻辑受同一个服务控制,从而在商业逻辑快速变更的同时,保障数据模型的一致性;
  4. 数据和状态独立封装,保障一个业务快速演变的同时,还不污染其他业务;
  5. 服务本身的独立部署能力使得容错和容量弹性最大化;
  6. 细粒度服务发布回滚和故障响应能够有效隔离,出了问题可以迅速降级或回滚。

其中第 1、2、3 项是人越少越高效的,最高效的状态就是一个人。想想看,你自己对业务有深度理解,能够和业务同频率迭代。你什么时候想改代码就改代码,不需要协同,改好了就上线。你自己一个人改自己的商业逻辑和数据模型,根本不需要担心其他人祸害。

在这种状态下,你的速度绝对是最快的。而且就你个人的能力为极限,也是协同越少,你能产出代码的质量越高。所以从这个角度来说,让多名研发维护一个微服务的配置是不合理的。

唯一能够支持多名研发维护同一个服务的理由,就是服务本身对公司的价值太大,它上面承载的业务量,对稳定性的要求,对服务连续性的要求,大到可以忽略研发资源的成本的时候;或者是从性能角度来看,服务无法拆分,它得复杂度大到可以支持多个研发维护的时候。在这种情况下,多个研发维护同一个服务的布局才是合理的。

当然,有些人认为一个服务上只有一名研发会有稳定性风险,这个理由不成立。微服务的隔离性和有分布式架构带来的稳定性,是能抗住个别同学离职的压力的。而且服务粒度越小,这种承受能力越大。

做微服务就像农民耕耘自己的土地一样。无论是古罗马,还是中国封建社会的历朝历代,再或是美国,开国之初都有过开荒屯田的政策,每个农民都可以分到一块属于自己的土地,国家也因此得到了飞速的发展。


标签:服务,一个,稳定性,研发,粒度,设计,维护
From: https://blog.51cto.com/key3feng/6419812

相关文章

  • 【Python网络爬虫课程设计】B站up主——老番茄视频数据爬取+数据可视化分析
    一、选题背景1.背景随着大数据时代的来临,网络爬虫在互联网中的地位将越来越重要。互联网中的数据是海量的,如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的。对于身为数据科学与大数据技术专业的学生来说,网络......
  • Dubbo微服务架构
    1、什么是微服务?微服务就是一种软件开发架构风格,将应用程序拆分成小的、独立的服务单元,每个服务单元都可以独立部署和扩展,并通过轻量级的通信机制相互协作。2、什么是Dubbo?Dubbo是一款高性能的微服务框架,它提供了多种开箱即用的功能,例如服务发现、负载均衡、远程调用等。3、......
  • 使用Node.js搭建的微服务器基本流程
    前言使用Node.js搭建的微服务器,处理注册登录操作的流程详解。主要包括注册,登录两大模块。Node.js项目的搭建基于Express框架mongodb数据库搭建的Web服务器基本配置1.初始化Node.js项目`npminit`2.项目目录结构3.项目结构介绍config:保存项目一些公共的配置db......
  • 搭建本地开发服务器
    原文点此跳转注意在上一个案例的基础上添加本地开发服务器,请保留上个案例的代码。如需要请查看 Webpack使用。搭建本地开发服务器这一个环节是非常有必要的,我们不可能每次修改源代码就重新打包一次。这样的操作是不是太繁琐了。所以本地开发服务器的作用就能体现了,它会自动监听我......
  • Amazon电商、音乐、云服务不分家,亚马逊云科技告诉你如何巧用全球业务体系占据80%中国
    花木兰为啥“东市买骏马,西市买鞍鞯”?在半年一度的6.18电商购物节里,大家可能会说:“因为没有跨店满减”……但事实是,如果东市都可以把骏马、鞍鞯买齐是怎样的一种体验?亚马逊云科技就可以做到,作为占据80%中国企业出海市场的亚马逊云科技,其覆盖全球的业务体系,从亚马逊海外购、......
  • java程序设计对文件的操作
    1文件的读入与写进importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){try{FileinFile=newFile("D://example.txt");BufferedReaderbf=newBufferedReader(newFileReader(inFile));......
  • 小程序容器技术助力数字门户拓展多样化服务
    数字门户是指提供一站式访问和集成多个在线服务、信息和资源的网络平台。它通常是一个网站或应用程序,为用户提供广泛的功能和服务,如新闻、天气预报、电子邮件、在线购物、社交媒体、银行服务、电子支付、在线学习、政府服务等。数字门户的目标是通过集成和整合各种在线服务,为用户......
  • C++设计模式:观察者模式
    观察者模式又叫做发布-订阅模式;观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动的更新自己。有两大类(主题和观察者)一共四个角色从上面我们可以看到,这里面包含了:(1)抽象主题/抽象......
  • Wi-Fi 6E路由器电源线端口浪涌保护方案设计图
    如今,Wi-Fi路由器越来越容易受到瞬态浪涌、静电放电的损坏。Wi-Fi6E路由器具有多个高速有线网络接口,有以太网、USB和Wi-Fi天线端口等等。由于用户经常交互和操作这些数据端口,路由器极易受到瞬态浪涌威胁的影响,例如静电放电ESD、电气快速瞬变EFT、电气过载EOS、电缆放电(CDE)等等......
  • 客户至上 服务至极 ——优维服务流程标准化体系
    ◎如何用服务打动客户?在思考这个问题之前,首先我们要了解做好服务最难的是什么?众所周知,由机器作业出来的东西是一致且规范的,而服务不一样。服务,是需要人来参与的,当由不同的人来完成某件事的时候,就会出现差异。所以,服务最难的就是交付物的一致性。那么,如何实现交付物的一致性,那就是......