美文网首页
分布式系统架构的演进

分布式系统架构的演进

作者: 右耳菌 | 来源:发表于2022-11-18 16:40 被阅读0次

1. 大型互联网分布式系统架构演进之路

以一个网站为例:

  • 网站一开始就是大型的吗?

  • 我们应该一开始就设计一个大型的网站吗?

否: 耗时,导致产品出现滞后。

1.1 初生
1.2 发展问题

随着网站业务的发展,越来越多的用户访问,面临的问题

  • 性能越来越差
  • 越来越多的数据导致存储空间不足
1.3 应用服务于数据服务分离

能带来什么好处?

服务器对应不同的硬件需求

应用服务器:需要更快更强大的CPU(处理大量的业务逻辑)
数据库服务器:需要更快的硬盘和更大的内存(快速磁盘检索和数据缓存)
文件服务器:需要更大的硬盘(存储大量用户上传的文件)

1.4 再次面临发展问题

随着用户逐渐增多,网站再次面临挑战:
数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验受到影响!

1.5 使用缓存改善性能
1.6 随着用户增多,再次面临发展问题

随着用户逐渐增多,单一应用服务器面临新的问题:
能够处理的请求连接有限,网站访问高峰期,应用服务器成为整个网站的瓶颈。

1.7 应用服务集群

使用应用服务器集群 — 改善网站的并发处理能力

为什么不用更强的服务器? 硬件的提升有瓶颈,但是集群可以不停扩展。
负载均衡的实现方式有哪些?

1.8 再遇发展问题

使用缓存后,虽然大大减轻了数据库的读压力,但是面临新的问题:

有一部分读操作(缓存访问不命中,缓存过期)和全部的写操作要访问数据库,当用户达到一定规模后,数据库因为负载压力过高而成为整个系统的瓶颈。

1.9 数据库读写分离

数据访问模块怎么做?

1.10 发展问题

用户规模越来越大,发布地域越来越广,地域网络环境差别很大,面临问题:如何保证用户的访问体验,不至于因访问慢而流失用户?

1.11 反向代理和CDN加速

能带来什么好处?

  • 加快用户访问响应速度
  • 减轻后端服务器的负载压力
1.12 发展问题

单文件服务器、但数据库服务器,面临问题:存不下日益增长的数据

1.13 分布式文件系统和分布式数据库系统

使用分布式文件系统和分布式数据库系统(分库分表)


分布式文件系统怎么做?分库分表怎么做?

1.14 继续发展,还是会面临问题

随着业务的发展,数据的存储需求和检索需求越来越复杂,面临的问题:

  • 存储的字段差异较大,骷髅表
  • 复杂的文本检索
1.15 使用NoSQL、搜索引擎

搜索引擎用什么?NoSQL用什么?

1.16 发展问题

网站越做越好,业务不断扩大,越来越复杂,面临的问题:
应用程序将变得无比庞大,迭代周期越来越快,牵一发而动全身,怎么应对快速的业务发展需要?

1.17 业务拆分

如大型电商网站会将首页、商铺、订单、买家等拆分成不同的产品线,分归不同的团队负责,分成不同的应用,独立部署。通过链接、MQ、数据存储系统建立关联。


1.18 发展问题

业务规模不断增大,应用拆分越来越小,越来越多,面临的问题:

应用间的关系越来越复杂,应用中存在大量相同的业务操作。
后端的数据库要被成千上万台应用服务器连接,数据库连接资源不足。

1.19 分布式服务(服务化)
1.20 发展问题

后续还会面临什么?还需要什么呢?
数据挖掘、分析、推荐等业务需求,庞大系统的监控、问题分析等需求。

1.21 大数据技术、监控、日志分析系统

2 架构设计思想总结

  • 分而治之
  • 随网站所需灵活应对
  • 业务发展驱动技术发展,技术发展反哺业务!
  • 软件系统的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的!

3.架构设计的误区
  • 一味追随大公司的解决方案
  • 为了技术而技术
  • 企图用技术解决所有问题

技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段去解决。


如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~

相关文章

网友评论

      本文标题:分布式系统架构的演进

      本文链接:https://www.haomeiwen.com/subject/rarmxdtx.html