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

MongoDB—(一主、一从、一仲裁)副本集搭建

MongoDB集群介绍:

MongoDB 副本集是由多个MongoDB实例组成的集群,其中包含一个主节点(Primary)和多个从节点(Secondary),用于提供数据冗余和高可用性。以下是搭建 MongoDB 副本集的详细步骤,以在 Linux 系统(假设为 Ubuntu)上为例,可以根据实际情况进行调整。

1、MongoDB集群部署的两种方法的原理及优缺点

MongoDB 的副本集(Replica Set)和分片集(Sharded Cluster)是两种重要的集群架构,它们的原理、优缺点如下:

1.1、副本集原理

  • 原理:副本集由多个 MongoDB 实例组成,其中有一个主节点(Primary)和多个从节点(Secondary)。主节点负责处理所有的写操作,并将这些操作记录在操作日志(oplog)中。从节点通过复制主节点的 oplog 来保持与主节点的数据同步。当主节点出现故障时,副本集通过选举机制(通常基于 Bully 算法的变体)从从节点中选出一个新的主节点,以保证服务的连续性。
  • 优点
    • 高可用性:主节点故障时,从节点能快速被选举为新主节点,继续提供服务,减少停机时间。
    • 数据冗余:多个节点存储相同数据,防止因单个节点硬件故障导致数据丢失。
    • 读扩展性:可以将读请求分发到从节点,减轻主节点压力,提高整体读性能。适合读多写少的场景。
    • 数据一致性:通过 oplog 复制,能保证副本集内节点数据的最终一致性。
  • 缺点
    • 写性能瓶颈:所有写操作都集中在主节点,当写操作量较大时,主节点可能成为性能瓶颈。
    • 存储限制:所有节点都存储完整数据,对于数据量非常大的情况,存储成本较高,且扩展存储容量较困难。
    • 选举延迟:主节点故障时,选举新主节点需要一定时间,期间可能影响服务可用性。

1.2、分片集

  • 原理:分片集由多个组件构成,包括分片(Shard)、配置服务器(Config Server)和路由服务器(MongoS)。数据被分割成多个数据块(Chunk),分布在不同的分片上。配置服务器存储着集群的元数据,如数据块的分布信息等。路由服务器负责接收客户端的请求,并根据元数据将请求转发到相应的分片上。当数据量增加或负载不均衡时,系统会自动进行数据块的迁移和平衡,以保持集群的性能和可用性。
  • 优点
    • 可扩展性:通过添加更多的分片,可以轻松扩展集群的存储容量和处理能力,应对不断增长的数据量和负载。
    • 性能提升:读写操作被分散到多个分片上,减少了单个节点的负载,提高了整体性能,尤其适合大数据量和高并发的场景。
    • 负载均衡:自动的数据块迁移机制可以确保各个分片之间的负载均衡,避免出现某个分片负载过高的情况。
  • 缺点
    • 架构复杂:涉及多个组件(分片、配置服务器、路由服务器等),部署、管理和维护的难度较大,需要较高的技术水平。
    • 数据一致性挑战:由于数据分布在多个分片上,跨分片的事务处理相对复杂,可能会出现数据一致性问题,虽然 MongoDB 提供了一定的事务支持,但与传统关系型数据库相比仍有局限。
    • 元数据管理风险:配置服务器存储关键的元数据,一旦配置服务器出现故障或元数据损坏,可能导致整个集群无法正常工作,需要采取额外的备份和恢复措施。

副本集适用于对高可用性和数据冗余有要求,且数据量和写操作不是特别大的场景;而分片集则更适合处理大规模数据和高并发读写的应用,尽管它在管理上更为复杂。

MongoDB 集群主要通过副本集和分片集群两种方式实现,不同集群模式下的节点选取原理有所不同,以下为你详细介绍:

2、集群故障选取原理

2.1、副本集的节点选取原理

副本集是由多个 MongoDB 实例组成,包含一个主节点(Primary)和多个从节点(Secondary),其节点选取主要涉及主节点选举。

  1. 选举触发条件:当副本集启动、主节点发生故障(如网络故障、进程崩溃等)或手动进行重新配置时,会触发主节点选举。
  2. 选举算法:MongoDB 使用改进的 Bully 算法来进行主节点选举。在该算法中,每个节点都有一个优先级(Priority),取值范围是 0 到 100,默认值为 1。优先级为 0 的节点不能成为主节点,只能作为从节点。
  3. 选举过程
    • 具有最高优先级且可用的节点将被优先选为候选主节点。如果多个节点优先级相同,则具有最新 oplog(操作日志)的节点将更有可能被选为候选主节点。
    • 节点之间通过心跳机制(使用 ping 操作)来检测彼此的状态。当一个节点认为主节点不可用时,它会发起选举。
    • 候选主节点会向其他节点发送选举请求(ELECTION 消息)。其他节点收到请求后,会根据一定的规则进行响应。如果候选主节点收到大多数节点(超过副本集节点总数一半的节点)的支持投票,它将成为新的主节点。
    • 新的主节点选举成功后,会向其他节点发送确认消息,从节点会开始与主节点进行数据同步。

2.2、分片集群的节点选取原理

分片集群由多个组件组成,包括分片(Shard)、配置服务器(Config Server)和路由服务器(MongoS),节点选取涉及客户端请求的路由和数据的定位。

  1. 客户端请求路由:客户端应用程序连接到路由服务器(MongoS),MongoS 负责接收客户端的请求,并将其路由到正确的分片上。MongoS 维护着一份来自配置服务器的元数据,这些元数据记录了数据的分布情况(即哪些数据存储在哪个分片上)。
  2. 数据定位:当客户端发送一个读写请求时,MongoS 首先检查请求的数据库和集合,然后根据元数据确定数据所在的分片。例如,如果请求是读取某个文档,MongoS 会查找元数据中关于该文档所在分片的信息,并将请求转发到相应的分片上。
  3. 分片内部的操作:在分片内部,每个分片本身可以是一个副本集。当分片接收到请求后,副本集中的主节点会处理读和写操作。如果是读请求,主节点可以直接返回数据;如果是写请求,主节点会将操作记录到 oplog 中,并将数据同步到从节点。
  4. 配置服务器的作用:配置服务器存储着整个分片集群的元数据,包括分片的信息、数据块(Chunk)的分布等。MongoS 会定期从配置服务器获取最新的元数据,以确保路由的准确性。当集群的配置发生变化(如添加或删除分片、重新平衡数据等)时,配置服务器会更新元数据,并通知相关的 MongoS。

MongoDB 通过上述原理实现了副本集和分片集群的节点选取和请求处理,以提供高可用性、可扩展性和数据分布的能力。

背景:

在本次搭建中根据生产的机器的磁盘空间来规划,因为客户机器资源有限只有两台机器作为数据存储节点,但要求要有数据备份以满足容灾需求,所以我们选择采用副本集的形式来进行部署。

结合实际情况考虑:采用一主、一从、一仲裁节点来部署MongoDB副本集;因为仲裁节点不存放数据所以满足生产场景需求(如果资源充裕也可以根据业务需要部署一主多从或者有性能上的需求也可以部署分片集)。

一、环境准备

主机名

IP

角色

备注

master

192.168.47.162

PRIMARY

mongo主节点优先级指数为:2

agent1

192.168.47.163

SECONDARY

副本节点(同步主节点的数据,优先级指数为1)

agent2

192.168.47.164

ARBITER

仲裁节点不存储数据,在故障时参与选举PRIMARY节点

二、安装MongoDB服务

1、解压安装包


cd /opt/sumscope && tar -zxvf mongodb-5.0.4.tar.gz

2、修改配置文件

fork = true
bind_ip = 0.0.0.0
port = 27017
dbpath = /opt/sumscope/mongodb/data
logpath = /opt/sumscope/mongodb/logs/mongodb.log
auth = true
keyFile = /opt/sumscope/mongodb/config/mongo.keyfile
replSet = rs0

 3、修改环境变量

# 在文件最后一行加入
[root@server111 local]# vim /etc/profile
PATH=$PATH:/opt/sumsscope/mongodb/bin
export PATH
[root@server111 local]# source /etc/profile

4、开启用户认证

openssl rand -base64 753 > /opt/sumscope/mongodb/config/mongo.keyfile
chmod 600 /opt/sumscope/mongodb/config/mongo.keyfile
scp -rp /opt/sumscope/mongodb/config/mongo.keyfile root@agent1:/opt/sumscope/mongodb/config
scp -rp /opt/sumscope/mongodb/config/mongo.keyfile root@agent2:/opt/sumscope/mongodb/config

5、将mongo配置成系统服务

注意:mongodb.service得自己编写

cd /opt/sumscope/mongodb/scripts
#注意:如果部署路径不一致将mongodb.service的启停命令进行修改
cp  mongodb.service /lib/systemd/system
chmod +755 /lib/systemd/system/mongodb.service
systemctl daemon-reload


 

三、初始化MongoDB集群节点

1、在主机点上进行初始化操作

use admin
rs.initiate({_id:"rs0", members:[{_id:0, host:"192.168.47.162:27017"}, {_id:1,host:"192.168.47.163:27017"}]})

2、加入仲裁节点

先执行如下命令,不然加入仲裁执行会很慢
db.adminCommand({"setDefaultRWConcern" : 1,"defaultWriteConcern" : {"w" : 2}})再执行rs.addArb("192.168.47.164:27017")

3、创建root用户所属库为admin

db.createUser({ "user":"root","pwd":"ppp","roles":[ { role: "readWriteAnyDatabase", db: "admin" },{ role: "root", db: "admin" },"readWrite"]})

4、创建tbook数据库,所属用户stc

use admin
db.auth('root','ppp')
use tbook
db.createUser({user:"stc",pwd:"ppp",roles:[{role:'dbOwner',db:'tbook'}]})

5、写入数据验证

use tbook
db.auth('stc','ppp')
#插入数据
db.ttab.insert({name:'test2-1',url:'https://www.test2-1.cn'})

四、节点优先级设置

1、优先级设置背景

mongo配置完成后默认的参数为
  • PRIMARY:1
  • SECONDARY: 1
  • ARBITER:0

从上述来看,在master mongo服务挂掉之后,agent1将会被选为主节点,而master恢复之后由于优先级一致,主节点让然在agent1上运行;所以通过设置优先级的方法,master上的mongo服务起来之后可以再次成为主节点,之前在agent1上写入的数据也会被同步到master上。
根据上述情况现将节点优先级设置如下:
  • PRIMARY:2 (master 主机)
  • SECONDARY: 1 (agent1 主机)
  • ARBITER:0 (agent2 主机)

2、节点优先级设置命令

/opt/sumscope/mongodb/bin/mongo
#进入admin库进入
rs0:PRIMARY> use admin
rs0:PRIMARY> db.auth('root','passwd')
#查看副本集信息
rs0:PRIMARY> rs.status();
#查看副本的优先级
rs0:PRIMARY> rs.config();########修改优先级###########
#使用如下命令获取到副本集中的配置信息,并赋值给变量(后面将通过这个变量修改配置)
rs0:PRIMARY> cfg = rs.conf()
#修改主节点的优先级为2(主节点、副本节点、仲裁节点的索引分别为:0、1、2)
rs0:PRIMARY> cfg.members[0].priority=2
#更新副本集的配置
rs0:PRIMARY> rs.reconfig(cfg)

注:以上priority优先级改完之后会立即生效,priority最高的将成为主节点

 修改之后

五、群集故障测试

1、副本节点故障(关闭副本)

预期:

  • 不会触发选举,此时给主节点插入数据,
  • 再次启动副本节点(agent1),会发现主节点(master)写入的数据,会自动同步给副本节点(agent1)节点。
步骤一:关闭agent1上的MongoDB服务

步骤二:在master上查看状态(主节点)

步骤三:在master主节点上写入数据

步骤四: 故障恢复 (开启agent1上的MongoDB服务)

在agent1上查看故障时master写入的数据是否同步成功

结论:
  • 从节点发生故障集群不会触发选举,此时给主节点插入数据,
  • 再次启动副本节点(agent1),会发现主节点(master)写入的数据,会自动同步给副本节点(agent1)节点。

2、 主节点故障(关闭主节点的MongoDB)

预期:

  • 触发选举,副本节(agent1)点当主节点
  • 再次启动主节点发现优先级原因,主节点再次回到master上

步骤一:关闭master上的mongo服务

步骤二:查看到agent1上的mongo变成主节点

步骤三:在agent1上写入数据

步骤四:恢复master上的MongoDB

由于优先级的原因master变成了主节点、agent1变成了副本节点

步骤五:查看master故障时,agent1后写入的数据是否同步到master节点上。

结论:
  • 当主节点故障时集群触发选举,副本节(agent1)点当选为主节点
  • 再次启动主节点因为优先级原因,主节点再次回到master上。

3、仲裁节点和主节点故障

预期:

  • 副本集是只读状态,不在进行选举,因为票数没有超过半数
步骤一:关闭master和agent2上的mongo服务
步骤二:查看agent1上的mongo服务读写情况
写入数据验证: 写入数据失败
读数据验证: 读数据正常

4、仲裁节点和副本节点故障

预期:

  • 副本集是只读状态,不可写入数据了。
步骤一:关闭agent1(副本节点)和agent2(仲裁节点)上的MongoDB服务
步骤二:查看master(主节点)由PRIMARY 变为 SECONDARY

步骤三:主机点上进行读写验证
写数据验证: 写入数据失败,此时只能时读的状态
读数据验证: 可以读数据

相关文章:

MongoDB—(一主、一从、一仲裁)副本集搭建

MongoDB集群介绍: MongoDB 副本集是由多个MongoDB实例组成的集群,其中包含一个主节点(Primary)和多个从节点(Secondary),用于提供数据冗余和高可用性。以下是搭建 MongoDB 副本集的详细步骤&am…...

MyBatis TypeHandler 详解与实战:FastJson 实现字符串转 List

在 MyBatis 中&#xff0c;TypeHandler 是实现 Java 类型与数据库类型双向转换 的核心组件。无论是处理基础数据类型还是复杂的 JSON、枚举或自定义对象&#xff0c;它都能通过灵活的扩展机制满足开发需求。本文将通过一个 将数据库 JSON 字符串转换为 List<User> 的案例…...

第二十八:5.5.【storeToRefs】5.6.【getters】

LoveTalk.vue: 调用&#xff1a; // 方法 const talkStore useTalkStore() function getLoveTalk(){ talkStore.getATalk() } 如果是要简短的形式调用&#xff1a; const talkStore useTalkStore() // user hooks 的形式调用 const {schoole,local} talkStore // …...

APISIX Dashboard上的配置操作

文章目录 登录配置路由配置消费者创建后端服务项目配置上游再创建一个路由测试 登录 http://192.168.10.101:9000/user/login?redirect%2Fdashboard 根据docker 容器里的指定端口&#xff1a; 配置路由 通过apisix 的API管理接口来创建&#xff08;此路由&#xff0c;直接…...

MinIO在 Docker中修改登录账号和密码

MinIO在 Docker中修改登录账号和密码 随着云计算和大数据技术的快速发展&#xff0c;对象存储服务逐渐成为企业数据管理的重要组成部分。MinIO 作为一种高性能、分布式的对象存储系统&#xff0c;因其简单易用、高效可靠的特点而备受开发者青睐。然而&#xff0c;在实际应用中…...

英文论文查重,Turnitin和IThenticate两个系统哪个更合适?

Turnitin系统和IThenticate系统都是检测英文论文的查重系统&#xff0c;但是两者之间还是有一些不一样的。 下面针对这两个系统给大家具体分析一下。 一、Turnitin系统 Turnitin检测系统&#xff1a; https://truth-turnitin.similarity-check.com Turnitin是世界上主流的…...

pnpm的基本用法

以下是 pnpm 的核心命令和使用指南&#xff0c;涵盖从安装依赖到项目管理的常见操作&#xff1a; 1. 基础命令 (1) 安装依赖 pnpm install # 安装 package.json 中的所有依赖 pnpm install <包名> # 安装指定包&#xff08;自动添加到 dependencies&#xf…...

【实战中提升自己】防火墙篇之双ISP切换与VRRP切换对于用户的体验

! 拓扑与说明 某公司的网络架构&#xff0c;这样的架构在目前的网络中是在常见的&#xff0c;假设您接收一个这样的网络&#xff0c;应该如何部署&#xff0c;该实战系列&#xff0c;就是一步一步讲解&#xff0c;如何规划、设计、部署这样一个环境&#xff0c;这…...

Go在1.22版本修复for循环陷阱

记录 前段时间升级Go版本碰到一个大坑&#xff0c;先记录。 先上代码案例&#xff1a; func main() {testClosure() }func testClosure() {for i : 0; i < 5; i {defer func() {fmt.Println(i)}()} }在1.22之下&#xff08;不包括1.22&#xff09;版本&#xff1a; 输出的…...

Nginx+PHP+MYSQL-Ubuntu在线安装

在 Ubuntu 上配置 Nginx、PHP 和 MySQL 的步骤如下&#xff1a; 1. 更新系统包 首先&#xff0c;确保系统包是最新的&#xff1a; sudo apt update sudo apt upgrade2. 安装 Nginx 安装 Nginx&#xff1a; sudo apt install nginx启动并启用 Nginx 服务&#xff1a; sudo…...

SpringDataJPA使用deleteAllInBatch方法逻辑删除失效

概述 在使用Spring Boot JPA时&#xff0c;执行批量删除操作时&#xff0c;遇到逻辑删除失效的问题。具体而言&#xff0c;当使用deleteAllInBatch方法时&#xff0c;数据会被物理删除&#xff0c;而不是进行逻辑删除&#xff1b;但是当使用deleteAll时&#xff0c;逻辑删除操…...

DOM Node

DOM Node 引言 在Web开发中,DOM(Document Object Model)节点是构建网页和交互式应用程序的核心。DOM节点是文档的构建块,可以用来表示HTML和XML文档中的任何部分。本文将详细介绍DOM节点的基本概念、类型、操作方法以及在实际开发中的应用。 什么是DOM节点? DOM节点是…...

基于STM32的智能家居能源管理系统

1. 引言 传统家庭能源管理存在能耗监控粗放、设备联动不足等问题&#xff0c;难以适应绿色低碳发展需求。本文设计了一款基于STM32的智能家居能源管理系统&#xff0c;通过多源能耗监测、负荷预测与优化调度技术&#xff0c;实现家庭能源的精细化管理与智能优化&#xff0c;提…...

智慧园区后勤单位消防安全管理:安全运营和安全巡检

//智慧园区消防管理困境大曝光 智慧园区&#xff0c;听起来高大上&#xff0c;但消防管理却让人头疼不已。各消防子系统各自为政&#xff0c;像一座座孤岛&#xff0c;信息不共享、不协同。 消防设施管理分散&#xff0c;不同区域、企业的设备标准不一样&#xff0c;维护情况…...

HTML 日常开发常用标签

文章目录 HTML 日常开发常用标签1、基本结构标签2、内容标签3、多媒体标签4、表单标签5、列表和定义标签6、表格标签7、链接和图像8、元数据9、语义化标签&#xff08;HTML5新增&#xff09;10、框架和内联11、交互12、过时或不推荐使用的标签 HTML 日常开发常用标签 1、基本结…...

Spring事务失效六大场景

引言 Spring事务一般我们采用注解实现&#xff0c;但是我们构造事务实现的时候常常没察觉失效的情况&#xff0c;本篇文章总结事务失效的六大情况&#xff0c;帮助我们深刻理解事务失效的边界概念 1. 方法自调用 这个主要是针对声明式事务的&#xff0c;经过前面的介绍&…...

【缓冲区】数据库备份的衍生问题,缓冲区在哪里?JVMor操作系统?(二)

【缓冲区】数据库备份的衍生问题&#xff0c;缓冲区在哪里&#xff1f;JVMor操作系统&#xff1f;&#xff08;二 完结&#xff09; 缓冲区既属于操作系统&#xff0c;也属于 JVM&#xff0c;具体取决于你讨论的是哪个层面的缓冲区。下面我会详细解释这两者的区别和联系。 1. …...

如何免费使用稳定的deepseek

0、背景&#xff1a; 在AI辅助工作中&#xff0c;除了使用cursor做编程外&#xff0c;使用deepseek R1进行问题分析、数据分析、代码分析效果非常好。现在我经常会去拿行业信息、遇到的问题等去咨询R1&#xff0c;也给了自己不少启示。但是由于官网稳定性很差&#xff0c;很多…...

钉钉小程序(企业内部应用)开发--钉钉小程序web-view嵌套H5与小程序之间的通信(H5跳转钉钉小程序小程序postMessage)

钉钉小程序代码&#xff1a;嵌套H5 pages/login/index.axml <web-view src"{{urlH5}}" onMessage"test"></web-view> H5向小程序发送信息&#xff1a; H5代码&#xff1a; 通过以下代码我一直报错dd没有被定义 if (navigator.userAgent.to…...

超级免费/牛的图片格式转换工具jpg/jpeg/png

选择多次图片文件&#xff0c;并在所有图片选择完后进行批量转换。这种需求可以通过tkinter来实现&#xff0c;它是Python的标准GUI库&#xff0c;能够提供一个简洁的界面来选择文件和执行操作。您的代码要是网络运行不流畅可以试试它​​​​​​​ 下面是一个简单的GUI程序&a…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...