高并发的解决思路

一、什么是高并发?

互联网的三高指的是互联网分布式系统构架设计中必须考虑的的因素,即高并发、高可用、高性能。

高并发:通过设计保证系统能够同时并行处理很多请求。高并发常用的一些指标:
响应时间(Response Time):系统对请求作出响应的时间
吞吐量(Throughput):单位时间内处理的请求数量
每秒查询率QPS(Query Per Second):每秒响应请求数
并发用户数:同时承载正常使用系统功能的用户数

高可用:减小系统不能提供服务的时间,从而保持其服务的高度可用性。

二、高并发的设计思路

高并发的设计思路有两个方向,分别是垂直方向扩展和水平方向扩展。
垂直方向:提升单机能力
提升单机能力分为硬件和软件两个方面
①硬件方向,花钱升级机器,更多核更高主频更大存储空间更多带宽。
②软件方向,提升单机架构性能,例如:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间。
水平方向:分布式集群
只要增加服务器数量,就能线性扩充系统性能。为了解决分布式系统的复杂性问题,一般会用到架构分层和服务拆分,通过分层做隔离,通过微服务解耦。

三、高并发的解决方案

1、集群化:负载均衡

负载均衡就是把负载均衡的分配到不同的服务实例,利用集群的能力去对抗高并发,分为3种,

2、数据库:分库分表+读写分离

前面通过负载均衡解决了无状态服务的水平扩展问题,但我们的系统不全是无状态的,后面通常还有有状态的数据库,所以解决了前面的问题,存储有可能成为系统的瓶颈,我们需要对有状态存储做分片路由
分库:把一个库分成多个库,部署在多个数据库服务器上,主库承载写请求,从库承载读请求,从库可以挂载多个,因为一般读请求比写请求多,那么就可以把读请求的压力分散给各个从库。
分表:把一张数据表,根据字段的访问程度来拆分

3、读多写少:缓存

缓存本质来说是用空间换时间的思想,一般系统的读请求多于写请求,针对写少读多的场景,可以用缓存来解决。在写数据库的时候同时写一份数据到缓存集群里,然后用缓存集群来承载大部分的读请求,通过缓存集群就可以用更少的机器资源承载更高的高并发。

4、高写入:消息中间件

消息中间件也就是MQ集群,可以非常好的做写请求的异步处理,消息队列能做解控,把可以异步化的请求写入MQ,然后基于MQ做一个削峰填谷,然后再以平稳的速度向数据库发送请求,此时就会大幅度降低数据库的写入压力。

你可能感兴趣的:(java)