Java高可用架构设计-【春晚大流量高并发】

场景一 春晚大流量高并发

https://www.toutiao.com/article/7087738138654704131/?log_from=036bdb534fca5_1650254671454

前端接入CDN

在全国各地都搞一批服务器,然后呢,让CDN提前请求我们的后端系统,把一些图片、视频一类的静态资源都加载到 全国各地的CDN服务器上去。

接着呢,全国各地的用户打卡手机APP,想要加载图片和视频的时候,就近找一个距离自己最近的CDN服务器加载图片和视频就可以了,这样就可以让超高流量分散到全国各地的很多CDN服务器上去了,大家看下图
在这里插入图片描述

基于Nginx+tomcat+redis的多级缓存读方案

就是说全国各地用户还是得发送大量的请求到我们后台系统来加载一些数据,那么对于这种高并发的数据读取该怎么来抗呢?简单,上一套多级缓存架构,我们可以在tomcat前面加一层nginx反向代理服务器,在nginx里可以基于lua脚本自己写代码,然后在nginx的内存里可以基于LRU策略缓存一些热门数据。

然后如果是nginx里 没有缓存到的数据,可以在我们的业务系统tomcat里用本地cache,比如说guava就可以提供本地缓存cache,同样基于LRU策略缓存一些数据,最后就是如果tomcat本地缓存里也没有,就可以去redis分布式缓存集群里加载缓存数据。

基本上通过ngxin+tomcat+redis三级缓存架构,就可以把高并发读取的流量全部抗下来了,如下图
在这里插入图片描述

超高并发写请求RocketMQ削峰填谷方案

首先第一个是机器扩容,因为如果有大流量的数据写入,那确实咱们平时的业务系统部署的机器数量可能是不够多的,所以往往再抗这种大活动的时候,得临时扩容一批机器出来,这是第一。

第二,一般来说这种大流量数据写入,往往会采取让我们业务系统收到请求后,先写入到redis缓存里去,然后写一个消息到rocketmq里去,接着再从rocketmq里消费消息后异步落入db里去,因为数据库能抗的写入压力是有限的,大并发流量写入是不适合他的,所以往往会用这种方式来做一个处理,同样的机器配置,redis和rocketmq可以抗几万并发,mysql只能抗几千并发。

所以此时,架构如下图所示。
在这里插入图片描述

系统限流防雪崩体系架构方案

最后呢,其实还应该再加一个机制,那就是限流,因为在上述这套架构上线以前,应该对这套架构通过三级缓存可以抗多大读流量压力,以及基于写入redis+rocketmq异步写db,可以抗多大写流量压力,包括临时扩容一批机器后,整体全链路大致可以抗多大的读写TPS,这些都得通过全链路压测去测试出来。

然后应该根据这个系统能整体抗的最大读写压力,在nginx那一层加入限流机制,一旦要是每秒流量超过了最大值,此时直接限流,不允许继续放行,避免系统被压垮,如下图所示。
在这里插入图片描述

转自https://www.toutiao.com/article/7087738138654704131/?log_from=036bdb534fca5_1650254671454

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java-Base64算法_创新_防止表单重复提交 JAVA企业级基础课题(HashMap那些事) 企业架构师必备技能(JAVA核心技术反射) JavaWeb之基础(手写实现Tomcat服务器) java多线程编程 纯手写实现SpringIOC实现过程 JEE企业级开发(企业级项目开发权威指南) 网络爬虫之JAVA正则表达式 手写springMVC框架 老司机带你透析springMVC内部实现方式 打造高效代码结构(java性能优化) 新版本通俗易懂_观察者模式递进时讲解 ibatis连接数据库 高并发之单(多)生产者消费者线程 高并发复用数据库链接技术详解之数据库连接池 类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化处理 图片上传技术 在springMVC中实现原始的Excel文件下载方式 企业级分布式缓存技术之(redis详解) 企业高并发基石(Tomcat服务器性能优化) spring事务处理 课程文档 高并发之基础数据MySql调优 mongodb 三级联动课程资料 应用架构之灵魂设计模式 应用架构之魂设计模式实战演练应用架构之魂设计模式实战演练 揭开springAOP神秘面纱(动态代理) Mysql性能优化之索引优化 写实现Tomcat服务器 移动后台端框架设计 公司级框架原理解析 解密公司内部框架开发(打造属于自己的专属框架) 手写Tomca之深度解析动态资源请求原理 深度解析springMVC实现原理(手写springMVC框架) Java验证码 正则黑名单爬虫系统 深入数据库连接池内部运转原理 分布式服务下的交易一致 企业必备技能之面向服务编程Web-Service详解 分布式服务下的交易一致性原理及解决 分布式服务框架(dubbo+zookpeer) WEB高级前后台分离思维-懒加载无限级树形菜单 动态页面的静态化处理 大并发展示优化,动态页面的静态化 深入理解JDK动态代理本质 企业级高并发缓存解决方案 性能优化之Oracle语句优化雾区 前后台数据验证架构源码级解析 session跨域共享 JAVANIO原理详解 高并发数据库(Mysql数据库性能优化) 软件质量管控 企业常用框架springMVC基于注解+xml配置方式实现链接 WEB服务器优化之Tomcat7性能调优 JVM概述 Java开发技术之(项目工程的日志管理) 数据库连接池原理详解 Java企业级框架之核心技术(反射) Java-Base64算法(创新_防止表单重复提交) 揭开springAOP神秘面纱之动态代理 网络爬虫之JAVA正则表达式

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值