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

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) (进程内调用,极快) 差(网络调用,有损耗)
内存占用 (只加载一份框架) 差(多个进程加载多份框架)
开发效率 差(代码冲突严重,上线排队) (团队解耦,独立迭代)
故障恢复 差(一挂全挂) (隔离故障,降级处理)
资源利用 差(扩缩容不灵活) (按需伸缩,精准花钱)
相关推荐
laoli_coding2 小时前
系统部署之框架选型方案
微服务·云原生·架构
掘金_答案3 小时前
上线那天,一个 ConcurrentHashMap 差点送走我的 AI 客服——3 天排查 JVM 血泪史
java·后端·架构
秦任之3 小时前
Gliding Horse 整体架构拼图:当 AI Agent 有了自己的操作系统
人工智能·架构
微三云 - 廖会灵 (私域系统开发)4 小时前
电商推荐系统从0到1:协同过滤+深度学习双塔模型的架构演进与实时排序实践
人工智能·深度学习·架构
CaffeinePro5 小时前
SOLID五大设计原则:重构优雅代码与架构的底层规范
设计模式·架构
蜀道山老天师5 小时前
一文吃透 K8s:Deployment 滚动更新与版本回滚
云原生·容器·kubernetes
饼干哥哥5 小时前
Vibe Coding 出海首月收割 100+用户爆赚美金,怎么做?
后端·架构·代码规范
ting94520005 小时前
纯技术硬核解析:Timbal AI 全栈底层架构、引擎原理与生产级 AI 应用落地实现
人工智能·架构
行者全栈架构师5 小时前
大模型批量生成代码的质量衰减:为什么 AI 越写越敷衍?根因分析与系统性解决方案
后端·架构·代码规范