我们提供了高并发的部署教程,用以支持流量大,和并发高的使用场景。
配置要求、压力测试
最低配置要求:
Linux服务器:≥2 台,CentOs系统,4核16G;
Mysql数据库:≥2 台,4核16G,硬盘依业务量而定(推荐1T);
消息队列:≥2 台,4核16G;(如果要求不高,可以和计算服务器共用)
Webfunny高并发架构图:
第一步、下载(clone)最新部署包,初始化
第二步、配置数据库(Mysql)连接
第三步、配置IP和端口号(使用域名,请看下一步)
第四步、配置代理、域名
以上四步均可参考 单点部署教程
第五步、多点部署 参考 多点部署教程
第六步、增加消息队列
使用消息队列(RabbitMq),主要是为了缓解流量高峰的压力,削峰填谷。目前只能够支持RabbitMq,后续将会暴露出消息接口,以支持多种消息队列。
1. 我们需要多个消息队列服务,一台服务器对应一个消息队列。
2. 进入monitor/config_variable/config.json文件中,调整参数:messageQueue: true
3. 进入monitor/lib/RabbitMq.js文件中配置消息队列的连接信息
constructor() {
// 消息队列配置如下
this.mqConfig = {
protocol: 'amqp',
hostname: 'localhost',
port: 5672,
username: 'webfunny',
password: '123456',
locale: 'en_US',
frameMax: 0,
heartbeat: 0,
vhost: '/',
};
this.open = amqp.connect(this.mqConfig);
}
配置完成后,重启即可。
如果想要自己安装RabbitMq,可以参考文档第三条 消息队列安装
第七步、提升mysql最大连接数
正常情况下,如果我们的日志并发量比较高,我们遇到的第一个并发问题,应该是数据库的最大连接数。
如果给mysql设置一个合理的最大连接数,应该就能够支持一定量的并发了。
1. 如何设置mysql连接数,请参考我的这篇博客:Mysql连接数设置
2. 如何设置连接池数量,默认设置500,如果并发量高的用户,可以提高连接池数量,配置文件: config/db_local.js
pool: {
max: 500, // 此处可提升
min: 0,
acquire: 30000,
idle: 10000
},
第八步、增加读写分离
为了提升mysql数据库的抗压能力,需要将读写拆分开,webfunny可以使用读写分离的配置。
进入monitor/config_variable/config.json文件中配置主数据库、从数据库的连接信息:
"mysqlConfig": {
"write": {
"ip": "xxx.xxx.xxx.xxx", // 远程ip地址
"port": "3306", // 端口号
"dataBaseName": "webfunny_db", // 数据库名
"userName": "root", // 用户名
"password": "123456"
},
"read": [
{
"ip": "xxx.xxx.xxx.xxx", // 从库远程ip地址
"port": "3306", // 从库端口号
"dataBaseName": "webfunny_db", // 从库数据库名
"userName": "root", // 从库用户名
"password": "123456"
}
]
}
注意:mysql的主从同步需要用户自己来完成,webfunny无法进行主从数据同步
好了,到此,webfunny的高并发配置就完成了。物理配置越高,支持的数据量越大。