宗老师计算机教学-大型集群开发基础知识
前言:主要针对低年级本科生和刚入门的技术开发人员。
1.基本概念
- 缓存: 缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快,主要用于数据的预读取、写入和临时存储。
- 数据库: 数据库是一个结构化的数据存储系统,用于有效地组织、存储和管理大量相关数据。它是一个电子化的信息仓库,可用于存储各种类型的数据,如文本、数字、图像等。数据库系统允许用户通过查询和操作,以快速、准确的方式检索和更新数据。数据库使用特定的管理系统(DBMS)来处理数据,执行诸如添加、删除、修改和查询等操作。常见的数据库类型包括关系型数据库(如MySQL、Oracle)、NoSQL数据库(如MongoDB、Redis)等。数据库的优势在于数据一致性、可靠性和安全性的维护,以及支持多用户并发访问。
- 消息中间件:消息中间件是一种用于在分布式应用程序之间传递和管理数据的软件解决方案。它充当了不同组件、系统或服务之间的桥梁,使它们可以通过异步通信方式交换信息。消息中间件的核心概念是消息队列,其中生产者将消息发送到队列,而消费者从队列中获取消息并处理。这种模式解耦了系统的各个部分,允许它们独立演化,从而提高了系统的可伸缩性和可维护性。消息中间件还支持发布/订阅模式,允许订阅者订阅特定类型的消息。这种架构在异步通信、解决网络延迟、处理高并发等方面具有优势,广泛用于大规模系统、微服务架构、物联网应用等。
-
2.1服务治理服务 - Docker
-
基本描述
功能用途
应用版本
docker-ce:19.03.6
部署过程
一、安装说明
二、配置说明
三、启动说明
2.2数据缓存服务 - Redis
基本描述
用于中间数据的缓存,包括呼叫中心数据(任务数据,媒体服务的状态,主叫资源数据),和业务中心数据(用户登录信息缓存,企业和组织数据一级缓存,信息采集的临时数据)
应用版本
redis:5.0.7
部署过程
- 安装说明
-
(1)上传redis docker镜像
- 复制配置文件到目标目录,配置文件:redis-6379.conf,redis-6380.conf, redis-6381.conf, sentinel-26379.conf, sentinel-26380.conf, sentinel-26381.conf
- 复制启动脚本run.sh
- 配置说明
- redis-6379.conf
-
#端口
port 6379
#指定日志文件目录
logfile "redis-6379.log"
#指定本地数据库存放目录
dir "/data"
#AOF持久化开启
appendonly yes
#指定更新日志文件名,默认为 appendonly.aof
appendfilename "appendonly.aof"
#主节点密码设置
masterauth "Redis_123"
#密码设置,主从节点密码需要相同
requirepass Redis_123
# Generated by CONFIG REWRITE
user default on #e6a71db7ab90260dd2dacebc50e153e8f77673c0c7d14a3ff69d0a8b26175280 ~* +@all
指定主节点IP和端口号
replicaof 172.24.6.4 6380
- sentinel-26379.conf
-
#端口
port 26379
#指定本地数据库存放目录
dir "/data"
#指定日志文件目录
logfile "sentinel-26379.log"
#id
sentinel myid 546a7e62f6e6dc77d77ad13fde5ad4b73c8bd3c3
#避免脚本重置,默认值yes
sentinel deny-scripts-reconfig yes
#告诉Sentinel监听指定主节点,并且只有在至少<quorum>哨兵达成一致的情况下才会判断它 O_DOWN 状态。
sentinel monitor mymaster 172.24.6.4 6380 2
#主节点或副本在指定时间内没有回复PING,便认为该节点为主观下线 S_DOWN 状态,单位毫秒。
sentinel down-after-milliseconds mymaster 10000
# Generated by CONFIG REWRITE
user default on nopass ~* +@all
#指定故障转移超时(以毫秒为单位)。
sentinel failover-timeout mymaster 60000
#如果redis配置了密码,那这里必须配置认证,否则不能自动切换
sentinel auth-pass mymaster Redis_123
#集群元数据信息
sentinel config-epoch mymaster 621
sentinel leader-epoch mymaster 622
sentinel known-replica mymaster 172.24.6.4 6379
sentinel known-replica mymaster 172.24.6.4 6381
sentinel known-sentinel mymaster 172.17.0.4 26381 5ac15ffd5ca37f111670c6d77f6b1ddd87dcaf9d
sentinel known-sentinel mymaster 172.17.0.3 26380 545a2ae494f986a8930f83abad3e0d1990e1dac8
sentinel current-epoch 622
三、启动说明
执行启动脚本 run.sh
2.3消息队列服务 - RocketMQ
基本描述
RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件,主要用于系统间呼叫记录,消息推送,等的数据传输。
应用版本
rocketmq:4.4.0
部署过程
- 安装说明
-
(1)上传rocketmq docker镜像
- 复制配置文件到目标目录,配置文件:broker.conf
- 复制启动脚本rmqnamesrv.sh,rmqbroker.sh
- 配置说明
-
broker.conf
#broker集群名称,用于划分broker
brokerClusterName=DefaultCluster
#broker名称,用于主从配对,相同名称的broker才能做主从设置
brokerName=broker-a
#Master节点设置
brokerId=0
#未消费的持久化消息清理时间点
deleteWhen=04
#持久化消息保存周期(单位:小时),超过该周期将被清理
fileReservedTime=48
#broker角色(SYNC_MASTER:同步双写Master、ASYNC_MASTER:异步复制Master、SLAVE:Slave)
brokerRole=ASYNC_MASTER
#刷盘方式(ASYNC_FLUSH:异步刷盘、SYNC_FLUSH:同步刷盘)
flushDiskType=ASYNC_FLUSH
#当前broker监听的IP
brokerIP1=172.24.6.4
#name server服务器地址及端口,可以是多个,分号隔开
namesrvAddr=172.24.6.4:9876
#检测物理文件磁盘空间,磁盘空间使用率不能超过98%
diskMaxUsedSpaceRatio=98
#发送消息的最大线程数
sendMessageThreadPoolNums: 64 #large thread numbers
#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage: true
- rmqnamesrv.sh
-
docker rm -f rmqnamesrv
docker run -it -d --name rmqnamesrv \
--restart=always \
-p 9876:9876 \
-v /home/intelligentcall/rocketmq/namesrv/logs:/home/rocketmq/logs \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq:4.4.0 sh mqnamesrv
MAX_POSSIBLE_HEAP:最大允许堆内存
(4)
docker rm -f rmqbroker
docker run -it -d --name rmqbroker \
--restart=always \
-p 10911:10911 \
-p 10909:10909 \
-v /home/intelligentcall/rocketmq/broker/logs:/root/logs \
-v /home/intelligentcall/rocketmq/broker/store:/root/store \
-v /home/intelligentcall/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
--link rmqnamesrv:namesrv \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
-e "autoCreateTopicEnable=true" \
rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
NAMESRV_ADDR: NameServer的地址列表
MAX_POSSIBLE_HEAP:最大允许堆内存
- 启动说明
-
按顺序启动 rmqnamesrv.sh,rmqbroker.sh