什么是分布式系统?
我们应该都知道微服务是将一个大程序,才分为很多小程序。它强调按照业务能力(边界),将应用拆分成一个个独立、小型、自治的服务。
而将这些小服务部署到服务器上,它就是分布式部署。因为这些服务不在同一个进程,甚至很多不在同一个机器上。
但是那它们分别解决了什么问题?同时又带来了什么问题?
先看微服务解决了什么问题:
- 解耦业务,不用担心炸掉别人的业务。
- 独立迭代和发版,不用等所有业务完成测试,只需要测试自己的,然后独立发布部署就好。
- 技术栈自由,可以切换语言一个服务。
- 精准弹性扩缩容,对访问量大的服务多部署一些。
微服务带来的问题:
- 分布式事务
- 服务治理,雪崩,注册中心,熔断,服务发现,网关等。
- 排查问题困难,涉及到多个服务
- 开发环境配置要求高
再来看分布式部署解决了什么问题:
- 高可用(消除单点故障):一台挂了,另一台顶上,系统不宕机。
- 高性能(突破物理天花板):单台机器CPU/内存有上限,分布式可以把流量分摊到多台
- 异地容灾:把节点部署在不同机房甚至不同城市,应对地震、停电等极端灾害。
分布式部署带来的问题:
- 网络不可靠,永远要处理部分失败
- CAP定理的抉择:必须在一致性(C)、可用性(A)、分区容错(P)之间做痛苦权衡
- 运维复杂度暴增:以前维护1台机器,现在要维护成百上千台,监控、日志、部署都成了大工程。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 coder-xuyong!
评论





