用SpringBoot+Mybatis+ES实现一个每秒百万级QPS的高并发系统的设计实现步骤

1.概述


  这个系统我们是用JAVA实现的,应用框架主要是springboot+Mybatis+ES,已经应用于线上生产系统。一个系统的稳定运行,最重要的一般数据层,一般是数据库或者是数据检索系统来保存数据层的数据,这里我用的是Mysql和ES,再往上一级就是应用系统这里我用的是Tomcat。
   应用系统这里既可以按传统的MVC方式提供用户界面,也可以只提供接口api数据。因为现在的大部分系统都已经是前后端分离,所以这里应用系统只提供api数据,给前端或者是手机app提供基础数据。
项目结构图如下:

在这里插入图片描述

2.数据层的安装以及优化

  Mysql5.7我用的是编译安装,如果安装可以按照《Centos7 Mysql5.7.21的编译安装》这边文章具体安装。

对于Mysql的优化,我这边有以下几点:

  1.Mysql的文件系统最好使用XFS,因为XFS的元数据效率能够使同步写操作的速度高于其他文件系统,具体的其他优势,可以在网上查找。数据库本身就是一种IO型产品,对磁盘进行一下性能测试,得出磁盘的吞吐量,当然是越快越好。比如,我现在写一个8G的文件到磁盘得到得结果如下:得到每秒98.8MB/s,对于一个ssd磁盘非常的不错了。
在这里插入图片描述
同时我写另外一台机器得出结果就是下面这样: 这个就只有23.5MB/s,明显比上面的慢了很多
在这里插入图片描述

  2.在进行文件系统挂接时候,开启nobarrier,nolargeio,noatime,nodiratime这样可以提高将近10%左右的性能。

具体配置选项的作用,可以去百度一下。我的挂接是这样的

/dev/vdb1 /app/soft/ xfs rw,dev,exec,auto,nouser,async,nobarrier,inode64,nolargeio,noatime,nodiratime,swalloc 1 2

  3.mysql的默认引擎,用Innodb。my.cnf的Innodb优化选项如下 这是一台标准的32G 内存1T SSD硬盘的配置:

[mysqld]
server_id=1
log-bin=mysql-bin
sync_binlog = 1
binlog_format = mixed
datadir
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机核动力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值