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

【Redis基础篇】浅谈分布式系统(一)

一、浅谈分布式系统

1. 单机架构:只有一台服务器,这个服务器负责所有的工作。

在这里插入图片描述

如果遇到了服务器不够的场景怎么处理?

  • 开源:增加更多的硬件资源
  • 节流:软件上的优化,优化代码等…
  • 一台服务器资源使用有限,就需要引更多的服务器,此时系统复杂度就会大大提高!

2. 应用服务和数据库服务分离

在这里插入图片描述

3. 引入更多的应用服务器节点

在这里插入图片描述

那上述中 负载均衡服务器 看起来承担了所有的服务请求,那么它顶得住吗?
负载均衡服务器,对于请求量的承担是远远超过应用服务器的。
这就好比:
● 负载均衡服务器是领导,负责分配任务
● 应用服务器是组员,复杂执行任务
就算请求量多到负载均衡服务器也承担不了,那就引入更多负载均衡服务器~(多个机房)

4. 数据库服务器怎么解决承担压力?

在上述中,应用服务器虽然分担了压力,但是数据库服务器仍然只有一个,那该怎么办呢?
在这里插入图片描述

主服务器一般是一个,从服务器可以有多个。(一主多从);同时从数据库中通过负载均衡的方式,让应用服务器进行访问。

5. 引入缓存

然而数据库有个天然的问题,响应速度是很慢的,因为是从硬盘中读取数据~
所以我们把数据区分为“冷热”,热点数据放到缓存中,访问的速度比数据库快很多!
在这里插入图片描述

6. 数据库如何承担更大的数据量?

上述是解决了请求量(并发量)的问题,但是数据库容量始终有限,如果出现一台服务器存不下数据该怎么办?
在这里插入图片描述

可以针对数据库进行分库分表的操作。引入多个数据库服务器,每个数据库服务器存储一个或者一部分数据库.

7. 微服务架构

之前的应用服务器,一个服务器程序做了很多事情,这可能会导致这个服务器代码越来越复杂~
为了更方便的维护,就可以把一个复杂的应用服务器拆分成更多的、更单一的服务器(微服务)
在这里插入图片描述

微服务本质上是解决了“人”的问题~
引入微服务出现的问题:
● 系统性能下降,拆出来更多的服务,多个功能之间更要依赖网络通信,网络通信的速度速度很可能比硬盘还慢!
● 系统复杂度提高,可用性受到影响,服务器,出现问题概率更高!
微服务的优势:
● 解决了“人”的问题
● 使用微服务,可以更方便于功能的复用
● 可以给不同的服务进行不同的部署

8. 总结

  1. 单机架构(应用程序+数据库服务器)
  2. 数据库和应用分离:应用程序和数据库服务器分别放到不同主机上部署
  3. 引入负载均衡:多个应用服务器之间通过负载均衡把请求比较均匀分发给集群中的每个服务器
  4. 引入读写分离,数据库主从结构:一个数据库作为主节点,其他数据库作为从节点。主节点负责 写数据,从节点负责 读数据。(主节点需要把修改过的数据同步给从节点)5
  5. 引入缓存:冷热数据分离结构,进一步提升服务器处理请求的能力 (数据库和缓存数据一致性问题)
  6. 数据库分库分表:数据库能够进一步扩展存储空间,根据具体业务
  7. 微服务架构:从业务上进一步拆分应用服务器,拆分成功能单一,更简单的服务器
http://www.lryc.cn/news/125952.html

相关文章:

  • CSS中的calc()函数有什么作用?
  • 由浅入深学习Tapable
  • YOLOv5白皮书-第Y6周:模型改进
  • word之插入尾注+快速回到刚才编辑的地方
  • Qt扫盲-QTableView理论总结
  • 从外部访问K8s中Pod的五种方式
  • 什么是A股交易接口_(股票交易c接口)开发原理
  • STM32F4X NVIC中断概念
  • 关于consul的下载方法
  • 应用在汽车前照灯系统中的环境光传感芯片
  • Python Flask+Echarts+sklearn+MySQL(评论情感分析、用户推荐、BI报表)项目分享
  • 开源项目-高校自动排课系统
  • IP网络广播系统草坪音箱景区系统防水石头,草坪音箱的应用
  • 拒绝摆烂!C语言练习打卡第二天
  • 第四章:前端框架Vue基础入门
  • 企业权限管理(十三)-用户关联角色操作
  • 深入理解Vue 3.0x中的Suspense和异步组件
  • Ajax 笔记(三)—— Ajax 原理
  • el-tree通过default-expand-all动态控制展开/折叠
  • 基于Bsdiff差分算法的汽车OTA升级技术研究(学习)
  • 如何使用CSS实现一个纯CSS的滚动条样式?
  • 使用维纳过滤器消除驾驶舱噪音(Matlab代码实现)
  • vue所有UI库通用)tree-select 下拉多选(设置 maxTagPlaceholder 隐藏 tag 时显示的内容,支持鼠标悬浮展示更多
  • 进行 200 瓦太阳能 (PV) 模块设计以测量太阳能光伏阵列的电压、电流和功率、综合负荷频率和电压控制系统的方法研究(Simulink实现)
  • 实战:工作中对并发问题的处理 | 京东物流技术团队
  • 解决VSCode CPU高占问题的方法
  • tensorflow 1.x和3090、cuda部署
  • vue-photo-preview( 照片预览功能 )
  • Angular 独立组件入门
  • Lie group 专题:Lie 群