【关于微服务的深入理解】

1.什么是微服务?

微服务就是把一个大型的单体应用,按照业务功能拆分成多个独立的小服务,每个小服务独立开发、独立部署、独立运行。微服务与高并发的区别?

微服务解决的是:组织复杂度和系统脆弱性的问题

高并发:靠缓存,CDN,消息队列,数据库优化。

2.为什么微服务会有网络损耗,网络延迟?

单体模式:两个模块在同一个进程里面,内存共享,A想调用B,直接用指针去找就行,没有网络参与

0.01毫秒

微服务:

  1. 要先将需求写下来(进行序列化)CPU耗时 --------->尽量用二进制协议,比JSON协议更加轻量

  2. 通过网络传输(TCP/HTTP)可能会有物理延时,网线连接,网络不稳定

  3. 通过网关/负载均衡

  4. 找到合适的服务器,反序列化

    操作系统内核开销:

耗时至少10~50毫秒

3.既然在高并发性能上单体模式这么强,为什么大厂会选择分布式/微服务呢?

当系统规模小的时候,单体模式无疑是最好的选择

当系统规模大 到一定的临界点时:人的组织效率 、系统的可用性远比单次请求的极速更重要

人的问题:

如果你选择单体模式的话,如果100个开发人员在同一个系统里面进行改代码,那么就会经常发生代码冲突,而且他们要全部改完之后一起去提交,并且如果有一个程序员改错的话,整个系统就会全部崩溃。

但是如果选择微服务模式,他们就会将100个人拆分成10个小团队,每个团队去独立开发,独立部署新的功能,这样子的话,每个功能的隔离性会很好,生产效率会大幅提高

故障隔离:

选择单体模式就会所有代码都会跑在同一个进程中。如果单独一个模块挂掉,整个网站就会全部瘫痪(包括登录系统、浏览商品的功能)

如果选择微服务模式,比如说支付服务挂掉了,只影响下单支付这一个模块,用户依然可以登录网站浏览商品,加入购物车,这些功能还在继续服务,它就会大幅提高整体的可用性。

资源投放的弹性伸缩:

单体模式的话。比如说在双11这种订单量非常大的情况下,如果需要大规模地去扩张资源,那么就要把就要把整个单体应用全部复制部署到多台机器上,哪怕你只需要增加订单计算的CPU,但是你还是要将登录商品还有库存的代码全部复制一份,这样就会导致浪费了大量的内存和CPU

如果你选择微服务模式,订单服务压力非常大,我就只扩展订单服务的10台小机器,其他登录服务只保留一台。微服务就会把资源精准地投放到高需求的服务上。

对比维度 单体模式 微服务模式
性能 (RT) 优(进程内调用,极快) 差(网络调用,有损耗)
内存占用 优(只加载一份框架) 差(多个进程加载多份框架)
开发效率 差(代码冲突严重,上线排队) 优(团队解耦,独立迭代)
故障恢复 差(一挂全挂) 优(隔离故障,降级处理)
资源利用 差(扩缩容不灵活) 优(按需伸缩,精准花钱)
相关推荐
晚安code21 分钟前
RPC 到底是什么:微服务内部调用的首选,以及它藏起来的三个坑
微服务·rpc
晚安code23 分钟前
微服务架构和单体架构的区别:拆之前你得先想清楚这件事
微服务·架构
东方佑1 小时前
v24 (Hybrid2Fast) 架构与实验报告
人工智能·深度学习·语言模型·自然语言处理·架构
狂奔蜗牛(bradley)2 小时前
把 EtherCAT 初始化从 FPGA 搬到 ARM:命令通道的接口设计与11个坑
arm开发·人工智能·fpga开发·架构
念何架构之路2 小时前
zap WriteSyncer与Sink体系
云原生·golang
Erishen3 小时前
51个指标 × 5000只股票:全市场技术扫描的工程实践
架构
vx_Biye_Design5 小时前
django就业信息推荐系统61953-计算机课程设计、毕业设计
java·vue.js·spring boot·python·架构·django·课程设计
七夜zippoe5 小时前
多 Agent 协作架构:Pipeline 模式——串行流水线设计与实战
ai·架构·pipeline·agent·串行流水线
EatFan6 小时前
从云原生到AI原生:2026后端架构“三驾马车”(事件驱动、虚拟线程、AI Agent内嵌)演进解析
spring boot·云原生·架构·虚拟线程·ai-native·ai agent·spring ai
龙亘川6 小时前
探索智慧文化服务:建设初衷、整体架构、技术支撑、发展现状与实践影响
大数据·数据库·架构