分布式架构的概述

现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。

那什么是分布式系统?

分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布式文件系统分布式数据库系统等,当然这些也是分布式的关键技术。

使用分布式系统主要有:

  • 1.增大系统容量。我们的业务量越来越大,而要能应对越来越大的业务量,一台机器的性能已经无法满足了,我们需要多台机器才能应对大规模的应用场景。所以,我们需要垂直或是水平拆分业务系统,让其变成一个分布式的架构。
  • 2.加强系统可用。我们的业务越来越关键,需要提高整个系统架构的可用性,这就意味着架构中不能存在单点故障。这样,整个系统不会因为一台机器出故障而导致整体不可用。所以,需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性。
  • 3.因为模块化,所以系统模块重用度更高
  • 4.因为软件服务模块被拆分,开发和发布速度可以并行而变得更快
  • 5.系统扩展性更高
  • 6.团队协作流程也会得到改善

分布式系统的类型有三种:

  • 1.分布式处理,但只有一个总数据库,没有局部数据库
  • 2.分层式处理,每一层都有自己的数据库
  • 3.充分分散的分布式网络,没有中央控制部分,各节点之间的联系方式又可以有多种,如松散的联接,紧密的联接,动态的联接,广播通知式的联接等

然后来对比一下单体应用和分布式架构的优缺点:

传统单体框架 分布式服务化框架
新功能开发 需要时间 容易开发和实现
部署 不经常且容易部署 经常发布,部署复杂
隔离性 故障影响范围大 故障影响范围小
架构设计 难度小 难度级数增加
系统性能 响应时间快,吞吐量小 响应时间慢,吞吐量大
系统运维 运维简单 运维复杂
新人上手 研究曲线大(应用逻辑) 研究曲线大(架构逻辑)
技术 技术单一且封闭 技术多样且开放
测试和差错 简单 复杂
系统拓展性 拓展性很差 拓展性很好
系统管理 重点在于开发成本 重点在于服务治理和调度
  • 1.从上面的表格可以看到,分布式系统虽然有一些优势,但也存在一些问题
  • 2.架构设计变得复杂(尤其是其中的分布式事务)
  • 3.部署单个服务会比较快,但是如果一次部署需要多个服务,部署会变得复杂
  • 4.系统的吞吐量会变大,但是响应时间会变长
  • 5.运维复杂度会因为服务变多而变得很复杂
  • 6.架构复杂导致学习曲线变大
  • 7.测试和查错的复杂度增大
  • 8.技术可以很多样,这会带来维护和运维的复杂度
  • 9.管理分布式系统中的服务和调度变得困难和复杂

所以总结一下,分布式系统架构的难点在于系统设计,以及管理和运维。所以分布式系统架构在解决了一些问题的同时,也增加了其他的问题,这就需要不断的再用各种各样的技术跟手段去解决这些新增的问题。后续会跟上分布式系统架构的搭建以及使用。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!