从读写分离到分布式服务:系统架构演进十阶段深度解析

第一阶段到第四阶段:架构进化四阶段:探索单体到集群的高可用性能优化之道-CSDN博客https://blog.csdn.net/pinbodeshaonian/article/details/147464084?spm=1001.2014.3001.5502

以下是对从第五阶段到第十阶段详细的解释:

第五阶段:数据库读写分离

1.原理
  • 利用数据库的主从复制机制,将主数据库(Master)的写操作记录通过日志等方式同步到从数据库(Slave)。主数据库负责处理所有的写请求,如 INSERT、UPDATE、DELETE 等操作,确保数据的一致性和完整性。从数据库则实时复制主数据库的数据,并提供读服务,处理 SELECT 等查询请求。这样,写操作和读操作被分别分配到不同的数据库服务器上,实现了读写分离。
2.作用
  • 提升性能:在高并发场景下,大量的读请求会占用数据库的资源,影响写操作的执行效率。通过读写分离,读请求由从数据库处理,减轻了主数据库的负担,使主数据库能够更专注于写操作,从而提高了整个系统的并发处理能力和响应速度。例如,在一个电商网站中,商品浏览等读操作远远多于订单提交等写操作,将读操作分散到从数据库可以避免主数据库因大量读请求而出现性能瓶颈。
  • 增强可靠性:从数据库作为主数据库的副本,提供了数据的冗余备份。如果主数据库出现故障,系统可以快速切换到从数据库,继续提供服务,保证数据的可用性和系统的稳定性,降低了因单点故障导致系统瘫痪的风险。

主从数据库结构特点

1、一般:一主多从,也可也多主多从。

2、主库 操作,从库操作。
主从复制步骤

1、主库(Master)更新数据完成前,将操作写入binlog日志文件。

2、从库(Slave)打开I/O线程与主库连接,做binlog dump process,并将事件写入中继日志。

3、从库执行中继日志事件,保持与主库一致。

第六阶段:使用反向代理和 CDN 加速网站响应

1.反向代理
  • 工作原理:反向代理服务器位于 Web 服务器前端,充当着客户端与后端服务器之间的中介。当客户端发送请求到服务器时,请求首先到达反向代理服务器。反向代理服务器根据预设的规则,如根据请求的 URL、服务器的负载情况等,将请求转发到后端合适的真实服务器上处理。对于客户端来说,它并不知道自己访问的是反向代理服务器,以为就是直接访问到了目标服务器,反向代理服务器对客户端隐藏了后端服务器的真实架构和细节。
  • 功能作用:除了隐藏后端服务器信息外,反向代理还具有负载均衡的功能。它可以根据后端服务器的性能和负载状况,将请求均匀地分配到不同的服务器上,避免某台服务器负载过高而其他服务器闲置的情况,提高了整个系统的资源利用率和可用性。同时,反向代理还可以对请求进行缓存,对于一些经常访问的静态资源或动态页面的部分内容进行缓存,当有相同的请求再次到来时,直接从缓存中返回数据,减少了后端服务器的处理压力,进一步提高了响应速度。
2.CDN(内容分发网络)
  • 架构与原理:CDN 是一个由分布在不同地理位置的服务器节点组成的分布式网络。它通过智能的内容缓存和分发机制,根据用户的地理位置、网络状况以及内容的热度等因素,将内容缓存到距离用户最近的节点服务器上。当用户请求访问某个网站的内容时,CDN 系统会自动判断用户的位置,并将用户的请求路由到距离用户最近且拥有该内容缓存的节点服务器上,让用户从该节点获取数据,而不是从网站的源服务器获取。
  • 加速效果:CDN 主要用于缓存静态资源,如图片、脚本、样式表、视频等。由于这些资源通常占据了网站加载时间的大部分,通过 CDN 的缓存和就近分发,可以大大减少数据在网络中的传输距离和时间,显著加快网站的加载速度,提高用户体验。例如,对于一个全球范围内的电商网站,用户在访问商品详情页面时,图片等静态资源可以从距离用户最近的 CDN 节点获取,而无需从位于其他地区的源服务器下载,从而大大缩短了页面的加载时间。

CDN和反向代理都使用了缓存机制

第七阶段:使用分布式文件系统和分布式数据库系统

1.分布式文件系统
  • 架构与原理:分布式文件系统将文件分割成多个数据块,并将这些数据块分散存储在多个不同的服务器节点上。同时,它通过一个元数据服务器来管理文件的元数据信息,如文件的目录结构、数据块的存储位置等。当用户请求访问文件时,首先向元数据服务器查询文件的元数据,获取数据块的存储位置信息,然后直接从相应的存储节点读取数据块,再将这些数据块组合成完整的文件返回给用户。分布式文件系统还具备数据冗余和容错机制,通过将数据块复制到多个节点上,确保在某个节点出现故障时,数据不会丢失,可以从其他副本节点获取数据。
  • 应用场景与优势:适用于大规模数据存储和处理的场景,如互联网公司的日志存储、视频网站的视频文件存储等。它提供了高可扩展性,可以方便地通过增加节点来扩展存储容量和性能。同时,多个节点可以并行处理文件的读写请求,大大提高了文件系统的吞吐量和读写速度。例如,在一个大型数据中心中,分布式文件系统可以管理海量的服务器日志文件,支持快速的日志查询和分析,并且能够随着业务的增长轻松扩展存储能力。
2.分布式数据库系统
  • 架构与原理:分布式数据库系统将数据库中的数据按照一定的规则分布存储在多个节点上,这些节点可以是不同的服务器或计算机。数据的分布方式可以基于数据的范围、哈希值等进行划分。同时,分布式数据库系统通过分布式事务处理机制来保证数据在多个节点之间的一致性和完整性。当进行数据操作时,系统会协调各个节点共同完成事务,确保数据的正确性。此外,分布式数据库系统还具备自动的数据复制和故障转移功能,以提高系统的可靠性和可用性。
  • 应用场景与优势:用于处理大规模的结构化数据和高并发的业务请求,如大型电商平台的订单数据、社交网络的用户关系数据等。它能够突破单机数据库在存储容量和处理能力上的限制,通过增加节点实现性能的线性扩展。例如,当电商平台的订单量不断增长时,分布式数据库系统可以通过添加节点来轻松应对日益增长的数据量和并发请求,保证系统的稳定运行和快速响应。

第八阶段:使用 NoSQL 和搜索引擎

1.NoSQL(非关系型数据库)
  • 类型与特点:NoSQL 数据库有多种类型,常见的包括键值对数据库(如 Redis)、文档数据库(如 MongoDB)、列存储数据库(如 Cassandra)和图数据库(如 Neo4j)等。键值对数据库以简单的键值对形式存储数据,读写速度极快,适用于缓存、实时数据处理等场景。文档数据库以文档的形式存储数据,数据结构更加灵活,适合存储半结构化的数据,如 JSON 格式的文档,常用于内容管理系统、移动应用等场景。列存储数据库则将数据按列进行存储,适合处理大规模的数据分析和处理任务。图数据库用于存储和处理具有复杂关系的数据,如社交网络中的人际关系、知识图谱等。
  • 应用场景:NoSQL 数据库在处理非结构化或半结构化数据、高并发读写以及对数据模型灵活性要求较高的场景中表现出色。例如,在实时通信应用中,使用 Redis 作为缓存来存储用户的在线状态、消息队列等数据,可以快速响应用户的请求。在内容管理系统中,MongoDB 可以方便地存储和管理各种类型的文档内容,无需事先定义严格的表结构。
2.搜索引擎
  • 工作原理:搜索引擎首先会对网站的文本内容进行抓取和索引。它通过网络爬虫程序遍历网站的页面,提取其中的文字信息,并对这些信息进行分析和处理,建立索引数据结构。索引中包含了关键词与文档之间的映射关系,以及文档的相关元数据。当用户在搜索框中输入关键词时,搜索引擎会在索引中快速查找匹配的文档,并根据相关性和其他因素对搜索结果进行排序,然后将最相关的文档列表返回给用户。
  • 应用场景:在各种网站和应用中,搜索引擎用于帮助用户快速查找所需的信息,如文章、产品、用户生成的内容等。例如,在电商网站中,用户可以通过搜索引擎查找特定的商品;在企业内部的知识管理系统中,员工可以使用搜索引擎快速找到相关的文档和资料,提高信息检索的效率和准确性,提升用户体验。

第九阶段:业务拆分

1.概念与方法

业务拆分是将一个庞大复杂的单体应用,按照不同的业务功能、模块或领域,拆分成多个相对独立的子系统或微服务。拆分的方法可以根据业务的边界进行划分,例如将电商系统拆分成商品管理、订单管理、用户管理、支付管理等微服务。每个微服务都有自己独立的数据库、业务逻辑和接口,它们之间通过轻量级的通信机制进行交互,如 RESTful API。

2.优势与挑战
  • 优势:首先,降低了系统的复杂度。每个微服务的功能相对单一,代码规模较小,便于开发、测试和维护。不同的团队可以专注于不同的微服务开发,提高了开发效率和代码质量。其次,提高了系统的可扩展性。当某个微服务的业务需求增长时,可以独立地对该微服务进行扩展,增加服务器资源或添加新的服务实例,而不会影响到其他微服务。此外,业务拆分还增强了系统的灵活性和可维护性。当某个业务功能发生变化时,只需对相应的微服务进行修改和部署,不会对整个系统造成大规模的影响。
  • 挑战:微服务架构也带来了一些挑战,如服务之间的通信和协作变得更加复杂,需要合理设计通信协议和接口,以确保服务之间的高效交互。同时,分布式系统的运维难度增加,需要对多个微服务进行统一的监控、管理和故障排查。

第十阶段:分布式服务

1.架构与原理

分布式服务架构是基于微服务架构的进一步发展,将业务功能以服务的形式进行封装和部署,这些服务分布在不同的服务器上,并通过网络进行通信和协作。每个服务都有自己独立的生命周期和运行环境,可以根据业务需求独立地进行水平扩展,即增加或减少服务实例的数量。分布式服务架构通常采用服务治理框架来管理服务,包括服务的注册与发现、负载均衡、容错处理、流量控制等功能。服务提供者将自己的服务注册到服务注册中心,服务消费者通过服务注册中心查找所需的服务,并通过负载均衡算法选择合适的服务实例进行调用。

2.特点与应用
  • 特点:分布式服务架构具有高度的灵活性和可扩展性。它可以根据不同的业务场景和流量变化,动态地调整服务的部署和资源分配,实现资源的高效利用。同时,它提供了强大的容错机制,当某个服务实例出现故障时,服务治理框架可以自动将请求转发到其他健康的服务实例上,保证系统的高可用性。此外,通过对服务的监控和管理,可以及时发现和解决服务中的问题,提高系统的稳定性和可靠性。
  • 应用:适用于大型复杂的分布式系统,如互联网电商平台、金融科技系统等。例如,在电商平台中,订单服务、库存服务、物流服务等可以作为独立的分布式服务进行部署和管理。在促销活动等高峰时段,可以根据业务流量动态地扩展订单服务和库存服务的实例数量,以应对高并发的请求,保证系统的稳定运行和快速响应。
相关推荐
冉冰学姐3 小时前
SSM装修服务网站5ff59(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·装修服务网站
库库8393 小时前
Redis分布式锁、Redisson及Redis红锁知识点总结
数据库·redis·分布式
沧澜sincerely3 小时前
Redis 缓存模式与注解缓存
数据库·redis·缓存
Elastic 中国社区官方博客4 小时前
Elasticsearch 推理 API 增加了开放的可定制服务
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
nzxzn4 小时前
MYSQL第二次作业
数据库·mysql
核桃杏仁粉4 小时前
excel拼接数据库
数据库·oracle·excel
TiAmo zhang5 小时前
SQL Server 2019实验 │ 设计数据库的完整性
数据库·sqlserver
冻咸鱼5 小时前
MySQL的CRUD
数据库·mysql·oracle
Funny Valentine-js5 小时前
团队作业——概要设计和数据库设计
数据库
CodeJourney.5 小时前
SQL提数与数据分析指南
数据库·信息可视化·数据分析