首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Docker入门】技术架构演进之路

【Docker入门】技术架构演进之路

作者头像
optimistic_chen
发布2026-01-15 12:36:07
发布2026-01-15 12:36:07
90
举报

🚀 欢迎来到我的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等等

  1. 应用/系统 定义:为了完成⼀整套服务的⼀个程序或者⼀组相互配合的程序群。 lg:为了完成⼀项任务,⽽组建的由⼀个⼈或者⼀群相互配的⼈组成的团队。
  2. 模块/组件 定义:当应⽤较复杂时,为了分离职责,将其中具有清晰职责的、内聚性强的部分,抽象出概念,便于理解 lg:军队中,进行军事训练时,将人员分为突击小组、狙击小组等.
  3. 分布式 定义:系统中的多个模块被部署于不同服务器之上,如Web服务器与数据库分别⼯作在不同的服务器上。物理层次上有多个主机。 lg:为了降低成本,汽车零部件加工厂分布全球,远程加工零部件,最后运输到总长组装。
  4. 集群 被部署于多台服务器上的、为了实现特定⽬标的⼀个/组特定的组件,整个整体被称为集群。逻辑层次上有多个主机。 lg:为了解决军队攻克防守坚固的⼤城市的作战⽬标,指挥部将⼤批炮兵部队集中起来形成⼀个炮兵打击集群。
  5. 主(Master)/从(Slave) 定义:集群中,通常有⼀个程序需要承担更多的职责,被称为主;其他承担附属职责的被称为从 lg:MySQL集群中,只有其中⼀台服务器上数据库允许进⾏数据的写入,其他数据库的数据修改全部要从这台数据库同步⽽来,则把那台数据库称为主库,其他数据库称为从库
  6. 中间件 定义:⼀类提供不同应⽤程序⽤于相互通信的软件,即处于不同技术、⼯具和数据库之间的桥梁 lg:往前个50年想要联系远方的亲人,想要联系需要写信,写信必须给邮局,再通过邮局发给收信人。邮局就是写信人和收信人的桥梁。
  7. 容器(Docker) 定义:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。 lg:可以理解为一个集装箱,集装箱里面是每个用户的货物,整体打包
  8. 容器编排(K8S) 定义:kubernetes,简称 K8S,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用。 lg:以理解为一个货船,安装集装箱的大小,货物情况合理的来组织集装箱完成整体货物的搬运
  9. 可用性 定义:单位时间段内,系统可以正常提供服务的概率/期望。
  10. 响应时长 定义:指⽤⼾完成输⼊到系统给出⽤⼾反应的时⻓。
  11. 吞吐 定义:单位时间段内,系统可以成功处理的请求的数量。
  12. 并发 定义: 指系统同⼀时刻⽀持的请求最⾼量。

分布式系统

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

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

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

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

单机架构

最简单的分布式系统只有一台计算机,这个机器负责所有工作:数据存储、数据响应等等。

在这里插入图片描述
在这里插入图片描述

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

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

应用数据分离架构

在这里插入图片描述
在这里插入图片描述

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

应用服务集群架构

随着用户量的不断增大,单台应用服务无法满足用户请求,我们继续引入更多应用服务器,使用更多的机器来解决大量需求,类似前面学过的多线程程序:一个大任务分配给若干个人,每人一个小任务。

为了解决单机应用服务器的瓶颈,目前有两种解决方案:

  1. 垂直扩展/纵向扩展(Scale Up):增加性能更好的、价格更高的应用服务器来应对更多流量。
  2. 水平扩展/横向扩展(Scale Out):通过调整软件架构,增加应用层硬件,将用户流量分担到不同的应用层服务器上,提高系统承载力。
垂直扩展

不断提高应用服务器的接收请求的能力,增加性能更好的硬件

在这里插入图片描述
在这里插入图片描述
横向扩展
在这里插入图片描述
在这里插入图片描述

为了解决用户流量向哪台应用服务器分发的问题,需要一个专门的系统组件做流量分发。 所以就有了负载均衡器:把用户请求比较均匀的分配给每个应用服务器。

至于负载均衡要如何分配,那取决于它本身的算法。那如果数据量太大,负载均衡也扛不住了,怎么办?垂直扩展旨在引入更多性能更高的硬件设备;水平扩展旨在引入更多应用服务器和负载均衡器。

读写分离架构

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

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

在这里插入图片描述
在这里插入图片描述

冷热分离架构

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

在这里插入图片描述
在这里插入图片描述

这个缓存服务器一般就是redis来扮演,帮助数据库服务器“负重前行”。因为存放热数据,虽然它能存放的数非常小,但是它能够承担大部分访问请求。大大降低了数据库的读取压力,同时也大大提高了整个系统的响应效率。

垂直分库架构

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

在这里插入图片描述
在这里插入图片描述

数据库设计到这种结构时,已经可以称为分布式数据库,但是这只是一个逻辑的数据库整体,数据库里不同的组成部分是由不同的组件单独来实现的。

微服务—业务拆分

前面的应用服务器中,每个服务器都能解决各种请求,这种做法不是不行,但随着业务越来越多,代码越来越复杂,可以把一个复杂的业务根据功能拆分给不同的团队去维护,每个团队独立实现自己的微服务,然后互相之间对数据的直接访问进行隔离

在这里插入图片描述
在这里插入图片描述

容器化引入—容器编排架构

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

在这里插入图片描述
在这里插入图片描述

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

总结

一个完整的互联网应用架构

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

完结撒花!🎉

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

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

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


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

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=31za0vdjboj

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 基本概念
  • 分布式系统
    • 单机架构
    • 应用数据分离架构
    • 应用服务集群架构
      • 垂直扩展
      • 横向扩展
    • 读写分离架构
    • 冷热分离架构
    • 垂直分库架构
    • 微服务—业务拆分
    • 容器化引入—容器编排架构
  • 总结
  • 完结撒花!🎉
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档