
🚀 欢迎来到我的优快云博客:Optimistic _ chen
✨ 一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!
🚀我的专栏推荐:
| 专栏 | 内容特色 | 适合人群 |
|---|---|---|
| 🔥C语言从入门到精通 | 系统讲解基础语法、指针、内存管理、项目实战 | 零基础新手、考研党、复习 |
| 🔥Java基础语法 | 系统解释了基础语法、类与对象、继承 | Java初学者 |
| 🔥Java核心技术 | 面向对象、集合框架、多线程、网络编程、新特性解析 | 有一定语法基础的开发者 |
| 🔥Java EE 进阶实战 | Servlet、JSP、SpringBoot、MyBatis、项目案例拆解 | 想快速入门Java Web开发的同学 |
| 🔥Java数据结构与算法 | 图解数据结构、LeetCode刷题解析、大厂面试算法题 | 面试备战、算法爱好者、计算机专业学生 |
🚀我的承诺:
✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例
✅ 持续更新:专栏内容定期更新,紧跟技术趋势
✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)
🚀 关注我,解锁更多技术干货!
⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨
📌 标签:#技术博客 #编程学习 #Java #C语言 #算法 #程序员
前言
从这篇博客开始,我们将结束Spring Boot系列的记录,首先感谢各位大佬支持;其次本博主将继续更新更多Java相关知识,本专栏是redis系列,敬请期待吧;最后,祝各位飞升成为大佬,我们一起加油。
基本概念
-
应用/系统
定义:为了完成⼀整套服务的⼀个程序或者⼀组相互配合的程序群。
lg:为了完成⼀项任务,⽽组建的由⼀个⼈或者⼀群相互配的⼈组成的团队。 -
模块/组件
定义:当应⽤较复杂时,为了分离职责,将其中具有清晰职责的、内聚性强的部分,抽象出概念,便于理解
lg:军队中,进行军事训练时,将人员分为突击小组、狙击小组等. -
分布式
定义:系统中的多个模块被部署于不同服务器之上,如Web服务器与数据库分别⼯作在不同的服务器上。物理层次上有多个主机。
lg:为了降低成本,汽车零部件加工厂分布全球,远程加工零部件,最后运输到总长组装。 -
集群
被部署于多台服务器上的、为了实现特定⽬标的⼀个/组特定的组件,整个整体被称为集群。逻辑层次上有多个主机。
lg:为了解决军队攻克防守坚固的⼤城市的作战⽬标,指挥部将⼤批炮兵部队集中起来形成⼀个炮兵打击集群。 -
主(Master)/从(Slave)
定义:集群中,通常有⼀个程序需要承担更多的职责,被称为主;其他承担附属职责的被称为从。
lg:MySQL集群中,只有其中⼀台服务器上数据库允许进⾏数据的写入,其他数据库的数据修改全部要从这台数据库同步⽽来,则把那台数据库称为主库,其他数据库称为从库 -
中间件
定义:⼀类提供不同应⽤程序⽤于相互通信的软件,即处于不同技术、⼯具和数据库之间的桥梁
lg:往前个50年想要联系远方的亲人,想要联系需要写信,写信必须给邮局,再通过邮局发给收信人。邮局就是写信人和收信人的桥梁。 -
可用性
定义:单位时间段内,系统可以正常提供服务的概率/期望。 -
响应时长
定义:指⽤⼾完成输⼊到系统给出⽤⼾反应的时⻓。 -
吞吐
定义:单位时间段内,系统可以成功处理的请求的数量。 -
并发
*定义: 指系统同⼀时刻⽀持的请求最⾼量。
分布式系统
首先不要对这个东西有恐惧感,所有的恐惧皆来自于未知,只要你把这篇博客读完,我相信你一定会对分布式系统展现出巨大兴趣,坚持下去你就能拿下它,加油。
分布式系统:一群计算机通过网络连接,协同工作,对外像一个整体一样提供服务。
为什么会有分布式系统?
这是一个很好的问题,一个计算机解决不了某个问题,那通过一群计算机来解决,拥有更加优越的性能; 当一群计算机中某个主机挂机了,会有其他计算机立刻接管该计算机的任务,确保服务的可靠性;
*但是正因为它是依赖网络连接的,所以机器之间的信息传输有可能会出现问题,并且随着计算机数量增加,网络通信越多,那么受到攻击的可能性就越高,维护系统安全是一个巨大挑战。
单机架构
最简单的分布式系统只有一台计算机,这个机器负责所有工作:数据存储、数据响应等等。

一般情况,大部分项目都使用的是单机架构,但是随着用户量的增加,一台机器上的资源难以完成任务的时候就要进行开源、节流处理了。
- *开源:很简单,增加资源,并入更多机器一起完成任务。(贵)
- *节流:软件优化,程序员不断提高代码性能,优化程序时间
应用服务和数据库分离

应用服务器里面是各种需求的完成逻辑,比较吃CPU和内存,数据库服务器存储各种信息,需要更大的硬盘空间,更快的访问速度。
负载均衡
随着用户量的不断增大,我们继续引入更多应用服务器,使用更多的机器来解决大量需求,听起来像是前面学过的多线程程序:一个大任务分配给若干个人,每人一个小任务。
但是我们要如何 “公平” 的把任务等量分配给机器呢?
所以就有了负载均衡器:把用户请求比较均匀的分配给每个应用服务器。

这里的应用服务器至于有多少个,具体看数据量的大小,数据量太大,继续加服务器;整体被称为:集群,应用服务器集群。
至于负载均衡要如何分配,那取决于它本身的算法。那如果数据量太大,负载均衡也扛不住了,怎么办?只能继续套娃,引入更多负载均衡解决问题。
读写分离
读和写两个操作一般都是在数据库中访问和存储数据,一般情况这两个操作在一台机器上完成,在大数据量等等场景下,我们需要引入多台存储服务器,将读操作和写操作分开。
主服务器负责写,从服务器负责读,一主多从(主从数据同步),同样 从数据库通过负载均衡的方法,让应用服务器进行访问.

缓存
数据库的天然弊端就是响应速度慢,这对于FPS玩家是不可忍受的。对数据进行“冷热”区分,热数据放到缓存中,缓存的响应速度比数据库快很多。

这个缓存服务器一般就是redis来扮演,帮助数据库服务器“负重前行”。因为存放热数据,虽然它能存放的数非常小,但是它能承担大部分访问请求。
分库分表
分布式系统,不光要应对更高的请求量,同时也要能存储更大的数据量。
针对数据库服务器进行一个扩大,成为存储集群,每个数据库服务器存储一个或者一部分数据库;同时,要是某个表很大,也可以对表进行拆分。

微服务
前面的应用服务器中,每个服务器都能解决各种请求,这种做法不是不行,但随着业务越来越多,代码越来越复杂,为了可维护性 ,可以把一个复杂的服务器根据功能拆分成更多,功能更单一、更小的服务器。
总结
经过不断进化,,⼀个还算合理的⾼可⽤、⾼并发系统的基本雏形已显。对于单次实施并且性能指标明确的系统,架构设计到能够⽀持系统的性能指标要求就⾜够了,但要留有扩展架构的接⼝以便不备之需。总的来说:⼤数据架构就是根据业务的需求,整合各种⼤数据组件组合⽽成的架构,而服务端架构更多指应⽤组织层⾯的架构,底层能⼒往往是由⼤数据架构来提供。
完结撒花!🎉

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍
你的鼓励是我创作的最大动力~
✨ 想获取更多干货? 欢迎关注我的专栏 → optimistic_chen
📌 收藏本文,下次需要时不迷路!
我们下期再见!💫 持续更新中……
悄悄说:点击主页有更多精彩内容哦~ 😊

379

被折叠的 条评论
为什么被折叠?



