Java 并发编程:高并发思考点

时间:2021-08-19 14:42:36

1、高并发秒级活动的前期准备,比如开户、预订金等,为了避免高并发涉及其他相关的系统,可以通过削峰填谷策略。

  • 提前蓄水开户,在活动爆发前,采集近期内的活跃会员进行批量提前开户,降低活动开始时的开户压力。
  • 进入红包活动聚合页提前开户,在用户进入红包活动聚合页时提前开户,降低发红包以及抢红包中的开户压力。

2、多级缓存(热点数据全局缓存)

使用Redis和Encache等缓存工具对高访问热点数据进行缓存。实际中常采用的是Redis缓存,就是利用了Redis的单线程和高吞吐的特性。因为Redis是单线程的,所以在修改数据方面是线程安全的。

3、目前互联网系统都是分布式的集群,所以在分布式的下,要修改数据保证数据的安全可靠性,一般的事物管理在这就起不到作用,一套可靠安全的分布式锁是值得深思的。目前市面上可行的分布式锁大致可分为:

(1)底层的数据锁

(2)分布式的Redis锁

(3)zookeeper锁

对于这三个锁的利弊在这里就不一一分析了,具体的差异可以参考以他资料,这里使用的是基于分布式的Redis锁,这里使用的是分布式的Redis锁组件,RedisOneBuOneTemplate组件。

4、高可用的架构

Java 并发编程:高并发思考点

  • 前端流量会通过 HLB 来分发和负载均衡至 WAF 平台。
  • WAF 经过防火墙处理后分发至 HTTP 服务集群(目前主要为 Nginx)。
  • 然后由 HTTP 服务器进行流量反向代理,分发至后端应用服务器进行处理。
  • 服务与服务之间,通过 RPC 远程调用框架(RSF)进行服务的发现,注册与调用,消息队列使用 Kafka 进行通信。
  • 在存储层使用 Mycat 来访问分布式数据库进行读写操作,分布式缓存使用多分片 Redis 进行存储。