我的编程空间,编程开发者的网络收藏夹
学习永远不晚

什么时候才是微服务拆分的最佳时机?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

什么时候才是微服务拆分的最佳时机?

提到微服务,服务拆分是绕不过去的话题,但是微服务不是说拆就能拆的,需要很多的前提条件。

什么时候才是微服务拆分的最佳时机?

首先,首先在基础设施层面,要有一个持续集成的平台,使得服务在拆分的过程中,功能的一致性,这种一致性不能通过人的经验来,而需要经过大量的回归测试集,并且持续的拆分,持续的演进,持续的集成,从而保证系统时刻处于可以验证交付的状态,而非闭门拆分一段时间,最终谁也不知道功能最终究竟有没有bug,因而需要另外一个月的时间专门修改bug。

其次在接入层,API和UI要动静分离,API由API网关统一的管理,这样后端无论如何拆分,可以保证对于前端来讲,统一的入口,而且可以实现拆分过程中的灰度发布,路由分发,流量切分,从而保证拆分的平滑进行。而且拆分后的微服务之间,为了高性能,是不建议每次调用都进行认证鉴权的,而是在API网关上做统一的认证鉴权,一旦进入网关,服务之间的调用就是可信的。

其三对于数据库,需要进行良好的设计,不应该有大量的联合查询,而是将数据库当成一个简单的key-value查询,复杂的联合查询通过应用层,或者通过Elasticsearch进行。如果数据库表之间耦合的非常严重,其实服务拆分是拆不出来的。

其四要做应用的无状态化,只有无状态的应用,才能横向扩展,这样拆分才有意义。

那么, 满足了服务拆分的基础设施前提之后,我们应该先拆哪个模块,后拆哪个模块呢?在什么情况下一个模块应该拆分出来呢?

切记,微服务拆分绝非一个大跃进运动,由高层发起,把一个应用拆分的七零八落的,最终大大增加运维成本,但是并不会带来收益。

满足上述基本条件后,我们还要看业务变化,才能找到拆分的最佳时机。

第一,有快速迭代的需求。

互联网产品的特点就是迭代速度快,一般一年半就能决出胜负,第一一统天下,第二被第一收购,其他死翘翘。所以快速上线,快速迭代,就是生命线,而且一旦成功就是百亿身家,所以无论付出多大运维成本,使用微服务架构都是值得的。

这也就是为什么大部分使用微服务架构的都是互联网企业,因为对于这些企业来讲收益明显。而对于很多传统的应用,半年更新一次,企业运营相对平稳,IT系统的好坏对于业务没有关键性影响,在他们眼中,微服务化改造带来的效果,还不如开发多加几次班。

第二,提交代码频繁出现大量冲突

微服务对于快速迭代的效果,首先是开发独立,如果是一单体应用,几百人开发一个模块,如果使用GIT做代码管理,则经常会遇到的事情就是代码提交冲突。

同样一个模块,你也改,他也改,几百人根本没办法沟通。所以当你想提交一个代码的时候,发现和别人提交的冲突了,于是因为你是后提交的人,你有责任去merge代码,好不容易merge成功了,等再次提交的时候,发现又冲突了,你是不是很恼火。随着团队规模越大,冲突概率越大。

所以应该拆分成不同的模块,每十个人左右维护一个模块,也即一个工程,首先代码冲突的概率小多了,而且有了冲突,一个小组一吼,基本上问题就解决了。

每个模块对外提供接口,其他依赖模块可以不用关注具体的实现细节,只需要保证接口正确就可以。

第三,小功能要积累到大版本才能上线,上线开总监级别大会

微服务对于快速迭代的效果,首先是上线独立。如果没有拆分微服务,每次上线都是一件很痛苦的事情。当你修改了一个边角的小功能,但是你不敢马上上线,因为你依赖的其他模块才开发了一半,你要等他,等他好了,也不敢马上上线,因为另一个被依赖的模块也开发了一半,当所有的模块都耦合在一起,互相依赖,谁也没办法独立上线,而是需要总监协调各个团队,大家开大会,约定一个时间点,无论大小功能,死活都要这天上线。

这种模式导致上线的时候,单次上线的需求列表非常长,这样风险比较大,可能小功能的错误会导致大功能的上线不正常,将如此长的功能,需要一点点check,非常小心,这样上线时间长,影响范围大。因而这种的迭代速度快不了,顶多一个月一次就不错了。

服务拆分后,在接口稳定的情况下,不同的模块可以独立上线。这样上线的次数增多,单次上线的需求列表变小,可以随时回滚,风险变小,时间变短,影响面小,从而迭代速度加快。

对于接口要升级部分,保证灰度,先做接口新增,而非原接口变更,当注册中心中监控到的调用情况,发现接口已经不用了,再删除。

微服务解决的问题还有高并发。互联网一个产品的特点就是在短期内要积累大量的用户,这甚至比营收和利润还重要,如果没有大量的用户基数,融资都会有问题。

因而对于并发量不大的系统,进行微服务化的驱动力差一些,如果只有不多的用户在线,多线程就能解决问题,最多做好无状态化,前面部署个负载均衡,单体应用部署多份。

 第四,横向扩展流程复杂,主要业务和次要业务耦合

单体应用无状态化之后,虽然通过部署多份,可以承载一定的并发量,但是资源非常浪费。因为有的业务是需要扩容的,例如下单和支付,有的业务是不需要扩容的,例如注册。如果一起扩容,消耗的资源可能是拆分后的几倍,成本可能多出几个亿。而且由于配置复杂,在同一个工程里面,往往在配置文件中是这样组织的,这一块是这个模块的,下一块是另一个模块的,这样扩容的时候,一些边角的业务,也是需要对配置进行详细审核,否则不敢贸然扩容。

第五,熔断降级全靠if-else

在高并发场景下,我们希望一个请求如果不成功,不要占用资源,应该尽快失败,尽快返回,而且希望当一些边角的业务不正常的情况下,主要业务流程不受影响。这就需要熔断策略,也即当A调用B,而B总是不正常的时候,为了让B不要波及到A,可以对B的调用进行熔断,也即A不调用B,而是返回暂时的fallback数据,当B正常的时候,再放开熔断,进行正常的调用。

有时候为了保证核心业务流程,边角的业务流程,如评论,库存数目等,人工设置为降级的状态,也即默认不调用,将所有的资源用于大促的下单和支付流程。

如果核心业务流程和边角业务流程在同一个进程中,就需要使用大量的if-else语句,根据下发的配置来判断是否熔断或者降级,这会使得配置异常复杂,难以维护。

如果核心业务和边角业务分成两个进程,就可以使用标准的熔断降级策略,配置在某种情况下,放弃对另一个进程的调用,可以进行统一的维护。

总之,微服务拆分的过程,应该是一个由痛点驱动的,是业务真正遇到了快速迭代和高并发的问题。如果不拆分,将对于业务的发展带来影响,只有这个时候,微服务的拆分才有确定收益,增加的运维成本才值得。

(本文作者为:网易云首席架构师 刘超)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

什么时候才是微服务拆分的最佳时机?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

什么时候才是微服务拆分的最佳时机?

提到微服务,服务拆分是绕不过去的话题,但是微服务不是说拆就能拆的,需要很多的前提条件。首先,首先在基础设施层面,要有一个持续集成的平台,使得服务在拆分的过程中,功能的一致性,这种一致性不能通过人的经验来,而需要经过大量的回归测试集,并且持续
2023-06-05

亚马逊云服务是什么时候开始的

亚马逊云服务的发展历程可以追溯到2006年,当时亚马逊公司推出了一项名为“亚马逊网络服务”(AWS)的服务,旨在为个人和企业提供可靠的云计算基础设施和服务。AWS最初主要面向企业客户,随着时间的推移,它逐渐扩展到个人用户和开发者客户。2016年,亚马逊云服务正式推出,并迅速成为全球最受欢迎的云计算服务之一。它的推出标志着亚马逊公司进入了云计算服务市场,并成为该领域的领导者之一。自此以后,亚马逊云服务不断发展...
2023-10-27

亚马逊云服务是什么时候开始的呢

现在,AWS已经成为了许多企业和组织的首选云计算服务提供商之一,包括许多大型科技公司,如微软、谷歌、IBM等。此外,AWS还提供了一系列其他云计算服务,如物联网、人工智能、区块链等,可以满足各种不同的业务需求。
2023-10-27

6个最佳的开源Python应用服务器分别是什么

本篇文章为大家展示了6个最佳的开源Python应用服务器分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先,你知道什么是应用服务器吗?应用服务器通常被描述为是存在于服务器中心架构中间层的一
2023-06-17

最热门的13个Java微服务框架分别是什么

最热门的13个Java微服务框架分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。曾经的服务器领域有许多不同的芯片架构和操作系统,经过长期发展,Java的“一次编译,到处
2023-06-19

C++ 技术中的异常处理:抛出异常的最佳时机和方法是什么?

异常处理用于处理 c++++ 中不可恢复的错误。最佳抛出时机是:内存分配失败;文件操作失败;数据库连接失败;参数无效。c++ 提供了多种抛出异常的方法:throw 表达式、throw 异常对象、使用抛出宏。最佳实践包括只抛出不可恢复的错误、
C++ 技术中的异常处理:抛出异常的最佳时机和方法是什么?
2024-05-09

腾讯云服务器续费活动是什么时候开始的

腾讯云服务器续费活动一般是在官方公告或者活动页面中公布的,你可以在官方渠道或者官网上查看这些信息。以下是具体的时间说明:2017年9月1日到9月30日:这个时间段是腾讯云服务器开始接受续费的时间。在这个时间段内,你可以前往腾讯云官网或者腾讯云客户端进行相关操作。2018年1月1日到1月31日:这个时间段是腾讯云服务器接受续费的时间。在这个时间段内,你可以在腾讯云官网或者腾讯云客户端进行续费
2023-10-26

腾讯云服务器购买优惠政策是什么时候的

2020年2月1日,腾讯云官网发布了最新的优惠政策,将云服务器的购买价格降低了50%,同时还推出了更多的优惠活动。此次优惠政策适用于所有腾讯云用户,不限制购买数量,只要符合优惠条件即可享受。优惠政策内容如下:购买100GB云服务器可享受1000元优惠;购买50GB云服务器可享受5000元优惠;购买20GB云服务器可享受
2023-10-27

腾讯云服务器续费活动是什么时候开始的呢

腾讯云服务器续费活动一般是在购买服务器后的一个月内开始的,具体日期会根据实际情况和促销活动进行调整。如果您之前购买过腾讯云服务器,那么活动通常会在您的账号购买日期当天开始生效。如果您之前未曾购买过腾讯云服务器,则活动通常会在首次购买日期前一个月开始生效。以下是几个常见的腾讯云服务器续费活动时间段:购买后的前一个月:活动通常会在购买后的前一个月开始生效。您可以在这一个月内查看最新的购买记录
2023-10-26

云服务器训练任务的时候用是本地网络吗为什么

云服务器训练任务通常使用本地网络来进行。本地网络是一种专门为云服务器设计的网络,因此它不依赖于云计算平台的网络连接和数据传输性能,因此可以提供与云服务器相似的性能和功能。本地网络的主要优点包括:节省网络带宽和服务器资源:本地网络不需要云服务器的网络连接和处理能力,因此可以将大部分资源用于网络连接和处理,从而节省了大量的带宽和服务器资源。可靠性和安全性:由于本地网络是专门为云服务器设计的,因此它比其他网络更...
2023-10-27

华为云服务器租赁优惠政策是什么时候提出的

华为云服务器租赁优惠政策是在2019年11月提出的。该政策旨在为客户提供更具竞争力的价格和更灵活的租赁选项,以满足不同客户的需求。根据该政策,客户可以享受多种优惠,包括新客户注册优惠、预付费优惠、按需计费优惠等。此外,华为云还提供了多种租赁选项,包括包年包月、按需计费、竞价实例等,以满足客户不同的需求。这些优惠政策和租赁选项的推出,使得华为云在云计算市场上更具竞争力,吸引了更多的客户。
2023-10-26

华为云服务器租赁优惠政策是什么时候开始的

华为云服务器租赁优惠政策是在2019年11月开始实施的。该政策旨在为用户提供更加灵活和优惠的云服务器租赁服务,以满足不同用户的需求。根据该政策,用户可以根据自己的实际需求选择不同的租赁周期,并享受相应的折扣优惠。此外,华为云还提供了多种付款方式,包括预付费和后付费,以满足用户的不同需求。通过这些优惠政策,华为云希望能够为用户提供更加灵活、高效和经济的云计算服务。
2023-10-26

华为云服务器续费优惠政策是什么时候出来的

华为云服务器续费优惠政策可能在华为云官方网站上公布,也可能是通过其他渠道进行公布。需要注意的是,以下信息可能会与当前市场上正在进行的华为云服务器续费优惠政策不完全相同,具体优惠政策的发布时间可能会稍有延后或提前。根据华为云官方声明,华为云服务器续费优惠政策的发布与华为公司业务、市场策略和市场情况等因素密切相关。因此,具体的优惠政策可能会有所不同。您可以在华为云官方网站或其他合法渠道了解相关信息
2023-10-26

腾讯云服务器购买优惠政策是什么时候的活动

腾讯云服务器购买优惠政策是一个长期的活动,通常会在不同的时间推出不同的优惠政策。具体的优惠政策包括折扣、代金券、赠送等,可以根据不同的需求选择不同的优惠政策。腾讯云通常会在一些特殊的时间节点推出更多的优惠政策,比如双11、618、年末等。此外,腾讯云还会根据用户的购买行为和消费金额等因素,为用户提供不同的优惠政策。如果您想了解更多关于腾讯云服务器购买优惠政策的信息,可以登录腾讯云官网或者关注腾讯云官方微...
2023-10-27

华为云服务器续费优惠政策是什么时候开始的

华为云服务器续费优惠政策会因地区而异,通常在华为云服务器续费优惠政策生效前几个月会有相关宣布。根据您的具体政策,续费优惠政策会持续多长时间取决于您所在地区的续费政策。一般来说,华为云服务器续费优惠政策会在每年的3月和8月进行两次宣布,并在该期间开始生效。续费优惠政策通常会提供一些折扣和优惠,例如免费赠送云服务器、优惠价购买云主机或虚拟主机或云存储等服务。这些折扣和优惠可能仅在特定地区和时间段
2023-10-26

腾讯云服务器购买优惠政策是什么时候开始的

首先,腾讯云服务器的购买优惠政策是按照订单量和使用时间计算的。一般来说,优惠政策会在特定时间段内生效。比如,如果你购买了腾讯云服务器,并选择了按小时计费的模式,你可以享受到折扣优惠。在此基础上,你可以在特定的时间段内享受更多的优惠。其次,腾讯云服务器的购买优惠政策会根据你的实际需求而定。比如,如果你正在寻找一个可靠的云
2023-10-27

华为云服务器租赁优惠政策是什么时候开始的呢

华为云服务器租赁优惠政策可以通过以下方式获取:访问华为云官网,找到“服务政策”栏目或者直接联系华为云官方客服进行了解。访问华为云应用市场,了解最新的租赁优惠政策和促销活动。登录华为云应用商城,查看各种云服务器租赁优惠政策及促销活动。关注华为云官方微信,获取最新的租赁优惠政策和促销活动。需要注意的是,以上几种方式只能作为参考,具体的租赁优惠政策以官方发布的信息为准。华为云服务器租赁优
2023-10-26

华为云服务器续费优惠政策是什么时候开始的呢

华为云服务器续费优惠政策是从2021年1月1日开始实施的。根据政策,用户在华为云服务器到期前续费,可以享受一定的折扣优惠。具体优惠幅度根据续费时长和服务器规格不同而有所不同。例如,如果用户选择续费一年,可以享受最高10%的折扣优惠;如果选择续费三年,可以享受最高30%的折扣优惠。此外,华为云还推出了多种优惠活动,如新用户注册即送代金券、购买云服务器即送代金券等,用户可以根据自己的需求选择适合自己的
2023-10-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录