处理高并发的业务逻辑
- 前端: 异步请求 + 资源静态化 + cdn
- 后端: 请求队列 + 轮询分发 + 负载均衡 + 共享缓存
- 数据层: redis + 数据分表 + 写队列
- 存储: raid阵列 + 热备
- 网络: dns轮询 + DDOS防护
简而言之就是分区、分表、分库,后端算法优化,公共数据缓存,服务器上负载均衡,前端减少连接数、瘦身
如何学习高并发
redis, nginx, keeplive, DRBD, heartbeat这些工具在虚拟机上面跑起来.
因为有些工具运行的配置要求太高, 必须多台服务器配合才能完成. 总监那边选型TiDB,已经和老板申报了机器.
模拟高并发
公司内则用php写了一些针对要测试的功能点的脚本
如何向别人吹我们的系统
- 采用了复杂的分层方案,以保证良好的性能和水平扩展性。要点如下:
- 动静分离: 通过CDN系统分发静态资源: js, css, 图片, 音频, 视频等资源
- 应用集群: 通过负载均衡技术,实现的应用服务器集群,具有很高的并发处理能力和扩展性。可以根据实际需要迅速扩充服务器,部署应用之后即可直接上线提供服务。
- 缓存集群: 通过一致性Hash算法实现实现缓存分片,保证缓存系统的响应速度和可扩展性。通过主从复制,保证缓存系统的可靠性。
- 读写分离: 读写分离,保证两者都具有具有良好的性能。采用写直达技术,保证缓存和数据库数据的一致性。
- 数据库集群: 采用分布式数据库集群技术(垂直和水平切分技术,复制技术),保证数据库系统的性能、稳定性和可扩展性。
- 消息队列和辅助任务集群: 长时间运行的任务,先入队列,再由系统调度到后台任务集群中运行,可保证前端页面的响应性能,并为大型的分析作业提供运行环境,并具有很高的扩展能力。
- 充分测试:
- 持续集成: 持续的自动化测试。
- 压力测试: 系统功能模块在上线之前,会经过充分的性能和压力测试,只有在功能、性能和吞吐量达到预期设计指标后,才会上线运行。
- 部署和监控方案:
- 红蓝部署: 保证系统升级和发布的稳定性,出现问题时,可迅速回退。
- 容灾机制: 自动备份机制,降低灾难性事件(如自然灾害等)对系统的影响。
- 监控方案: 完善的自动监控和报警方案,可以提前发现和报告异常情况,并提醒运维团队及时处理相关问题。