分布式系统架构(一)

Feb 4, 2019

从传统的单体架构演生出的市场上常见的架构有:

  • 高并发架构
  • 异地多活架构
  • 容器化架构
  • 微服务架构
  • 高可用架构
  • 弹性化架构

和上述架构相关的管理型技术方法有:

  • DevOps
  • 应用监控
  • 自动化运维
  • SOA 服务治理
  • 去 IOE分布

使用分布式架构的原因:

  • 增大系统的容量

伴随着业务量的越来越大,单机的性能无法很好的支撑服务。通过垂直拆分水平拆分,让其变成一个分布式的架构。

  • 加强系统的可用

伴随着业务越来越重要,需要提升系统的可用性,不能存在单点故障。通过分布式架构冗余,提升系统的可用性。

分布式系统的其他优势:

  • 模块重用度更高

因为模块化,粒度更小。

  • 开发迭代更快

软件服务模块被拆分,开发和发布速度可以并行。

  • 系统扩展性更高
  • 团队协作流程也会得到改善

单体架构和分布式服务的对比:

单体架构和分布式架构的对比

分布式架构的不足:

  • 架构设计变得复杂(尤其是其中的分布式事务)。
  • 部署单个服务会比较快,但是如果一次部署需要多个服务,流程会变得复杂。
  • 系统的吞吐量会变大,但是响应时间会变长。
  • 运维复杂度会因为服务变多而变得很复杂。
  • 架构复杂导致学习曲线变大。
  • 测试和查错的复杂度增大。
  • 技术多元化,这会带来维护和运维的复杂度。
  • 管理分布式系统中的服务和调度变得困难和复杂。

分布式系统的问题

系统的不标准问题:

  • 软件和应用不标准。
  • 通讯协议不标准。
  • 数据格式不标准。
  • 开发和运维的过程和方法不标准。

服务依赖问题:

  • 如果非关键业务被关键业务所依赖,会导致非关键业务变成一个关键业务。
  • 服务依赖链中,出现“木桶短板效应”——整个 SLA 由最差的那个服务所决定。

故障概率更大:

  • 故障恢复时间过长
  • 故障影响面过大。

运维复杂度更大:

我们可以把系统分成四层:

  • 基础层

机器、网络和存储设备等。

  • 平台层

中间件层,Tomcat、MySQL、Redis、Kafka 之类的软件。

  • 应用层

业务软件,比如,各种功能的服务。

  • 接入层

接入用户请求的网关、负载均衡或是 CDN、DNS 等。

系统四层存在问题:

  • 任何一层的问题都会导致整体的问题
  • 没有统一的视图和管理,导致运维被割裂开来,造成更大的复杂度

参考

21 | 分布式系统架构的冰与火-极客时间
为什么需要分布式系统,而不是传统的单体架构。主要有两方面原因:增大系统容量和加强系统可用。
22 | 从亚马逊的实践,谈分布式系统的难点-极客时间
构建分布式服务需要从组织,到软件工程,再到技术上的一次大的改造,需要比较长的时间来磨合和改进,并不断地总结教训和成功经验。

毛俊

探索,热爱,分享。

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.