您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

微服务架构最佳实践-方法篇

时间:2024-05-17 12:02:35  来源:二进制跳动  作者:

服务粒度

当团队实施微服务架构时,可以根据团队规模来划分微服务数量。一个团队约有 6 个人时,可以划分为 2 个微服务。随着业务的扩展和团队规模的增加(例如,扩展到 12 个人),可以将已有的 2 个微服务进一步细分为 4 个微服务。这种基于团队规模的微服务拆分方法,有助于管理复杂度,保持开发效率。

为什么是 3 个人,不是 4 个或者其他数量呢?

首先,3 个人负责一个系统,每个人都能够全面理解整个系统,同时又能够进行分工。如果是 2 个人,系统的复杂度不够,开发人员可能会感到技术上的挑战不够;如果是 4 个人或者更多,系统复杂度可能会导致开发人员无法全面了解系统的细节。

其次,3 个人形成一个稳定的备份,即使其中一个人休假或者调动到其他系统,剩余的 2 个人也可以支撑工作。如果是 2 个人,剩余的 1 个人可能承担过大压力;如果是 1 个人,团队就存在单点故障。

最后,3 个人的技术小组可以形成有效的讨论,快速达成一致意见。如果是 2 个人,可能会出现意见不一致的情况;如果是 1 个人,可能会陷入思维盲区;如果是 4 个人或者更多,可能会出现参与度不足的情况。

“三个火枪手”的原则主要适用于微服务设计和开发阶段。当微服务经过一段时间发展后,进入维护期,无需太多开发工作时,平均每个微服务维护 1 个人或者几个微服务都是可以接受的。然而,为了确保人员备份,最好安排每个微服务由 2 个人维护,每个人可以维护多个微服务。

拆分方法

基于业务逻辑拆分:这种方式是将系统中的业务模块按照职责范围识别出来,每个单独的业务模块拆分为一个独立的服务。但在实践过程中最常见的一个问题就是团队成员对于“职责范围”的理解差异很大,经常会出现争论,难以达成一致意见。

基于可扩展拆分:将系统中的业务模块按照稳定性排序,将已经成熟和改动不大的服务拆分为稳定服务,将经常变化和迭代的服务拆分为变动服务。稳定的服务粒度可以粗一些,即使逻辑上没有强关联的服务,也可以放在同一个子系统中。

基于可靠性拆分:将系统中的业务模块按照优先级排序,将可靠性要求高的核心服务和可靠性要求低的非核心服务拆分开来,然后重点保证核心服务的高可用。具体拆分的时候,核心服务可以是一个也可以是多个,只要最终的服务数量满足“三个火枪手”的原则就可以。

基于性能拆分:基于性能瓶颈将系统中的业务模块进行拆分,将性能要求高或者性能压力大的模块拆分为独立的服务。例如,电商系统中,抢购功能可能会导致性能瓶颈,可以将该功能独立为一个服务。

基础设施

大多数人关注微服务的“small”和“lightweight”特性,但实际上微服务的成败更多取决于被忽视的“automated”(自动化)方面。为什么这样说呢?因为即使服务粒度划分不合理,当团队遇到问题时,很自然地会考虑重新拆分或合并服务;但如果与“automated”相关的基础设施不健全,微服务就会成为一个坑,使得研发、测试和运维陷入各种微服务陷阱中。

微服务基础设施如下图所示:

图片图片

 

看到上面这张图,相信很多人都会倒吸一口凉气,说好的微服务的“轻量级”呢?都这么多基础设施还好意思说自己是“轻量级”,感觉比 ESB 还要复杂啊?

确实如此,微服务并不是很多人认为的那样简单和轻量级。要成功实施微服务,这些基础设施是必不可少的,否则微服务可能会成为一个难以摆脱的泥潭,使业务和团队陷入困境。因此,可以说微服务并没有减少复杂性,而是将复杂性从ESB(企业服务总线)转移到了基础设施上。你可以看到,“服务发现”、“服务路由”等实际上都是ESB的功能,只是在微服务中被剥离出来,成为了独立的基础系统。

虽然建设完善的微服务基础设施是一项庞大的工程,但不必因为团队规模较小或公司规模不大而放弃微服务的实施。首先,开源社区已经提供了一些成熟的微服务基础设施解决方案,比如知名的 Spring Cloud 项目,包含了服务发现、服务路由、网关、配置中心等功能。其次,如果微服务的数量不是很多,也并非每个基础设施都是必需的。因此,我建议按照以下优先级来搭建基础设施:

1. 服务发现、服务路由、服务容错:这是最基本的微服务基础设施。

2. 接口框架、API 网关:主要是为了提升开发效率,接口框架是提升内部服务的开发效率,API 网关是为了提升与外部服务对接的效率。

3. 自动化部署、自动化测试、配置中心:主要是为了提升测试和运维效率。

4. 服务监控、服务跟踪、服务安全:主要是为了进一步提升运维效率。

以上 3 和 4 两类基础设施,其重要性会随着微服务节点数量增加而越来越重要,但在微服务节点数量较少的时候,可以通过人工的方式支撑,虽然效率不高,但也基本能够顶住。



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
微服务架构最佳实践-方法篇
服务粒度当团队实施微服务架构时,可以根据团队规模来划分微服务数量。一个团队约有 6 个人时,可以划分为 2 个微服务。随着业务的扩展和团队规模的增加(例如,扩展到 12 个人),可以...【详细内容】
2024-05-17  Search: 架构  点击:(0)  评论:(0)  加入收藏
阿里云、微软、Meta等共同制定下一代AI网络架构标准
中新网北京5月15日电 (记者 夏宾)中新网记者15日从阿里云了解到,其成功入选超以太网联盟(UEC)技术咨询委员会,成为唯一的中国公司成员,将与微软、Meta、AMD、博通等其他12名成...【详细内容】
2024-05-16  Search: 架构  点击:(3)  评论:(0)  加入收藏
2024年的云原生架构需要哪些技术栈
背景时间过得很快啊,一转眼已经到了 2024 年,还记得 15 年刚工作那会掌握个 SSM/H(Spring/Struts2/Mybatis/Hibernate) 框架就能应付大部分面试了。现在 CS 专业的新同学估计...【详细内容】
2024-04-22  Search: 架构  点击:(13)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  Search: 架构  点击:(10)  评论:(0)  加入收藏
美团外卖宣布新一轮组织架构调整:提拔多位年轻管理者,年轻化、扁平化成主基调
新浪科技讯 4月11日上午消息,继2月下旬、3月下旬两轮人员调整后,美团到店到家的组织架构调整仍在继续。近日,美团外卖以内部邮件的方式宣布了新一轮的组织调整:外卖事业部下成立...【详细内容】
2024-04-11  Search: 架构  点击:(16)  评论:(0)  加入收藏
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  Search: 架构  点击:(19)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27  Search: 架构  点击:(33)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  Search: 架构  点击:(24)  评论:(0)  加入收藏
京东小程序数据中心架构设计与最佳实践
一、京东小程序是什么京东小程序平台能够提供开放、安全的产品,成为品牌开发者链接京东内部核心产品的桥梁,致力于服务每一个信任我们的外部开发者,为不同开发能力的品牌商家提...【详细内容】
2024-03-27  Search: 架构  点击:(28)  评论:(0)  加入收藏
从 MySQL 到 ByteHouse,抖音精准推荐存储架构重构解读
ByteHouse是一款OLAP引擎,具备查询效率高的特点,在硬件需求上相对较低,且具有良好的水平扩展性,如果数据量进一步增长,可以通过增加服务器数量来提升处理能力。本文将从兴趣圈层...【详细内容】
2024-03-22  Search: 架构  点击:(44)  评论:(0)  加入收藏
▌简易百科推荐
微服务架构最佳实践-方法篇
服务粒度当团队实施微服务架构时,可以根据团队规模来划分微服务数量。一个团队约有 6 个人时,可以划分为 2 个微服务。随着业务的扩展和团队规模的增加(例如,扩展到 12 个人),可以...【详细内容】
2024-05-17    二进制跳动  Tags:架构   点击:(0)  评论:(0)  加入收藏
Spring注入还可以这样玩!涨知识了
假设你有两个 CommonDAO bean,每个都需要在不同的环境中使用。这时,你可以使用 @Qualifier 来指定具体的 bean。环境:Spring6.1.21. 简介@Qualifier是 Spring 框架中的一个注解...【详细内容】
2024-05-17    Springboot实战案例锦集  Tags:Spring   点击:(2)  评论:(0)  加入收藏
运维总监怒怼开发:你真的需要 K8s 吗?
Kubernetes 以其自动化管理与可扩展性等优点不断吸引着新用户,然而,它的配置复杂与资源消耗高等特点也一直被诟病,开发人员或许都曾扪心自问:我们真的需要 Kubernetes 吗?秉持着...【详细内容】
2024-05-15    dbaplus社群  Tags:K8s   点击:(4)  评论:(0)  加入收藏
2024年的云原生架构需要哪些技术栈
背景时间过得很快啊,一转眼已经到了 2024 年,还记得 15 年刚工作那会掌握个 SSM/H(Spring/Struts2/Mybatis/Hibernate) 框架就能应付大部分面试了。现在 CS 专业的新同学估计...【详细内容】
2024-04-22    dbaplus社群  Tags:架构   点击:(13)  评论:(0)  加入收藏
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(19)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(33)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(24)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(42)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(22)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(54)  评论:(0)  加入收藏
站内最新
站内热门
站内头条