分布式系统架构和传统单体架构的区别是什么?分布式架构思想实践的先行者亚马逊AWS是如何做的?分布式系统中需要注意的问题有哪些?

打卡Day1:今天学习了《21|分布式系统架构的冰与火》和《22|从亚马逊的实践,谈分布式系统的难点》,我的收获如下:

分布式系统架构的冰与火

  1. 使用分布式系统主要原因包括:增大系统容量;加强系统可用。
  2. 分布式系统并不是完美的技术方案,解决了问题的同时会带来其他问题,没有银弹,对于架构师来说是一种权衡。
  3. 分布式系统和传统单体架构相比。优点是解决了“单点”和“性能容量”问题;缺点是系统设计、管理和运维变得困难和复杂。

分布式系统的发展

分布式系统大体经历了单体架构、SOA架构和微服务架构三个阶段。

微服务架构需要好的微服务PaaS平台来支撑,简化集成测试、运维和服务管理。

分布式架构思想实践先行者

分布式架构思想实践最早的公司是亚马逊,早在2002年就颁布了很有前瞻性的几条架构规定,最重要的一条:所有程序模块都要通过接口来访问数据。AWS由此诞生。

亚马逊在运维分布式服务有几点值得借鉴:

  1. 分布式团队架构。
  2. 严重故障整体查错。
  3. 开发人员做所有事情(测试、运维)。
  4. 崇尚简化和自动化。
  5. 内部服务和外部服务一致对待。

分布式服务架构是需要从组织,到软件工程,再到技术上的一个大的改造,需要比较长的时间来磨合和改进。

分布式系统中需要注意的问题

  1. 分布式系统构建最好统一编程语言。避免异构系统带来的各种不标准问题,简化开发、测试和运维标准。
  2. 分布式系统需要定义出关键服务调用的主要路径,为运维提供管理依据。不但要拆分服务,还要为每个服务拆分相应的数据库。
  3. 分布式系统出现故障不可怕,故障恢复时间过长或影响面过大才可怕。监控指标不需要太多,SLA要求我们定义出关键指标。在设计或运维系统时都要考虑如何减轻故障,争取做到,人管代码,代码管机器,人不管机器。
  4. 系统通常可分为四层:基础层、平台层、应用层和接入层。任何一层的问题都会导致整体的问题,需要有统一的视图和管理降低运维复杂度。多层架构的运维分工,一定要重视协作是否统一和规范。

左耳朵耗子带你重学《左耳听风》

https://time.geekbang.org/column/article/1411

https://time.geekbang.org/column/article/1505