亿级连接应用:Jetty集群与Haproxy优化策略
需积分: 49 38 浏览量
更新于2024-08-24
收藏 1.92MB PPT 举报
本文档主要探讨了如何设计和实现第一版方案,以构建能够支持上千万HTTP长连接的应用。作者张乐伟与韩彰分享了他们的经验和策略,重点关注了硬件负载、软件负载均衡以及解决在高并发场景下遇到的挑战。
首先,硬件负载方面,文章提到了使用Jetty集群作为基础架构。Jetty是一款轻量级的Web服务器,集群化的目的是为了分散大量的连接请求,提高处理能力。同时,Haproxy被作为负载均衡器部署,它支持多种负载均衡算法,如轮询(RR)、最少连接(LeastConnection)、IP哈希(Iphash)、URI哈希(Urihash)和URL参数哈希(url_paramhash),以确保请求的高效分发。
文章特别强调了Session sticky策略,即通过设置session粘性,使得客户端的会话保持在特定的后端服务器上,这对于减少网络开销和提高性能至关重要。Haproxy还支持虚拟主机功能,以及一致性哈希算法,有助于保持请求的稳定路由。
然而,随着连接数量的增长,如达到Jetty支持的4万个连接以上,系统面临的主要瓶颈是连接数限制和内存管理。每30秒断开一次连接并重新建立会导致大量内存占用,特别是当这些连接主要在Old代内存区域时,由于全GC(Full Garbage Collection)的频繁发生,应用程序会遭受长时间暂停。为优化这个问题,作者提出了使用并发标记清除(Concurrent Mark-Sweep,CMS)垃圾回收策略,通过扩大年轻代(包括Eden、S0和S1区)来减少Old代的内存压力。
此外,文档中还提及了多页面交互的解决方案,如每个页面独立连接和Flash方案(如FlashDB和LocalConnection),以及通过轮询cookie来维护长连接状态。然而,这些方法并非所有浏览器都支持良好,尤其是对于HTML5和部分旧版本浏览器,兼容性是一个挑战。
这篇文档提供了构建大流量HTTP长连接应用的第一版方案,包括硬件选择、负载均衡策略和内存管理优化,同时也揭示了在实际应用中需要注意的问题和潜在挑战。这对于开发和运维人员理解和实现高性能、高并发的Web服务具有很高的参考价值。
2022-11-23 上传
2018-01-30 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
115 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
小炸毛周黑鸭
- 粉丝: 25
最新资源
- imgix-emacs: Emacs内图像编辑与imgix URL生成工具
- Python实现多功能聊天室:单聊群聊与智能回复
- 五参数逻辑回归与数据点拟合技巧
- 微策略MSTR安装与使用教程详解
- BootcampX技术训练营
- SMT转DIP分线板设计与面包板原型制作指南
- YYBenchmarkFFT:iOS/OSX FFT基准测试工具发布
- PythonDjango与NextJS构建的个人博客网站指南
- STM32控制433MHz SX1262TR4-GC无线模块完整设计资料
- 易语言实现仿SUI开关滑动效果源码教程
- 易语言寻路算法源码深度解析
- Sanity-typed-queries:打造健壮的零依赖类型化查询解决方案
- CSSSTATS可视化入门套件使用指南
- DL_NG_1.4数据集压缩包解析与使用指南
- 刷卡程序及makefile编写教程
- Unreal Engine 4完整视频教学教程中文版208集