【Redis 系列】分布式系统详细解说

新星杯·14天创作挑战营·第17期 10w+人浏览 586人参与


🚀 欢迎来到我的优快云博客:Optimistic _ chen
一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!


🚀我的专栏推荐

专栏内容特色适合人群
🔥C语言从入门到精通系统讲解基础语法、指针、内存管理、项目实战零基础新手、考研党、复习
🔥Java基础语法系统解释了基础语法、类与对象、继承Java初学者
🔥Java核心技术面向对象、集合框架、多线程、网络编程、新特性解析有一定语法基础的开发者
🔥Java EE 进阶实战Servlet、JSP、SpringBoot、MyBatis、项目案例拆解想快速入门Java Web开发的同学
🔥Java数据结构与算法图解数据结构、LeetCode刷题解析、大厂面试算法题面试备战、算法爱好者、计算机专业学生

🚀我的承诺:
✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例

✅ 持续更新:专栏内容定期更新,紧跟技术趋势

✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)


🚀 关注我,解锁更多技术干货!
⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨

📌 标签:#技术博客#编程学习#Java#C语言#算法#程序员

前言

从这篇博客开始,我们将结束Spring Boot系列的记录,首先感谢各位大佬支持;其次本博主将继续更新更多Java相关知识,本专栏是redis系列,敬请期待吧;最后,祝各位飞升成为大佬,我们一起加油。

基本概念

  1. 应用/系统
    定义:为了完成⼀整套服务的⼀个程序或者⼀组相互配合的程序群。
    lg:为了完成⼀项任务,⽽组建的由⼀个⼈或者⼀群相互配的⼈组成的团队。

  2. 模块/组件
    定义:当应⽤较复杂时,为了分离职责,将其中具有清晰职责的、内聚性强的部分,抽象出概念,便于理解
    lg:军队中,进行军事训练时,将人员分为突击小组、狙击小组等.

  3. 分布式
    定义:系统中的多个模块被部署于不同服务器之上,如Web服务器与数据库分别⼯作在不同的服务器上。物理层次上有多个主机。
    lg:为了降低成本,汽车零部件加工厂分布全球,远程加工零部件,最后运输到总长组装。

  4. 集群
    被部署于多台服务器上的、为了实现特定⽬标的⼀个/组特定的组件,整个整体被称为集群。逻辑层次上有多个主机。
    lg:为了解决军队攻克防守坚固的⼤城市的作战⽬标,指挥部将⼤批炮兵部队集中起来形成⼀个炮兵打击集群。

  5. 主(Master)/从(Slave)
    定义:集群中,通常有⼀个程序需要承担更多的职责,被称为主;其他承担附属职责的被称为从。
    lg:MySQL集群中,只有其中⼀台服务器上数据库允许进⾏数据的写入,其他数据库的数据修改全部要从这台数据库同步⽽来,则把那台数据库称为主库,其他数据库称为从库

  6. 中间件
    定义:⼀类提供不同应⽤程序⽤于相互通信的软件,即处于不同技术、⼯具和数据库之间的桥梁
    lg:往前个50年想要联系远方的亲人,想要联系需要写信,写信必须给邮局,再通过邮局发给收信人。邮局就是写信人和收信人的桥梁。

  7. 可用性
    定义:单位时间段内,系统可以正常提供服务的概率/期望。

  8. 响应时长
    定义:指⽤⼾完成输⼊到系统给出⽤⼾反应的时⻓。

  9. 吞吐
    定义:单位时间段内,系统可以成功处理的请求的数量。

  10. 并发
    *定义: 指系统同⼀时刻⽀持的请求最⾼量。

分布式系统

首先不要对这个东西有恐惧感,所有的恐惧皆来自于未知,只要你把这篇博客读完,我相信你一定会对分布式系统展现出巨大兴趣,坚持下去你就能拿下它,加油。

分布式系统:一群计算机通过网络连接,协同工作,对外像一个整体一样提供服务。

为什么会有分布式系统?
这是一个很好的问题,一个计算机解决不了某个问题,那通过一群计算机来解决,拥有更加优越的性能; 当一群计算机中某个主机挂机了,会有其他计算机立刻接管该计算机的任务,确保服务的可靠性;

*但是正因为它是依赖网络连接的,所以机器之间的信息传输有可能会出现问题,并且随着计算机数量增加,网络通信越多,那么受到攻击的可能性就越高,维护系统安全是一个巨大挑战。

单机架构

最简单的分布式系统只有一台计算机,这个机器负责所有工作:数据存储、数据响应等等。
在这里插入图片描述
一般情况,大部分项目都使用的是单机架构,但是随着用户量的增加,一台机器上的资源难以完成任务的时候就要进行开源、节流处理了。

  • *开源:很简单,增加资源,并入更多机器一起完成任务。(贵)
  • *节流:软件优化,程序员不断提高代码性能,优化程序时间

应用服务和数据库分离

在这里插入图片描述

应用服务器里面是各种需求的完成逻辑,比较吃CPU和内存,数据库服务器存储各种信息,需要更大的硬盘空间,更快的访问速度

负载均衡

随着用户量的不断增大,我们继续引入更多应用服务器,使用更多的机器来解决大量需求,听起来像是前面学过的多线程程序一个大任务分配给若干个人,每人一个小任务。

但是我们要如何 “公平” 的把任务等量分配给机器呢?
所以就有了负载均衡器把用户请求比较均匀的分配给每个应用服务器。

在这里插入图片描述
这里的应用服务器至于有多少个,具体看数据量的大小,数据量太大,继续加服务器;整体被称为:集群,应用服务器集群。
至于负载均衡要如何分配,那取决于它本身的算法。那如果数据量太大,负载均衡也扛不住了,怎么办?只能继续套娃,引入更多负载均衡解决问题。

读写分离

读和写两个操作一般都是在数据库中访问和存储数据,一般情况这两个操作在一台机器上完成,在大数据量等等场景下,我们需要引入多台存储服务器,将读操作和写操作分开。

主服务器负责写从服务器负责读,一主多从(主从数据同步),同样 从数据库通过负载均衡的方法,让应用服务器进行访问.
在这里插入图片描述

缓存

数据库的天然弊端就是响应速度慢,这对于FPS玩家是不可忍受的。对数据进行“冷热”区分,热数据放到缓存中,缓存的响应速度比数据库快很多。
在这里插入图片描述
这个缓存服务器一般就是redis来扮演,帮助数据库服务器“负重前行”。因为存放热数据,虽然它能存放的数非常小,但是它能承担大部分访问请求。

分库分表

分布式系统,不光要应对更高的请求量,同时也要能存储更大的数据量。
针对数据库服务器进行一个扩大,成为存储集群,每个数据库服务器存储一个或者一部分数据库;同时,要是某个表很大,也可以对表进行拆分。

在这里插入图片描述

微服务

前面的应用服务器中,每个服务器都能解决各种请求,这种做法不是不行,但随着业务越来越多,代码越来越复杂,为了可维护性 ,可以把一个复杂的服务器根据功能拆分成更多,功能更单一、更小的服务器。

总结

经过不断进化,,⼀个还算合理的⾼可⽤、⾼并发系统的基本雏形已显。对于单次实施并且性能指标明确的系统,架构设计到能够⽀持系统的性能指标要求就⾜够了,但要留有扩展架构的接⼝以便不备之需。总的来说:⼤数据架构就是根据业务的需求,整合各种⼤数据组件组合⽽成的架构,而服务端架构更多指应⽤组织层⾯的架构,底层能⼒往往是由⼤数据架构来提供。

完结撒花!🎉

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍
你的鼓励是我创作的最大动力~

想获取更多干货? 欢迎关注我的专栏 → optimistic_chen
📌 收藏本文,下次需要时不迷路!

我们下期再见!💫 持续更新中……


悄悄说:点击主页有更多精彩内容哦~ 😊

在这里插入图片描述

评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Optimistic _ chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值