21 | 分布式系统架构的冰与火
陈皓
该思维导图由 AI 生成,仅供参考
你好,我是陈皓,网名左耳朵耗子。
最近几年,我们一直在谈论各式各样的架构,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等。还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等。面对这么多纷乱的技术,我看到很多团队或是公司都是一个一个地去做这些技术,非常辛苦,也非常累。这样的做法就像我们在撑开一张网里面一个一个的网眼。
其实,只要我们能够找到这张网的“纲”,我们就能比较方便和自如地打开整张网了。那么,这张“分布式大网”的总线——“纲”在哪里呢?我希望通过这一系列文章可以让你找到这个“纲”,从而能让你更好更有效率地做好架构和工程。
分布式系统架构的冰与火
首先,我们需要阐述一下为什么需要分布式系统,而不是传统的单体架构。也许这对你来说已经不是什么问题了,但是请允许我在这里重新说明一下。使用分布式系统主要有两方面原因。
增大系统容量。我们的业务量越来越大,而要能应对越来越大的业务量,一台机器的性能已经无法满足了,我们需要多台机器才能应对大规模的应用场景。所以,我们需要垂直或是水平拆分业务系统,让其变成一个分布式的架构。
加强系统可用。我们的业务越来越关键,需要提高整个系统架构的可用性,这就意味着架构中不能存在单点故障。这样,整个系统不会因为一台机器出故障而导致整体不可用。所以,需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
分布式系统架构是当今技术领域的热点话题,左耳朵耗子在本文中深入探讨了分布式系统架构的发展历程和技术特点。文章首先阐述了为什么需要分布式系统,指出分布式系统的出现是为了增大系统容量和加强系统可用性。然后,文章对比了单体应用和分布式架构的优缺点,指出分布式系统架构的复杂性和难点,以及带来的管理和运维挑战。接着,文章介绍了分布式系统的发展历程,从模块化编程到面向服务的架构,再到微服务架构的演化过程,阐述了各个阶段的特点和演变。最后,文章提出了下一节课的内容,并邀请读者分享在进行分布式系统开发中遇到的问题和难点。通过本文,读者可以了解到分布式系统架构的技术特点和发展历程,以及在实际开发中可能遇到的挑战和应对方案。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》,新⼈⾸单¥98
《左耳听风》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(77)
- 最新
- 精选
- krugle可不可以讲一些架构设计的基础,很多概念都不清楚,网上的概念也不统一
作者回复: 后面有相应的设计模式系列
2018-03-143 - 湖心亭看雪能不能讲讲微服务的调用链追踪呢?
作者回复: 请关注后继文章
2017-12-151 - AI微服务通常根据业务来划分边界,粒度通常是一个独立的业务,具体多大合适不是一开始就决定的,这是一个逐步拆分细化的过程,李智慧老师说任何复杂的架构都是从最简单的应用慢慢演化过来的,就像当年的淘宝发展到现在。单体应用,为了高可用,需要集群多实例部署。查询太慢,访问太慢,加缓存,DB读写分离。业务发展到一定复杂程度,单体应用太庞大,会产生一系列问题。例如开发方面,一个工程几十上百人不停的改动,如何协作,一个人的代码有问题,影响了所有业务。每一个版本的迭代与发布,开发、测试、沟通得花大把时间,可能还会出错,牵一发而可能动全身。运维上,发布一次可以睡个午觉,发布一次影响线上所有功能。资源方面,扩容到几十上百台机器的时候,DB、NoSQL等的连接数撑爆了……2017-12-1187
- caoxile我遇到的比较麻烦的就是数据一致性问题。一个操作需要调用好几个服务,后面的服务异常,前面的服务怎么回滚,如何保证事务。2017-12-07253
- 钱阅后留痕 单机在中间,往下研究是多线程高并发,往上研究是分布式高并发,往下是线程级别,往上是进程,集群级别,不过他们的根本是为了速度,为了快,为了快点将任务做完。 1:什么是分布式? 我认为相对单机而言,分布式至少是多机部署,多机共同分担任务处理 2:分布式核心解决的问题是什么? 我认为本质如浩哥所言,一是增加系统容量,二是实现系统高可用,其他还有并行开发、服务解耦 3:分布式引入的问题是什么? 数据不一致性,测试、运维复杂,排障链路长 4:分布式实现的难点是什么? CAP 5:目前有哪些分布式的最佳实践? 不太清楚? 6:分布式必备技术有哪些? RPC、MQ、各种集群存储系统、负载均衡、容器化部署2018-12-29230
- whhbbq服务化过程中代码层面需要注意以下几点1.序列化。接口的入参出参需要序列化;之前在单体应用中适用的service接口,可能不适用远程调用,需要改造,如匿名函数作为参数的接口。2.既当入参又当出参的接口,在服务化后,不再适用,需要改造。即调用更新接口后,需要调用查询接口以返回正确的值。3.服务化后,要考虑写接口是否是幂等。4.考虑接口超时,设置合理的超时时间。2017-12-2417
- zeroxus将SOA架构描述成 IoC(控制反转)和 DIP(依赖倒置原则)设计思想在架构中的实践,真的直击本质啊,眼前一亮。2019-08-1016
- 左耳朵@ lfn 当然不是2017-12-0711
- bullboying公司的新产品研发基本上是沿着分布式,微服务这个路线发展的,我们的产品是行业软件,to b的,发现分布式之后定制研发成本增加了不少,另外可能很多客户的体量还达不到需要部署微服务的程度,没法平摊越来越高的运维成本,所以最新的版本同时保留了单体应用和微服务架构两个方向的产品,适应不同的客户要求。这种一国两制的方式应该是挺正确的选择。 虽然微服务是将来的方向,如果只是一套系统自己运维,客户是自己,那自然是没得选。如果是离岸交付,那还是要权衡一下迈进的速度。2017-12-0711
- 左耳朵@ helloworld 关于技术细节,我会单开另一个系列讲各种Pattern。敬请期待。2017-12-0710
收起评论