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

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) (进程内调用,极快) 差(网络调用,有损耗)
内存占用 (只加载一份框架) 差(多个进程加载多份框架)
开发效率 差(代码冲突严重,上线排队) (团队解耦,独立迭代)
故障恢复 差(一挂全挂) (隔离故障,降级处理)
资源利用 差(扩缩容不灵活) (按需伸缩,精准花钱)
相关推荐
Safeploy安策数据23 分钟前
密钥管理入门:从泄漏复盘看企业如何守住密钥安全底线
大数据·运维·微服务
闲云野鹤在人间37 分钟前
Docker入门|第2章 容器架构详解
linux·运维·docker·容器·架构·云计算
huizhulihuiwu37 分钟前
会务管理系统解决方案怎么选?轻量化架构能解决哪些办会痛点?
架构
谷哥的小弟1 小时前
微服务开发版本适配说明
spring cloud·微服务
小牛马爱写博客1 小时前
K8s 中部署WordPress 博客
云原生·容器·kubernetes
海宇大数据2 小时前
分布式网关架构实战:基于海宇数据公安二要素认证即时版构建自动化司机准入网关
人工智能·分布式·架构·自动化
艾莉丝努力练剑2 小时前
【AI大模型接入SDK】LLMManager类架构与智能指针选型
网络·c++·人工智能·学习·面试·架构
汪碧康2 小时前
xkube-v4.3版本的安全性进行了增强
docker·云原生·容器·kubernetes·xkube
mldong3 小时前
Python 开发者也有自己的轻量工作流引擎了:pip install 一行,5 分钟跑通一条审批流
后端·python·架构
海宇服务11 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化供应商准入网关
运维·人工智能·架构·自动化