
🚀 欢迎来到我的CSDN博客:Optimistic _ chen ✨ 一名热爱技术与分享的全栈开发者,在这里记录成长,专注分享编程技术与实战经验,助力你的技术成长之路,与你共同进步!
🚀我的专栏推荐:
专栏 | 内容特色 | 适合人群 |
|---|---|---|
🔥C语言从入门到精通 | 系统讲解基础语法、指针、内存管理、项目实战 | 零基础新手、考研党、复习 |
🔥Java基础语法 | 系统解释了基础语法、类与对象、继承 | Java初学者 |
🔥Java核心技术 | 面向对象、集合框架、多线程、网络编程、新特性解析 | 有一定语法基础的开发者 |
🔥Java EE 进阶实战 | Servlet、JSP、SpringBoot、MyBatis、项目案例拆解 | 想快速入门Java Web开发的同学 |
🔥Java数据结构与算法 | 图解数据结构、LeetCode刷题解析、大厂面试算法题 | 面试备战、算法爱好者、计算机专业学生 |
🚀我的承诺: ✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例
✅ 持续更新:专栏内容定期更新,紧跟技术趋势
✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)
🚀 关注我,解锁更多技术干货! ⏳ 每天进步一点点,未来惊艳所有人!✍️ 持续更新中,记得⭐收藏关注⭐不迷路 ✨
📌 标签:#技术博客 #编程学习 #Java #C语言 #算法 #程序员
从这篇博客开始,我们将结束Spring Boot系列的记录,首先感谢各位大佬支持;其次本博主将继续更新更多Java相关知识,本专栏是redis系列,敬请期待吧;最后,祝各位飞升成为大佬,我们一起加油。
Web服务器软件:Tomact、Netty、Nginx等等 数据库软件:MySQL、Oracle、SQL Server等等 负载均衡软件:Nginx、LVS、F5等等
首先不要对这个东西有恐惧感,所有的恐惧皆来自于未知,只要你把这篇博客读完,我相信你一定会对分布式系统展现出巨大兴趣,坚持下去你就能拿下它,加油。
分布式系统:一群计算机通过网络连接,协同工作,对外像一个整体一样提供服务。
为什么会有分布式系统? 这是一个很好的问题,一个计算机解决不了某个问题,那通过一群计算机来解决,拥有更加优越的性能; 当一群计算机中某个主机挂机了,会有其他计算机立刻接管该计算机的任务,确保服务的可靠性;
*但是正因为它是依赖网络连接的,所以机器之间的信息传输有可能会出现问题,并且随着计算机数量增加,网络通信越多,那么受到攻击的可能性就越高,维护系统安全是一个巨大挑战。
最简单的分布式系统只有一台计算机,这个机器负责所有工作:数据存储、数据响应等等。

一般情况,大部分项目都使用的是单机架构,但是随着用户量的增加,一台机器上的资源难以完成任务的时候就要进行开源、节流处理了。

应用服务器里面是各种需求的完成逻辑,比较吃CPU和内存,数据库服务器存储各种信息,需要更大的硬盘空间,更快的访问速度。
随着用户量的不断增大,单台应用服务无法满足用户请求,我们继续引入更多应用服务器,使用更多的机器来解决大量需求,类似前面学过的多线程程序:一个大任务分配给若干个人,每人一个小任务。
为了解决单机应用服务器的瓶颈,目前有两种解决方案:
不断提高应用服务器的接收请求的能力,增加性能更好的硬件


为了解决用户流量向哪台应用服务器分发的问题,需要一个专门的系统组件做流量分发。 所以就有了负载均衡器:把用户请求比较均匀的分配给每个应用服务器。
至于负载均衡要如何分配,那取决于它本身的算法。那如果数据量太大,负载均衡也扛不住了,怎么办?垂直扩展旨在引入更多性能更高的硬件设备;水平扩展旨在引入更多应用服务器和负载均衡器。
读和写两个操作一般都是在数据库中访问和存储数据,一般情况这两个操作在一台机器上完成,在大数据量等等场景下,我们需要引入多台存储服务器,将读操作和写操作分开。
主服务器负责写,从服务器负责读,一主多从(主从数据同步),同样 从数据库通过负载均衡的方法,让应用服务器进行访问.

数据库的天然弊端就是响应速度慢,这对于FPS玩家是不可忍受的。对数据进行“冷热”区分,访问次数较多的热数据放到缓存中,众所周知缓存的响应速度比数据库快很多, 访问次数较少的数据继续存在数据库中,需要访问时在缓存中没有找到再去数据库中查找。

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

数据库设计到这种结构时,已经可以称为分布式数据库,但是这只是一个逻辑的数据库整体,数据库里不同的组成部分是由不同的组件单独来实现的。
前面的应用服务器中,每个服务器都能解决各种请求,这种做法不是不行,但随着业务越来越多,代码越来越复杂,可以把一个复杂的业务根据功能拆分给不同的团队去维护,每个团队独立实现自己的微服务,然后互相之间对数据的直接访问进行隔离

随业务增长,我们系统的资源利用率不高,面对不同的环境都要进行隔离,运维工作会变的很大。目前最流行的容器化技术是Docker,最流行的容器管理服务是Kubernetes(K8S),服务可以打包为Docker镜像(容器),通过K8S来动态分发和部署镜像。

Docker镜像(容器)可理解为一个能运行服务的最小的操作系统,里面放着服务的运行代码,运行环境根据实际的需要设置好。把这个镜像直接放到相关服务器上就可以直接启动,减少了运维工作。
一个完整的互联网应用架构

他的演进之路是不断解决上一层架构的缺点,直到现在成熟完善的互联网应用架构。

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

如果这篇博客对你有帮助,不妨点个赞支持一下吧!👍 你的鼓励是我创作的最大动力~
✨ 想获取更多干货? 欢迎关注我的专栏 → optimistic_chen 📌 收藏本文,下次需要时不迷路!
我们下期再见!💫 持续更新中……
悄悄说:点击主页有更多精彩内容哦~ 😊
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=31za0vdjboj