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

968深圳网站建设公司/关键字优化用什么系统

968深圳网站建设公司,关键字优化用什么系统,抚松网站建设,wordpress生产app中文文章目录 Redis分布式高可用集群搭建一、redis集群有三种方式:1. 主从模式2. 哨兵3. 集群(master-cluster) 二、基于centos7操作系统操做1. 关闭防火墙,三台机器都执行2. hostname修改,三台机器都执行,这一步是为了在内…

文章目录

  • Redis分布式高可用集群搭建
    • 一、redis集群有三种方式:
      • 1. 主从模式
      • 2. 哨兵
      • 3. 集群(master-cluster)
    • 二、基于centos7操作系统操做
      • 1. 关闭防火墙,三台机器都执行
      • 2. hostname修改,三台机器都执行,这一步是为了在内网中三台服务器能相互连通
      • 3. 免登陆,三台机器都执行
      • 4. 安装gcc并升级
      • 5. 下载redis,在三台机器上都执行
      • 6.创建目录
      • 7. 修改配置,三台机器都要对应修改,对应开头的表格
      • 8. 启动并且创建集群
      • 9. 集群节点信息
      • 10. 查看集群状态
      • 11. 查看节点内存、cpu、key数量等信息
      • 12. 集群代理

Redis分布式高可用集群搭建

2020年发布的Redis6.0是Redis自发布以来最大的升级,提供了多线程支持,ACLs细粒度的权限管理,SSL加密,客户端缓存,集群代理等多项重大更新

一、redis集群有三种方式:

主从复制,哨兵,集群(master-cluster)

1. 主从模式

主从关系,简单说是以主库为准,从库内容异步复制主数据库,从而达成主从内容基本一致的情况。master节点挂了以后,redis就不能对外提供写服务了,此模式不推荐

2. 哨兵

哨兵模式是基于主从模式的,比主从多了自动切换,系统更健壮,可用性更高 ,但是较难支持在线扩容,单机瓶颈尤为突出,此模式不推荐

3. 集群(master-cluster)

解决单机性能瓶颈,支持横向扩展,节点故障转移,真正实习系统高可用,此模式推荐集群(master-cluster)最低配置,两个副本三个分片,那么至少需要6个节点,压缩至两个节点一台机器,那么至少需要3台服务器,低于3台无法实现高可用集群,建议6台redis1	10.1.10.204	主	8001
redis2	10.1.10.205	主	8002
redis3	10.1.10.206	主	8003
redis4	10.1.10.204	备	8004
redis5	10.1.10.205	备	8005
redis6	10.1.10.206	备	8006

二、基于centos7操作系统操做

1. 关闭防火墙,三台机器都执行

systemctl stop firewalld
systemctl disable firewalld

2. hostname修改,三台机器都执行,这一步是为了在内网中三台服务器能相互连通

vi /etc/hosts
10.1.10.204 r1
10.1.10.205 r2
10.1.10.206 r3

3. 免登陆,三台机器都执行

ssh-keygen -t rsa
ssh-copy-id 10.1.10.204
ssh-copy-id 10.1.10.205
ssh-copy-id 10.1.10.206

4. 安装gcc并升级

yum install readline-devel pcre-devel openssl-devel gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

5. 下载redis,在三台机器上都执行

mkdir -vp /u01/soft
cd /u01/soft/
wget https://download.redis.io/releases/redis-6.0.9.tar.gz 
tar zxf redis-6.0.9.tar.gz
cd redis-6.0.9
make MALLOC=libc
make PREFIX=/usr/local/redis install

6.创建目录

在204服务器执行:
mkdir /u01/redis-cluster
cd /u01/redis-cluster/
mkdir redis01
mkdir redis04
mkdir /usr/local/redis-cluster
cd /usr/local/redis-cluster
mkdir redis01
mkdir redis04
cp /u01/soft/redis-6.0.9/redis.conf /usr/local/redis-cluster/redis01
cp /u01/soft/redis-6.0.9/redis.conf /usr/local/redis-cluster/redis04
cp /u01/soft/redis-6.0.9/src/redis-server /usr/local/redis-cluster/redis01
cp /u01/soft/redis-6.0.9/src/redis-server /usr/local/redis-cluster/redis04在205服务器执行:
mkdir /u01/redis-cluster
cd /u01/redis-cluster/
mkdir redis02
mkdir redis05
mkdir /usr/local/redis-cluster
cd /usr/local/redis-cluster
mkdir redis02
mkdir redis05
cp /u01/soft/redis-6.0.9/redis.conf /usr/local/redis-cluster/redis02
cp /u01/soft/redis-6.0.9/redis.conf /usr/local/redis-cluster/redis05
cp /u01/soft/redis-6.0.9/src/redis-server /usr/local/redis-cluster/redis02
cp /u01/soft/redis-6.0.9/src/redis-server /usr/local/redis-cluster/redis05在206服务器执行:
mkdir /u01/redis-cluster
cd /u01/redis-cluster/
mkdir redis03
mkdir redis06
mkdir /usr/local/redis-cluster
cd /usr/local/redis-cluster
mkdir redis03
mkdir redis06
cp /u01/soft/redis-6.0.9/redis.conf /usr/local/redis-cluster/redis03
cp /u01/soft/redis-6.0.9/redis.conf /usr/local/redis-cluster/redis06
cp /u01/soft/redis-6.0.9/src/redis-server /usr/local/redis-cluster/redis03
cp /u01/soft/redis-6.0.9/src/redis-server /usr/local/redis-cluster/redis06

7. 修改配置,三台机器都要对应修改,对应开头的表格

$ vim redis01/redis.conf#是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。
protected-mode no
#redis监听的端口号
port 8001
#是否在后台执行,yes:后台运行;no:不是后台运行
daemonize yes
#redis的进程文件
pidfile /var/run/redis_8001.pid
# 指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null
logfile /u01/redis-cluster/redis01/redis_8001.log
# 指定本地数据库文件名,一般采用默认的 dump.rdb
# dbfilename /u01/redis-cluster/redis01/dump-8001.rdb
# 数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
dir /u01/redis-cluster/redis04/
# 集群
cluster-enabled yes
# 生成的node文件,不过不指定名称则直接为nodes.conf。在同一台服务器上启动第二个实列的时候就会报错。因为nodes.conf文件发生冲突
cluster-config-file nodes-8001.conf
appendonly yes
appendfilename "appendonly-8001.aof"

8. 启动并且创建集群

分别启动6个节点 
./redis-server redis.conf
创建集群 ./redis-cli --cluster create 10.1.10.204:8001 10.1.10.205:8002 10.1.10.206:8003 10.1.10.205:8005 10.1.10.206:8006 10.1.10.204:8004 --cluster-replicas 1

9. 集群节点信息

./redis-cli -h 10.1.10.204 -p 8004 cluster nodes                             
d148088d84486a5cc98d34df2003e80eac1c2c97 10.1.10.205:8005@18005 slave ed308cac5868f5284340fa96320453748d4c11c2 0 1605686204000 1 connected
70d624e48b69c0ab1c3f041bde83cca4ad3c2865 10.1.10.204:8004@18004 myself,slave 1a8e7da0488175a103c6b714e8e87410c326b868 0 1605686204000 3 connected
874a8cd728fc4134271863b6f71365d61da00659 10.1.10.206:8006@18006 slave 4bd9f8bac50539b6435c72ebc6b5a448ebbedcef 0 1605686204645 2 connected
ed308cac5868f5284340fa96320453748d4c11c2 10.1.10.204:8001@18001 master - 0 1605686205647 1 connected 0-5460
4bd9f8bac50539b6435c72ebc6b5a448ebbedcef 10.1.10.205:8002@18002 master - 0 1605686203000 2 connected 5461-10922
1a8e7da0488175a103c6b714e8e87410c326b868 10.1.10.206:8003@18003 master - 0 1605686204000 3 connected 10923-16383

10. 查看集群状态

./redis-cli -h 10.1.10.204 -p 8001 cluster info                              
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:1861
cluster_stats_messages_pong_sent:1866
cluster_stats_messages_sent:3727
cluster_stats_messages_ping_received:1861
cluster_stats_messages_pong_received:1861
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:3727

11. 查看节点内存、cpu、key数量等信息

./redis-cli -h 10.1.10.204 -p 8004 info                                      
# Server
redis_version:6.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:e0eeddaa7861f7a5
redis_mode:cluster
os:Linux 3.10.0-1127.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:9.3.1
process_id:8495
run_id:afe2d5b775ad69688a70dfbb9406b6549cd2bf7c
tcp_port:8004
uptime_in_seconds:2212
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:11850857
executable:/usr/local/redis-cluster/redis04/./redis-server
config_file:/usr/local/redis-cluster/redis04/redis.conf
io_threads_active:0# Clients
connected_clients:4
client_recent_max_input_buffer:8
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0# Memory
used_memory:2703376
used_memory_human:2.58M
used_memory_rss:18468864
used_memory_rss_human:17.61M
used_memory_peak:2703376
used_memory_peak_human:2.58M
used_memory_peak_perc:100.05%
used_memory_overhead:2570664
used_memory_startup:1460576
used_memory_dataset:132712
used_memory_dataset_perc:10.68%
allocator_allocated:2799904
allocator_active:3207168
allocator_resident:6090752
total_system_memory:16656355328
total_system_memory_human:15.51G
used_memory_lua:37888
used_memory_lua_human:37.00K
used_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:1.15
allocator_frag_bytes:407264
allocator_rss_ratio:1.90
allocator_rss_bytes:2883584
rss_overhead_ratio:3.03
rss_overhead_bytes:12378112
mem_fragmentation_ratio:7.00
mem_fragmentation_bytes:15828952
mem_not_counted_for_evict:0
mem_replication_backlog:1048576
mem_clients_slaves:0
mem_clients_normal:61504
mem_aof_buffer:8
mem_allocator:jemalloc-5.1.0
active_defrag_running:0
lazyfree_pending_objects:0# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1605684165
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:0
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:2252800
module_fork_in_progress:0
module_fork_last_cow_size:0
aof_current_size:92
aof_base_size:92
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0# Stats
total_connections_received:9
total_commands_processed:319
instantaneous_ops_per_sec:0
total_net_input_bytes:5222
total_net_output_bytes:433184
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.02
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:705
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_reads_processed:327
total_writes_processed:2236
io_threaded_reads_processed:0
io_threaded_writes_processed:0# Replication
role:slave
master_host:10.1.10.206
master_port:8003
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:2982
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:2f4df65f8ad840253afb0fb57cf51a4fdbc9eed3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2982
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2982# CPU
used_cpu_sys:0.928872
used_cpu_user:1.269668
used_cpu_sys_children:0.001825
used_cpu_user_children:0.000000# Modules# Cluster
cluster_enabled:1# Keyspace

12. 集群代理

git clone https://github.com/artix75/redis-cluster-proxy
cd redis-cluster-proxy
make PREFIX=/usr/local/redis_cluster_proxy install 
./bin/redis-cluster-proxy -c ./proxy.conf

相关文章:

12. Redis分布式高可用集群搭建

文章目录 Redis分布式高可用集群搭建一、redis集群有三种方式:1. 主从模式2. 哨兵3. 集群(master-cluster) 二、基于centos7操作系统操做1. 关闭防火墙,三台机器都执行2. hostname修改,三台机器都执行,这一步是为了在内…...

【微信小程序篇】-请求封装

最近自己在尝试使用AIGC写一个小程序,页面、样式、包括交互函数AIGC都能够帮我完成(不过这里有一点问题AIGC的上下文关联性还是有限制,会经常出现对于需求理解跑偏情况,需要不断的重复强调,并纠正错误,才能得到你想要的…...

区块链-Web3.0-什么是Web3.0?

一、什么是Web 3.0 Web 3.0,也被称为“去中心化Web”或“智能Web”,是互联网的下一代,它使用了分布式系统技术、区块链技术和智能合约等新型技术,旨在构建一个更加去中心化、安全、透明和智能的互联网。Web 3.0 可以带来更广泛的…...

动手学深度学习(三)线性神经网络—softmax回归

分类任务是对离散变量预测,通过比较分类的概率来判断预测的结果。 softmax回归和线性回归一样也是将输入特征与权重做线性叠加,但是softmax回归的输出值个数等于标签中的类别数,这样就可以用于预测分类问题。 分类问题和线性回归的区别&#…...

ios swift alert 自定义弹框 点击半透明部分弹框消失

文章目录 1.BaseAlertVC2.BindFrameNumAlertVC 1.BaseAlertVC import UIKitclass BaseAlertVC: GLBaseViewController {let centerView UIView()override func viewDidLoad() {super.viewDidLoad()view.backgroundColor UIColor(displayP3Red: 0, green: 0, blue: 0, alpha:…...

HCIP STP(生成树)

目录 一、STP概述 二、生成树协议原理 三、802.1D生成树 四、STP的配置BPDU 1、配置BPDU的报文格式 2、配置BPDU的工作过程 3、TCN BPDU 4、TCN BPDU的工作过程 五、STP角色选举 1、根网桥选举 2、根端口选举 3、指定端口选举 4、非指定端口选举 六、STP的接口状…...

【Unity开发必备】100多个 Unity 学习网址 资源 收藏整理大全【持续更新】

Unity 相关网站整理大全 众所周知,工欲善其事必先利其器,有一个好的工具可以让我们事半功倍,有一个好用的网站更是如此! 但是好用的网站真的太多了,收藏夹都满满的(但是几乎没打开用过😁)。 所以本文是对…...

Alpine Ridge控制器使其具备多种使用模式 - 英特尔发布雷电3接口:竟和USB Type-C统一了

同时又因为这建立在Type-C的基础上,雷电3也将利用现有的标准Type-C线缆引入有源支持。当使用Type-C的线缆时,雷电的速度就降到了20Gbps全双工——这与普通的Type-C的带宽相同——这是为了成本牺牲了一些带宽。可以比较一下,Type-C线的成本只有…...

容器——2.Collection 子接口之 List

文章目录 2.1. Arraylist 和 Vector 的区别?2.2. Arraylist 与 LinkedList 区别?2.2.1. 补充内容:双向链表和双向循环链表2.2.2. 补充内容:RandomAccess 接口 2.3 ArrayList 的扩容机制 2.1. Arraylist 和 Vector 的区别? ArrayList 是 List 的主要实现类,底层使…...

【工作记录】docker安装gitlab、重置密码@20230809

前言 本文记录下基于docker安装gitlab并重置管理员密码的过程。 作为记录的同时也希望能帮助到需要的朋友们。 搭建过程 1. 准备好docker环境并启动docker [rootslave-node1 docker-gitlab]# docker version Client:Version: 18.06.1-ceAPI version: 1.38…...

数据挖掘的基本概念和大数据的特点

数据挖掘是指从大量数据中提取有价值的信息或模式的过程。它通常使用计算机技术来分析数据,并利用统计学、机器学习、人工智能等方法来发现数据中的隐藏规律、趋势和关联性。 数据挖掘的基本概念包括以下几个方面: 数据预处理:对原始数据进行…...

LabVIEW开发分段反射器测试台

LabVIEW开发分段反射器测试台 随着对太空的观察需求越来越远,而不是当前技术(如哈勃望远镜)所能达到的,有必要增加太空望远镜主镜的尺寸。但是,增加主镜像的大小时存在几个问题。随着反射镜尺寸的增加,制造…...

二级python和二级c哪个简单,二级c语言和二级python

大家好,小编为大家解答二级c语言和二级office一起报可以吗的问题。很多人还不知道计算机二级c语言和python哪个好考,现在让我们一起来看看吧! 介绍Python有很多库和使用Qt编写的接口,这自然创建c调用Python的需求。一路摸索,充满艰辛的添加头…...

E: Package ‘curl‘ has no installation candidate/ E:软件包没有可用的安装源

解决方案: 访问etc/apt/source.list 修改或者添加安装源 不用版本的Linux 有不同的配置比如我的是Debian 12 其他版本的去搜索引擎搜索即可 vim /etc/apt/source.list 改成修改或添加 // 以下是官方示例 deb http://deb.debian.org/debian bookworm main non-…...

代理模式及常见的3种代理类型对比

代理模式及常见的3种代理类型对比 代理模式代理模式分类静态代理JDK动态代理CGLIB动态代理Fastclass机制 三种代理方式之间对比常见问题 代理模式 代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可…...

8.6 校招 内推 面经

绿泡泡: neituijunsir 交流裙,内推/实习/校招汇总表格 1、面经 | 车载测试-23 面经 | 车载测试-23 2、校招 | 荣耀2024届全球校园招聘启动(内推) 校招 | 荣耀2024届全球校园招聘启动(内推) 3、校招 |…...

【大数据之Flume】七、Flume进阶之自定义Sink

(1)概述:   Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个 Flume Agent。 Sink 是完全事务性的。在从 Channel 批量删除数据之前,每个 Sink 用 Chan…...

vue对于时间的处理

2023-08-05 11:25:45 假如这个就是我们要传的时间字符串 比如今天是2023-08-05(同一天):现在把这个时间字符串传入到 formatDate()这个方法,就会给你返回 11:25 比如今天是2023-08-06(前一天&a…...

Apache DolphinScheduler 3.1.8 版本发布,修复 SeaTunnel 相关 Bug

近日,Apache DolphinScheduler 发布了 3.1.8 版本。此版本主要基于 3.1.7 版本进行了 bug 修复,共计修复 16 个 bug, 1 个 doc, 2 个 chore。 其中修复了以下几个较为重要的问题: 修复在构建 SeaTunnel 任务节点的参数时错误的判断条件修复 …...

科技云报道:一波未平一波又起?AI大模型再出邪恶攻击工具

AI大模型的快速向前奔跑,让我们见识到了AI的无限可能,但也展示了AI在虚假信息、深度伪造和网络攻击方面的潜在威胁。 据安全分析平台Netenrich报道,近日,一款名为FraudGPT的AI工具近期在暗网上流通,并被犯罪分子用于编…...

深度对话|如何设计合适的网络经济激励措施

近日,我们与Mysten Labs的首席经济学家Alonso de Gortari进行了对话,讨论了如何在网络运营商和参与者之间找到激励措施的平衡,以及Sui的经济如何不断发展。 是什么让您选择将自己的经济学背景应用于区块链和Web3领域? 起初&…...

opencv带GStreamer之Windows编译

目录 1、下载GStreamer和安装2. GSTReamer CMake配置3. 验证是否配置成功 1、下载GStreamer和安装 下载地址如下: gstreamer-1.0-msvc-x86_64-1.18.2.msi gstreamer-1.0-devel-msvc-x86_64-1.18.2.msi 安装目录无要求,主要是安装完设置环境变量 xxx\1…...

Java并发编程之锁的升级

Java 中的锁机制是多线程编程中的一部分。锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。 锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能…...

多核异构处理器A核与M核通信过程

多核异构处理器是指集成了不同类型或架构的CPU的系统级芯片(SoC)。 例如,有些处理器同时包含了高性能的A核(如Cortex-A)和低功耗的M核(如Cortex-M)。 这样的设计可以让不同的CPU负责不同的任务…...

面试热题(反转链表)

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 链表的题&#xff0c;大部分都可以用指针或者递归可以做&#xff0c;指针如果做不出来的话&#xff0c;…...

竞赛项目 深度学习的水果识别 opencv python

文章目录 0 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习…...

Java项目部署云windows细节

springboot项目 pom文件中必须要有这个插件&#xff08;正常其实都有就是我手贱以前不小心删除了&#xff09; 他的作用是查找主类 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-…...

软件功能测试有什么注意事项?功能测试报告起到什么作用?

软件功能测试是软件开发过程中至关重要的一环&#xff0c;它用于评估软件功能的质量和稳定性&#xff0c;并确保软件能够按照预期进行工作。然而&#xff0c;在进行功能测试时&#xff0c;有一些注意事项需要特别关注&#xff0c;以确保测试的准确性和有效性。 一、软件功能测…...

Kubernetes 调度 约束

调度约束 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 Pod 和 Container。 APIServer…...

Grafana技术文档-概念-《十分钟扫盲》

Grafana官网链接 Grafana: The open observability platform | Grafana Labs 基本概念 Grafana是一个开源的度量分析和可视化套件&#xff0c;常用于对大量数据进行实时分析和可视化。以下是Grafana的基本概念&#xff1a; 数据源&#xff08;Data Source&#xff09;&#…...