第10章:10W QPS真刀实操__以及基于ZK+Netty手写分布式测试工具 177手机路人甲账号 主目录 暂时没用(新买云主机安装一些基础组件)
10W QPS真刀实操__以及基于ZK+Netty手写
分布式测试工具
参考链接
系统架构知识图谱(一张价值10w的系统架构知识图谱)
https://www.processon.com/view/link/60fb9421637689719d246739
秒杀系统的架构
https://www.processon.com/view/link/61148c2b1e08536191d8f92f
10W QPS真刀实操的要点
这个是一个复杂的工程
但是很有意义
漏斗模型中的请求分层过滤
漏斗型请求处理模型的核心策略,对请求进行 分层过滤。
而针对漏斗型请求处理模型(如秒杀场景)一 种核心策略,就是对请求进行分层过滤,从而过滤掉一些
无效的请求。案例:秒杀系统的分层过滤
比如,在秒杀系统中,请求分别经过 CDN、Nginx(商品详情)、微服务(如交seckill)和数据库 这几
层,那么:
1 大部分数据和流量在用户浏览器或者 CDN 上获取,这一层可以拦截大部分静态资源的读取;
2、经过第二层 Nginx(商品详情)时,尽量得走 Nginx Cache,过滤一些可以直接访问Nginx缓存的
请求;
经过第二层 Nginx(商品详情)时,也可以进行流控,还可以进行黑名单过滤,拦截掉一些无效的
流量;
3、再到服务层,进入微服务网关时,可以做用户的授权检验,对系统做好保护和限流,这样数据量和
请求就 进一步减少;
4、业务层,还可以进行数据的有效性、一致性过滤,这里又减少了一些流量。
这样就像漏斗一样,尽量把数据量和请求量一层一层地过滤和减少了。
分层过滤的核心思想是:在不同的层次尽可能地过滤掉无效请求,让“漏斗”最末端的才是有效 请求。而
要达到这种效果,我们就必须对数据做分层的校验。
分层过滤的基本原则是:通过在不同的层次尽可能地过滤掉无效请求, 尽早处理掉请求。
通过CDN过滤掉大量的图片,静态资源的请求。
读请求尽量命中缓存,不要穿透到数据库;
尽量将动态读数据请求,命中在三级缓存,或者二级缓存,过滤掉无效的数据读;
对写入操作进行削峰,争取批量写入,提高写入的吞吐量;
分层限流:防止系统雪崩
接入层
流量分发、负载均衡
按照用户规模,流量规模(吞吐量规模),接入层的架构方案不一样
slb 负载均衡, gslb
LVS简介
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 由章文嵩博士发起的自由软件项目,它的
官方站点是www.linuxvirtualserver.org。通过LVS提供的负载均衡技术和Linux操作系统实现一个高性
能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服
务性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从逻辑上可分为调度层、Server 集群
层和共享存储。
负载均衡(LB) 集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到 Director Server
上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器 (real server) 上。
为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据
是一样的。
lvs 的优点?抗负载能力强,因为 lvs 工作方式的逻辑是非常之简单,而且工作在网络 4 层仅做请求分发之用,没有
流量,所以在效率上基本不需要太过考虑。
有完整的双机热备方案,当节点出现故障时,lvs 会自动判别,所以系统整体是非常稳定的。
基本上能支持所有应用,因为 lvs 工作在 4 层,所以它可以对几乎所有应用做负载均衡,包括 http、数
据库、聊天室等等。
lvs 负载均衡机制
lvs 是四层负载均衡,也就是说建立在 OSI 模型的第四层——传输层之 上
传输层上有 TCP/UDP,lvs 支持 TCP/UDP 的负载均衡
因为 LVS 是四层负载均衡,因此它相对于其它高层负载均衡的解决办法, 比如 DNS 域名轮流解析、应
用层负载的调度、客户端的调度等,它的效 率是非常高的
lvs 的转发可以通过修改 IP 地址实现(NAT 模式)
lvs 的转发还可以通过修改直接路由实现(DR 模式)
lvs 与 nginx 对比?
负载度 lvs 优于 nginx
稳定度 lvs 优于 nginx
服务器性能要求 lvs 优于 nginx
网络层数的效率 lvs 优于 nginx