你真的了解微服务架构吗?

news2025/1/11 6:58:38

目录

写在前面 

从单体架构说起

聊到分布式架构 

聊回到微服务架构 

微服务架构的关键技术


写在前面 

随着互联网行业的快速发展,对服务的要求也越来越高,服务架构早就从原来单体架构逐渐演变为现在流行的微服务架构。  

微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年

从单体架构说起

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

单体架构(Monolithic Architecture)是一种传统的软件架构模式,将整个应用程序作为一个单一的、统一的单元进行开发、部署和扩展。在单体架构中,所有的功能模块都被打包在一起,共享同一个代码库和数据库。 

单体架构的优缺点如下:

优点:

  • 架构简单

  • 部署成本低

缺点:

  • 耦合度高(维护困难、升级困难)

复杂性高:以一个百万行级别的单体应用为例,整个项目包含的模块非常多、模块的边界模糊、 依赖关系不清晰、 代码质量参差不齐、 混乱地堆砌在一起。可想而知整个项目非常复杂。每次修改代码都心惊胆战, 甚至添加一个简单的功能, 或者修改一个Bug都会带来隐含的缺陷。 

聊到分布式架构 

分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

中级架构,分布式应用,中间层分布式+数据库分布式,是单体架构的并发扩展,将一个大的系统划分为多个业务模块,业务模块分别部署在不同的服务器上,各个业务模块之间通过接口进行数据交互。 

分布式架构的优缺点:

优点:

  • 降低服务耦合

  • 有利于服务升级和拓展

缺点:

  • 服务调用关系错综复杂

系统之间的交互要使用远程通信,接口开发增大工作量,但是利大于弊。 我们需要制定一套行之有效的标准来约束分布式架构。

聊回到微服务架构 

微服务(或称微服务架构)是一种云原生架构方法,在单个应用中包含众多松散耦合且可单独部署的小型组件或服务。 这些服务通常拥有自己的技术栈,包括数据库和数据管理模型;通过一个REST API、事件流和消息代理组合彼此通信;以及按照业务能力进行组织,具有通常称为有界上下文的服务分隔线。

微服务的架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责

  • 自治:团队独立、技术独立、数据独立,独立部署和交付

  • 面向服务:服务提供统一标准的接口,与语言和技术无关

  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

 

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。因此,可以认为微服务是一种经过良好架构设计的分布式架构方案 。

 

①优点:拆分粒度更小、服务更独立、耦合度更低

②缺点:架构非常复杂,运维、监控、部署难度提高

SpringCloud不等于微服务,他只不过是微服务中的一部分。SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

微服务拆分时的几个原则:

  • 不同微服务,不要重复开发相同业务

  • 微服务数据独立,不要访问其它微服务的数据库

  • 微服务可以将自己的业务暴露为接口,供其它微服务调用

微服务架构的关键技术

  1. 容器技术:容器技术对于微服务架构非常重要,因为它们可以将应用程序及其运行时环境打包,实现应用资源的隔离和轻量化部署。Docker 是一种广泛使用的容器化平台,可以在各种基础设施上运行。Kubernetes 则是一个流行的容器编排平台,用于自动化应用程序的部署、扩展和管理。

  2. 服务发现与注册:在微服务架构中,服务可能部署在不同的服务器和端口上。服务发现和注册中心负责管理各微服务的位置信息,使得一个微服务可以找到并与另一个微服务进行通信。一些常用的服务发现和注册框架包括 Eureka、Consul 和 etcd。

  3. API网关:API网关是一个用于处理微服务请求的入口点。它将客户端请求路由到适当的服务,并在服务之间执行负载均衡、认证、限流、熔断等功能。此外,API网关还可以实现服务聚合以减少客户端需要发起的请求数量。常见的API网关有 Zuul、Kong 和 Spring Cloud Gateway。

  4. 分布式追踪:在微服务架构中,调用链可能跨足多个服务。为了诊断潜在问题,需要能够跟踪请求在各个服务中的流转过程。分布式追踪系统采用一种称为"追踪ID"的方法,将请求在各个服务中的执行序列串联起来。常用的分布式追踪工具有 Zipkin、Jaeger 和 OpenTracing。

  5. 持续集成与持续部署:为了加速开发、测试和发布过程,实现敏捷化和自动化的微服务交付,持续集成和持续部署变得至关重要。常见的 CI/CD 工具有 Jenkins、CircleCI 和 GitLab CI。

  6. 微服务的通信方式:微服务需要一种有效、可靠且灵活的方式来相互通信。通信方式可以是同步的,如 RESTful API 或 gRPC;也可以是异步的,如消息队列(例如 RabbitMQ 或 Apache Kafka)。选择合适的通信方式取决于微服务架构中的具体需求和场景。

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

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

相关文章

代码随想录算法训练营第二十四天丨 回溯算法part02

216.组合总和III 思路 本题就是在 [1,2,3,4,5,6,7,8,9] 这个集合中找到和为n的k个数的组合。 相对于77. 组合 (opens new window),无非就是多了一个限制,本题是要找到和为n的k个数的组合,而整个集合已经是固定的了[1,...,9]。 本题k相当于…

目标跟踪数据集分享

360VOT: A New Benchmark Dataset for Omnidirectional Visual Object Tracking 360VOT 是一个新的大规模全景追踪基准数据集,旨在为全景视觉物体追踪提供支持。这个数据集包含了 120 个序列,总计超过 11.3 万张高分辨率帧,采用等距投影。追踪…

ImgPlus:基于CodeFormer的图片增强

背景 最近参与了华为云开发者大会AI赛道,做了一个AI图片增强作品,本片文章来简单介绍一下。 正文 作品名称:ImgPlus 赛题技术领域选择: AI,图片增强 使用技术名称: CodeFormer,ECS&#xff0…

NoVNC(Client)+TigerVNC(Server)搭建流程

1.NoVNC(Client)的搭建 1.1.下载 下载链接 https://github.com/novnc/noVNC/releases/tag/v1.4.0 1.2 解压 将解压后的文件放置在web应用的静态资源下 1.3 设置 -通过访问web项目静态资源的方式访问vnc.html -配置server端的访问websockify代理的ip和端口号。 -连接到服务…

Flink 的集群资源管理

集群资源管理 一、ResourceManager 概述 1、ResourceManager 作为统一的集群资源管理器,用于管理整个集群的计算资源,包括 CPU资源、内存资源等。 2、ResourceManager 负责向集群资源管理器申请容器资源启动TaskManager实例,并对TaskManag…

Modbus协议中浮点数的格式与换算

Modbus协议中浮点数(单精度)使用的是IEEE754标准浮点数(32位)的表示方法: IEEE754浮点数二进制格式示意图 1[31] 符号位(SIGN)8[23-30] 指数位(EXPONENT) 指数偏移量 12723[0-22] 尾数位(MANTISSA) 转换为10进制的公式: SGL (…

音视频技术开发周刊 | 315

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 OpenAI科学家最新演讲:GPT-4即将超越拐点,1000倍性能必定涌现! GPT-4参数规模扩大1000倍,如何实现?OpenAI科学家…

数据结构复盘——第三章:栈和队列

文章目录 第一部分:栈1、栈的定义2、栈的操作 第一部分习题第二部分:共享栈1、共享栈的定义2、共享栈的操作 第二部分习题第三部分:链栈1、链栈的定义2、链栈的操作 第三部分习题第一到三部分小结1、顺序栈和链栈的比较2、栈的应用3、栈的应用…

正向代理流程

正向代理场景 已经拿下了一台服务器,该服务器有两个网卡,一个公网,一个私网未被攻击的服务器只有一个内网网卡,它不能和其他网段通信,只能在本网段通信,被叫做不出网主机攻击机需要直接连接未被攻击的服务器…

Shopee印尼站停止销售跨境商品:电商新规是否将改变印尼电商格局?

在全球电商市场竞争激烈的背景下,东南亚地区的印尼一直以其庞大的人口和不断增长的中产阶级而闻名。这个国家拥有着无限的潜力,吸引着各大电商平台争相进军。 然而,近期,一项关于电子商务的新法规引发了广泛的讨论和关注。据报道…

竞赛选题 深度学习YOLO安检管制物品识别与检测 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov55 模型训练6 实现效果7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLO安检管制误判识别与检测 ** 该项目较为新颖,适合作为竞赛课题方向&…

C++ 快速排序算法

1、快速排序 步骤&#xff1a; 确定分界点 通常选 Q[L]、Q[(LR)/2]、Q[R]调整范围 使左边的 <X 右边 > X 也就是 左右两边的指针&#xff0c;依次比较定义的分界点&#xff08;X&#xff09;根据比较大小调整顺序 依次递归处理左右两端 模板代码&#xff1a; // 数组…

ExoPlayer架构详解与源码分析(5)——MediaSource

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

计算机毕业设计--基于SSM+Vue的物流管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Postman接口测试: postman设置接口关联,实现参数化

postman设置接口关联 在实际的接口测试中&#xff0c;后一个接口经常需要用到前一个接口返回的结果&#xff0c; 从而让后一个接口能正常执行&#xff0c;这个过程的实现称为关联。 在postman中实现关联操作的步骤如下&#xff1a; 1、利用postman获取上一个接口指定的返回值…

ICMP协议(一)

一 ICMP 说明&#xff1a; 了解大致内容即可,如果不是搞数通的只需要有个概念即可 小林 coding ① 概念 重点&#xff1a; ping、traceroute、mtr 主要是利用 ICMP 或者 UDP 的特性特点&#xff1a; ICMP 是TCP/IP协议簇的一个子协议,属于网络层 [三层]协议作用&#xff…

嵌入式开发常见的问题解决方法总结

本文引自 https://mp.weixin.qq.com/s/IBDnlzl_nFykemPxp7rt5w 一、问题复现 稳定复现问题才能正确的对问题进行定位、解决以及验证。一般来说&#xff0c;越容易复现的问题越容易解决。 (1) 模拟复现条件 有的问题存在于特定的条件下&#xff0c;只需要模拟出现问题的条件即…

外卖大数据案例

一、环境要求 HadoopHiveSparkHBase 开发环境。 二、数据描述 meituan_waimai_meishi.csv 是某外卖平台的部分外卖 SPU&#xff08;Standard Product Unit &#xff0c; 标准产品单元&#xff09;数据&#xff0c;包含了外卖平台某地区一时间的外卖信息。具体字段说明如下&am…

文件内容相关

1.查看文件 cat /etc/passwd 2.编辑文件 echo "i like dog" > qun.txt 标准输出重定向 echo "i like best cat" >> qun.txt 标准输出追加重定向 cat >> qun.txt cat >>qun.txt<< ene vim编辑 进入编辑模式 i 光标所在…

在unity中给游戏物体一个标记

标记 方便识别&#xff01; 标签&#xff08;Tag&#xff09; 引擎内部会对物体的标签建立了索引。通过标签查找物体&#xff0c;要比通过名字查找物体快得多。标签最多只能有 32个。前几个是常用标签&#xff0c;具有特定含义&#xff0c;例如玩家( Player)、主摄摄像机 (Mai…