17 一个高并发的系统架构如何设计

高并发系统的理解

第一:我们设计高并发系统的前提是该系统要高可用,起码整体上的高可用。
第二:高并发系统需要面对很大的流量冲击,包括瞬时的流量和黑客攻击等
第三:高并发系统常见的需要考虑的问题,如内存不足的问题,服务抖动的问题、磁盘不足的问题、网络带宽的问题、突发流量的问题、面对黑客攻击的问题

高并发的架构设计

  1. 垂直拆分业务
    一个大型的系统业务相对复杂,不同的业务需要面对的流量压力也不同。我们可以根据不同的业务垂直拆分业务(DDD),我们可以根据业务拆也可以根据机器的特性拆服务,这些就要看具体的业务和系统运营方向。
    微服务拆分需要把一个单体的应用,按照一定的维度(业务域的维度、机器特性的维度等等)拆分成多个服务模块。
    例如:电商系统拆分成用户系统、订单系统、商品系统。

  2. 数据的垂直和水平拆分+分库分表

网络请求的流量虽然可以通过缓存,mq的削峰等缓解压力,但最终数据部分的压力还是会压到数据库上。数据库的垂直拆分主要是根据我们上面的垂直拆分业务后,根据对应模块的业务做对应的数据库设计。
我们分库还有一个原则就是一个数据库实例操作数据的瓶颈受到数据库引擎程序执行的瓶颈影响,所以在高并发的环境下,做好了垂直拆分的数据库,如果一个数据库实例承载不了并发的情况下,我们也要做水平拆分,一般会根据主键hash求模或数值型主键求模做水平拆分。
分表的场景主要面对单表数据库过大的场景使用。
数据库的分库分表主要使用mycat(由于做的不是很完善,特别是跨库查询的问题用的人越来越少,sharding jdbc(目前主流的用法))。

  1. 数据库的读写分离、双主等
    在高并发的场景中,我们单库能够承载1000左右的tps,如果并发太高对数据库的压力就会很大。不过我们的业务一般都是读多写少的场景,这个时候我们可以考虑数据库的一主多备的部署,读操作从备库中读取。
    还有我们的系统后台管理,经常会有慢sql查询,这些可以单独拿出来备库做后管的操作。防止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值