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

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) 优(进程内调用,极快) 差(网络调用,有损耗)
内存占用 优(只加载一份框架) 差(多个进程加载多份框架)
开发效率 差(代码冲突严重,上线排队) 优(团队解耦,独立迭代)
故障恢复 差(一挂全挂) 优(隔离故障,降级处理)
资源利用 差(扩缩容不灵活) 优(按需伸缩,精准花钱)
相关推荐
4SAPI9 小时前
AI 数据分析工具大模型 API 选型指南
大数据·人工智能·架构·php·1024程序员节
4SAPI10 小时前
搭建 AI 数据分析工具大模型 API 选型指南
数据库·人工智能·架构·php·1024程序员节
行者全栈架构师11 小时前
【鸿蒙心迹】让老照片变清晰:HarmonyOS 7.0 图像超分相册工程化落地与 5 个踩坑解法
架构·前端框架·开源
再__努力1点11 小时前
RK3576/RV1126B多路视频 AI 开源引擎 CosmoEdge:从模型到交付,轻松搞定!
人工智能·opencv·计算机视觉·架构·课程设计
用户0942485680311 小时前
第7章:Redis有序集合 ZSet 实战:排行榜与延时任务
redis·架构·源码
欣欣之王来了11 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
孔令飞11 小时前
工具分享:OneX AI 工具安装、配置及功能介绍
云原生·go·ai编程
阿文和她的Key13 小时前
PHP2Shell事故四层拆解:AI找洞是小时级,披露协调还是邮件级
网络·人工智能·架构·php
forest_0914 小时前
用Python复刻ClaudeDuet:主动式Agent四件套,定时晨报、后台巡检、危险动作审批(附完整可运行代码)
人工智能·python·架构·prompt·agi
分布式存储与RustFS14 小时前
机器要下线,数据先线上搬家:RustFS 存储池退役实操
运维·云原生·开源·对象存储·分布式存储·s3·性能基准