当前位置: 首页 > news >正文

【Redis】服务端高并发分布式结构演进之路

文章目录

  • 前景概念
  • 架构演进

现在说起服务端,经常听到的就是分布式、集群、微服务这类词汇,这些到底是什么呢?又是如何而来的呢?本篇博客记录相关学习

在这里插入图片描述

前景概念

在认识上述架构之前,需要有些前景知识

应用(Application) / 系统(System)

应用是为了完整一整套服务的一个程序,而系统是一组互相配合的程序群。
类比生活中的篮球队,中锋、后卫、自由人都是一个个应用,有各自的功能,而他们相互配合组成的队伍就是一个系统,有强大的功能

模块(Module) / 组件(Conponent)
当应用功能复杂时,可以从中分离职责,将其中具有清晰职责、内聚性强的部分抽离出来,单独为一部分
类比军队将人员分为突击小组、爆破小组、掩护小组、通信等

分布式(Distributed)

系统中的多个模块可以被部署在不同的服务器上,模块之前通过网络进行通信,这样的系统就被称为分布式系统
常见的有Web服务器和数据库分别工作在不同的服务器上,或者多个Web服务器部署在不同的服务器之上

集群(Cluster)

部署在多台服务器上的,为了实现特定目标的一个或多个组件,被称为集群
如多个MySQL工作在不同的服务器上,共同提供数据库服务

主(Master) / 从(Slave)

集群中,一般有一个程序需要承担更多的职责,称为主;其他承担附属职责的被称为从
比如MySQL集群中,外界只对一台主服务器上的MySQL进行操作(增/删/改),其他从服务器的MySQL只对主服务器作数据同步。当主服务器挂掉了,再找个从服务器顶上,变成主服务器

中间件(Middleware)

常常说“没有什么是加一层中间层解决不了的,如果有就再加一层
中间件就是互通不同技术、工具和数据库之间的桥梁,用于相互通信

架构演进

单机架构

单机架构即业务处理,数据存储都在一台服务器上,甚至单线程。此时用户访问量不大,没有对性能、安全提出很高的要求,而且系统架构简单,运维起来成本不大

在这里插入图片描述
相关软件
Web服务器:Tomcat、Netty、Nginx、Apache等
数据库:MySQL、Oracle、PostgreSQL、SQL Server等

应用数据分离架构

数据持久化往往是比较耗时的,因为磁盘IO速度较慢,当系统的访问量逐步上升后,在业务处理的时候,不希望因为数据持久而拖慢了系统的性能,此时就可以把数据库服务独立出去,成为存储服务器,将业务和存储分离

在这里插入图片描述
应用服务器通过网络访问存储服务器,虽然网络通信也比较慢,但比磁盘IO还是要快一些的,而且分离后,数据存储并不会影响应用服务器的业务处理

应用服务集群架构

当系统访问量再次上升后,可能单台应用服务器已经无法满足需求,此时有两种方案:

  • 垂直扩展 / 纵向扩展 Scale Up:购买性能更优、价格更高的服务器
  • 水平扩展 / 横向扩展 Scale Out:调整软件架构,增加应用服务器,将用户流量分摊到不同的应用服务器

集群就是水平扩展的产物,有了多台服务器,还需要对用户流量进行分流,常见的方法有:

  1. Round-Robin 轮询算法:公平地将请求依次分给不同的应用服务器。优点是不会出现有服务器没有分摊到流量的情况;缺点就是性能好的服务器没有完全发挥性能,因为是公平分配给差的和好的
  2. Weight-Round-Robin 轮询算法:为不同的服务器(比如性能不同) 赋予不同的权重(weight),解决方法1的缺点。但新的缺点是同一用户的多个请求可能分配到不同的服务器
  3. 一致哈希散列算法:通过计算用户的特征值(如IP地址)得到哈希值,根据哈希值做分发,这样同个用户的请求就可以被分配给同一个服务器。这就是专项客户经理服务

在这里插入图片描述
相关软件
负载均衡软件:Nginx、HAProxy、LVS、F5等

读写分离 / 主从分离架构

应用服务器扩展后,用户流量已经可以抗住了,但是数据库读写数据性能还不足以支撑,到一定程度后,数据的压力称为系统承载能力的瓶颈点。
如果像应用服务器一样进行纵向扩展,那么数据就会被分散,一致性无法保证。这就用到上述的主从思想
保留一个主数据库作为写入数据库,其他从数据库同步主数据库数据。因为二八定律:用户的操作20%是写,80%是读,写操作并不会那么频繁,所以可以将写数据请求全部交给主库处理,主库也一般是性能更强的服务器,读请求则分散到各个从库中,因为从库同步主库数据,所以也保证了一致性

在这里插入图片描述
应用服务器需要对读写请求做分离处理,可以利用一些数据库中间件,将请求分离的职责托管出去

相关软件
MyCat、TDDL、Amoeba、Cobar等类似数据库中间件等

冷热分离架构

引入缓存
随着访问量继续增大,发现业务中一些数据的读取频率远大于其他数据的读取频率。这部分数据被称为热点数据,与之相对的是冷数据。
为了提取读取的响应时间,可以将这些数据缓存,如此还减少了磁盘的读取开销

在这里插入图片描述
相关软件

Memcached、Redis等缓存软件

垂直分库

业务数据量再增大后,大量数据存储在同一个库中已经有些力不从心了,所以可以根据业务,对数据分别存储

在这里插入图片描述
相关软件
Greenplum、TiDB、Postgresql XC、HAWQ等,商用的如南大通用的GBase、华为的LibrA

微服务

随着业务发展,可以将业务分给不同的开发团队去维护,每个团队独立实现自己的微服务,然后互相之间对数据的直接访问进行隔离

在这里插入图片描述


以上就是本篇博客的所有内容,感谢你的阅读
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

相关文章:

  • PostSwigger 的 CSRF 漏洞总结
  • 《Learning Langchain》阅读笔记10-RAG(6)索引优化:MultiVectorRetriever方法
  • OpenSSH配置连接远程服务器MS ODBC驱动与Navicat数据库管理
  • C#学习第19天:多线程
  • 项目驱动 CAN-bus现场总线基础教程》随笔
  • C语言内敛函数
  • Redis故障防御体系:构建七层免疫系统的设计哲学
  • Selenium自动化测试+OCR-获取图片页面小说
  • OpenManus云端部署及经典案例应用
  • Monorepo、Lerna、Yarn Workspaces、pnpm Workspaces 用法
  • Revive 中的 Precompile 合约:实现与调用机制
  • Jetpack Room 使用详解
  • 【多模态模型】跨模态智能的核心技术与应用实践
  • 【误差理论与可靠性工程】蒙特卡洛法计算电路可靠度和三极管静态工作点电压
  • 新增 29 个专业,科技成为关键赛道!
  • 服务器不能复制粘贴文件的处理方式
  • 前端面试高频算法
  • AI服务器与普通服务器之间的区别
  • 电商数据采集电商,行业数据分析,平台数据获取|稳定的API接口数据
  • Linux-UDP套接字编程
  • 人社部:就业政策储备充足,将会根据形势变化及时推出
  • 超级干细胞有助改善生育治疗
  • 暴涨96%!一季度“中国游中国购”持续升温,还有更多利好
  • 13家券商一季报出炉:超七成业绩预喜,财通、湘财、第一创业下滑
  • 合肥一季度GDP为3003.88亿元,同比增长6.6%
  • 兵韬志略|美菲“肩并肩”军演超越传统范畴,凸显防务合作重大转型