26、架构-微服务的九个核心特征

1. 围绕业务能力构建

定义:微服务应该根据业务功能划分,而不是根据技术层次或模块划分。

详细讲解

  • 业务能力:每个微服务应该专注于完成一个具体的业务功能,例如用户管理、订单处理、支付处理等。这样,每个服务都有明确的职责,减少了不同服务之间的耦合。
  • 组织结构:根据康威定律,系统的架构趋同于组织的沟通结构。将开发团队按业务能力划分,有助于实现微服务架构的目标。
  • 例子:在电商系统中,可以将系统划分为用户服务、商品服务、订单服务、支付服务等,每个服务分别负责一个完整的业务功能。
2. 产品而非项目

定义:微服务应被视为长期运营的产品,而不是一次性交付的项目。

详细讲解

  • 长期运营:每个微服务都是一个独立的产品,需要持续开发、维护和运营。这样可以保证每个服务的持续改进和优化。
  • 独立生命周期:每个微服务有自己的开发、测试、部署和运维周期,可以独立进行更新和迭代。
  • 例子:在开发一个支付服务时,不仅需要完成基本的支付功能,还需要持续监控、优化性能、修复漏洞和增加新功能。
3. 强终端弱管道

定义:服务之间的通信应尽量简单,复杂的逻辑应由服务端点处理。

详细讲解

  • 强终端:每个微服务应该独立处理复杂的业务逻辑,避免将业务逻辑分散到多个服务中。
  • 弱管道:服务之间的通信应该尽量简单,通常通过轻量级协议(如HTTP/REST、gRPC)进行,不应依赖复杂的中间件或企业服务总线(ESB)。
  • 例子:订单服务直接与支付服务通信,传递订单信息和支付请求,而不通过复杂的中间件进行处理。
4. 独立部署

定义:每个微服务应能够独立部署和升级,不需要依赖其他服务的部署。

详细讲解

  • 独立部署:每个微服务可以单独部署,而不影响其他服务。这提高了系统的灵活性,减少了部署的复杂性和风险。
  • 持续交付:通过持续集成和持续交付(CI/CD)工具,实现快速、频繁的部署和更新。
  • 例子:当支付服务需要更新时,只需重新部署支付服务,而不需要重新部署整个系统。
5. 去中心化治理

定义:采用去中心化的技术治理模式,允许不同服务使用不同的技术栈。

详细讲解

  • 技术多样性:不同的微服务可以使用最适合其功能的技术栈,例如某个服务使用Java开发,另一个服务使用Node.js开发。
  • 自治团队:每个团队可以根据具体需求选择技术栈和工具,增加了技术选择的灵活性。
  • 例子:在一个电商系统中,搜索服务使用Elasticsearch,用户管理服务使用关系数据库,而推荐服务使用NoSQL数据库。
6. 去中心化数据管理

定义:每个微服务应拥有自己的数据库,避免共享数据库带来的耦合问题。

详细讲解

  • 独立数据库:每个微服务管理自己的数据存储,确保数据隔离,减少数据耦合。
  • 数据同步:服务之间通过API进行数据同步,而不是直接访问其他服务的数据库。
  • 例子:用户服务有自己的用户数据库,订单服务有自己的订单数据库,两个服务通过API接口共享必要的数据。
7. 自动化基础设施

定义:采用自动化的基础设施管理手段,如CI/CD工具,实现持续集成和交付。

详细讲解

  • 自动化部署:使用工具如Jenkins、GitLab CI/CD、CircleCI等,实现代码的自动构建、测试和部署。
  • 基础设施即代码(IaC):使用工具如Terraform、Ansible等管理和配置基础设施,实现基础设施的自动化和版本控制。
  • 例子:每次代码提交后,自动触发构建、测试和部署流程,将最新版本的服务部署到生产环境中。
8. 容错性设计

定义:接受服务会出错的现实,通过设计实现自动故障检测和恢复。

详细讲解

  • 容错机制:设计和实现自动重试、断路器、熔断等机制,确保服务在出现故障时能够自动恢复。
  • 故障隔离:通过隔离机制,确保一个服务的故障不会影响到其他服务的正常运行。
  • 例子:订单服务调用支付服务时,设置重试策略和断路器,如果支付服务不可用,可以快速返回错误并尝试使用备用服务。
9. 演进式设计

定义:服务应能够随业务需求变化而演进,而不是一次性设计完美。

详细讲解

  • 渐进改进:采用迭代式开发方法,不断改进和优化服务,随着业务需求的变化进行调整。
  • 灵活应对变化:通过微服务的独立性和灵活性,快速响应业务需求的变化,进行必要的重构和优化。
  • 例子:最初的订单服务只支持基本的订单处理功能,随着业务的发展,逐步增加订单跟踪、订单取消等功能。
总结

微服务架构的九个核心特征为系统的灵活性、独立性和可扩展性提供了强有力的支持。通过围绕业务能力构建、独立部署、去中心化治理和数据管理、自动化基础设施、容错性设计和演进式设计,微服务架构能够有效应对复杂分布式系统的挑战,提升系统的整体性能和维护效率​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《数字图像处理》实验报告一

一、实验任务与要求 1、用 matlab 编写空间域点处理操作处理给定的几幅图像,要求: 使用 imread 读取当前工作目录下的图像设计点处理操作并用代码实现处理用 imnshow 显示处理后的图像用 imwrite 保存处理后的图像 2、提交内容:m文件 实验…

ARM单片机使用CAN总线部署BootLoader

1.引言 1.1.单片机开发BootLoader意义 单片机开发BootLoader的原因主要与其在嵌入式系统中的关键作用有关。BootLoader是硬件启动的引导程序,它在操作系统内核或用户应用程序运行之前执行。以下是单片机开发BootLoader的主要原因: 初始化硬件设备&…

算法设计与分析:并查集法求图论桥问题

目录 一、实验目的 二、问题描述 三、实验要求 四、算法思想 1. 基准算法 1.1 算法思想 1.2 代码 1.3 时间复杂度 2. 使用并查集的高效算法 2.1 算法思想 2.2 代码: 2.3 时间复杂度: 五、实验结果 一、实验目的 1. 掌握图的连通性。 2. 掌…

高速公路安全新防线:护栏碰撞监测终端的应用与价值

​ ​​在现代化的高速公路管理体系中,安全始终放在第一位。随着道路上车辆密度的不断增加升,交通事故的风险也随之加剧,其中,护栏碰撞事故更是成为影响公路安全的一大隐患。为了有效减少此类事故的负面影响,提升应…

WebRTC笔记

一、 WebRTC的链接方式 1. 可以是浏览器之间的对等链接(全网状或完全分布式),那么数据就是在两个或多个浏览器之间流动 2. 可以是与媒体服务器的单一对等连接(集中混合式),这样的好处是可以扩展很大的会议,最大限度的减少新人加入时所需处理的工作量 二、 …

【嵌入式Linux】i.MX6ULL 复位中断服务函数的编写

文章目录 1. 复位中断服务函数0.1 禁止IRQ中断0.1.1 方式0.1.2 代码0.1.3 缩写说明0.1.4 PSTATE寄存器简介0.1.5 禁止IRQ中断的目的 1.1 关闭I/D Cache, MMU1.1.1 方式1.1.2 代码1.1.3 缩写说明1.1.4 关闭I/D Cache, MMU的目的 2.2 设置中断向量偏移2.2.1 方式2.2.2 代码2.2.3 …

卷积的通俗解释

以时间和空间两个维度分别理解卷积,先用文字来描述: 时间上,任何当前信号状态都是迄至当前所有信号状态的叠加;时间上,任何当前记忆状态都是迄至当前所有记忆状态的叠加;空间上,任何位置状态都…

python怎样自动提示

第一步、打开pycharm,如下图所示: 第二步、File→Power Save Mode,把下面如图所示的勾去掉: 第三步、去掉勾后,不再使用省电模式,新建一个python文件。输入单词前两个字母,就会自动提示了&#…

PAT B1041. 考试座位号

题目描述 每个PAT考生在参加考试时都会被分配两个座位号:一个是试机座位:另一个是考试座位。正常情况下,考生在入场时先得到试机座位号,入座进入试机状态后,系统会显示该考生的考试座位号,考试时考生需要换到考试座位就座。但有些考生迟到了,…

什么是空间数据

在数字孪生领域,需要汇聚、联接、融合地上地下、室内室外等多源异构数据,多源异构数据接入融合是一个复杂且关键的数据处理过程,它涉及将来自不同来源、具有不同格式和结构的数据进行有机整合,以生成一致、完整、可信且可用的数据…

为什么说大模型训练很难?

前言 在人工智能的浪潮中,大模型训练无疑是一股不可忽视的力量。然而,这背后的过程却充满了挑战与困难。今天,让我们一同揭开大模型训练的神秘面纱,探讨为何它值得您的关注与投入。 大模型训练的挑战 大模型训练之所以难&…

描述在React中集成第三方库(如Redux或React Router)的常见模式。

在React中集成第三方库,如状态管理库Redux或路由库React Router,通常遵循一些常见的模式和最佳实践。下面是一些集成这些库的步骤和模式: 集成Redux 安装Redux及相关包: 安装Redux及其中间件(如redux-thunk或redux-saga&#xf…

【数据库中的存储桶】

存储桶是对象存储系统中的一个核心概念,起源于Amazon S3(Simple Storage Service)并被其他对象存储解决方案(如MinIO、Google Cloud Storage等)广泛采用。在传统的文件系统中,我们通常使用目录和子目录来组…

选择门店收银系统要考虑哪些方面?美业系统Java源码分享私

开店前的一个重要事件就是选择门店收银软件/系统,尤其是针对美容、医美等美业门店,一个优秀专业的系统十分重要,它必须贴合门店的经营需求,提供更全面、便捷、高效的管理功能,帮助提升门店的服务质量和经营效益。 以下…

Python笔记 文件的读取操作

1.open()打开函数 再Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下 open(name,mode,encoding) name:是要打开的文件名的字符串(可以包含文件所在的具体路径) mode&…

系统集成要求

系统集成要求 投标人需要支持通过标准化方式实现院内信息系统、信息平台、数据中心、运营管理等各系统之间通过标准化数据集建设实现各系统无缝集成。系统集成包含界面集成及数据层面的集成,为方便用户使用,高度集成临床工作站操作模块,比如消…

Apple-how can i use apple account sign in my app

If you’re enabling an App ID for the first time or for a new app, enable the App ID as a primary 在Apple Developer网站上启用Apple登录服务(Sign in with Apple)。 生成Sign in with Apple的Key,以及相关的App ID配置。 注册你的应…

【几何】多少正方形?

题目枚举边长为1边长为 2 \sqrt{2} 2 ​边长为 5 \sqrt{5} 5 ​边长为 8 \sqrt{8} 8 ​边长为 13 \sqrt{13} 13 ​ 扩展-使用代码来数1、定义点对象2、定义正方形对象3、初始化所有点4、调用完整代码 题目 多少正方形? 枚举 设每个横纵相邻点得间距为1&#xff0…

AMHS工程师的作用

1、AMHS Automatic Material Handling System,自动物料搬运系统在半导体厂中扮演着至关重要的角色。它通过自动化的方式,提高了晶圆厂的空间利用率、减少了机台的闲置时间、提升了生产效率以及产品良率。随着半导体制造工艺的不断进步,特别是…

线程池概念、线程池的不同创建方式、线程池的拒绝策略

文章目录 💐线程池概念以及什么是工厂模式💐标准库中的线程池💐什么是工厂模式?💐ThreadPoolExecutor💐模拟实现线程池 💐线程池概念以及什么是工厂模式 线程的诞生是因为,频繁的创…