
1.什么是微服务微服务就是把一个大型的单体应用按照业务功能拆分成多个独立的小服务每个小服务独立开发、独立部署、独立运行。微服务与高并发的区别微服务解决的是组织复杂度和系统脆弱性的问题高并发靠缓存CDN消息队列数据库优化。2.为什么微服务会有网络损耗网络延迟单体模式两个模块在同一个进程里面内存共享A想调用B直接用指针去找就行没有网络参与0.01毫秒微服务要先将需求写下来进行序列化CPU耗时---------尽量用二进制协议比JSON协议更加轻量通过网络传输TCP/HTTP可能会有物理延时网线连接网络不稳定通过网关/负载均衡找到合适的服务器反序列化操作系统内核开销耗时至少10~50毫秒3.既然在高并发性能上单体模式这么强为什么大厂会选择分布式/微服务呢当系统规模小的时候单体模式无疑是最好的选择当系统规模大到一定的临界点时人的组织效率、系统的可用性远比单次请求的极速更重要人的问题如果你选择单体模式的话如果100个开发人员在同一个系统里面进行改代码那么就会经常发生代码冲突而且他们要全部改完之后一起去提交并且如果有一个程序员改错的话整个系统就会全部崩溃。但是如果选择微服务模式他们就会将100个人拆分成10个小团队每个团队去独立开发独立部署新的功能这样子的话每个功能的隔离性会很好生产效率会大幅提高故障隔离选择单体模式就会所有代码都会跑在同一个进程中。如果单独一个模块挂掉整个网站就会全部瘫痪包括登录系统、浏览商品的功能如果选择微服务模式比如说支付服务挂掉了只影响下单支付这一个模块用户依然可以登录网站浏览商品加入购物车这些功能还在继续服务它就会大幅提高整体的可用性。资源投放的弹性伸缩单体模式的话。比如说在双11这种订单量非常大的情况下如果需要大规模地去扩张资源那么就要把就要把整个单体应用全部复制部署到多台机器上哪怕你只需要增加订单计算的CPU但是你还是要将登录商品还有库存的代码全部复制一份这样就会导致浪费了大量的内存和CPU如果你选择微服务模式订单服务压力非常大我就只扩展订单服务的10台小机器其他登录服务只保留一台。微服务就会把资源精准地投放到高需求的服务上。对比维度单体模式微服务模式性能 (RT)优进程内调用极快差网络调用有损耗内存占用优只加载一份框架差多个进程加载多份框架开发效率差代码冲突严重上线排队优团队解耦独立迭代故障恢复差一挂全挂优隔离故障降级处理资源利用差扩缩容不灵活优按需伸缩精准花钱