java项目的分布式、高并发方案

您所在的位置:网站首页 java并发项目 java项目的分布式、高并发方案

java项目的分布式、高并发方案

2023-09-15 06:34| 来源: 网络整理| 查看: 265

一、设计高并发的技术方案:

1、扩容: 垂直扩容:提高服务器性能 水平扩容:增加服务器数量,线性扩充系统性能 2、消息队列:Kafka、RabitMQ、RocketMQ等。对高并发请求进行消峰、异步、解耦 3、缓存:redis、Memcache。部分请求通过缓存获取 4、微服务:springcloud或者dubbo 5、数据库:采用分库分表,主库用于写数据,从库用于读取数据,技术:MYCAT、Sharding-Sphere 6、限流:Guava RateLimiter 7、全文搜索和分析引擎:elasticserach

二、部分技术方案 1、使用缓存提高并发能力

部分请求可以走redis,搭建一个集群的redis框架,redis数据存在内存中,redis的并发量要比数据库高很多,支持几万个并发没问题 在这里插入图片描述

2、使用消息队列去消峰

消息队列的主要作用是消峰、解耦、异步。如果吞吐量需求特别高的话可以采用kafka作为消息队列技术方案,kafka的吞吐量可以高达10万级别,延迟在ms级别内,它是分布式的可用性非常高,消息几乎0丢失。如果吞吐量要求没那么高,可以考虑常用的RabbitMq,RabbitMq的吞吐量可以高达万级别,延迟在微妙级别,延迟非常的低,基本不丢包,中小型项目基本满足需求。 在这里插入图片描述

3、数据库分库分表

将数据库进行分库分表,提高并发率,减少请求响应时间,主库用来写数据,从库用来读数据,一般写数据远远少于读数据的请求,多个从库可以减少读数据库的压力,读写分离,互不干扰。 在这里插入图片描述

4、限流

guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,实际业务每次请求之前再从桶中获取令牌,拿到令牌的就能够有资格请求业务。可以设置限定的QPS,限制QPS之内的请求可以请求业务,多余的请求会被限制。 在这里插入图片描述

5、搭建微服务系统

使用springcloud或者dubbo将整个系统拆分为多个微服务系统,每个系统搭建个服务器,对部分请求频繁的微服务搭建集群系统,这样不同的请求就可以被分发到不同的微服务,各个微服务直接解耦合。 在这里插入图片描述

6、负载均衡、熔断、降级等

通过负载均衡将高并发请求分发到不同的微服务上去处理,可以轮训分发,也可以配置权重或者根据当前服务器的负载量进行分发。同时对部分请求进行降级和熔断处理。

三、高并发图解

高并发请求进入系统,被分发到不同的微服务,部分读请求可以通过缓存获取,那么这样并发的请求量就会相应的减少,剩下的请求量可以通过消息队列去消峰,避免直接对数据库进行请求;或者可以搭建分库分表,主库用来处理写请求,从库用来读请求;当然也可以通过将写数据请求通过消息队列去处理,读请求直接请求数据库的从库。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3