用户数增长,公司项目遇到并发的难题。网上学习几点如下:

处理高并发的业务逻辑

  • 前端: 异步请求 + 资源静态化 + cdn
  • 后端: 请求队列 + 轮询分发 + 负载均衡 + 共享缓存
  • 数据层: redis + 数据分表 + 写队列
  • 存储: raid阵列 + 热备
  • 网络: dns轮询 + DDOS防护

简而言之就是分区、分表、分库,后端算法优化,公共数据缓存,服务器上负载均衡,前端减少连接数、瘦身

如何学习高并发

redis, nginx, keeplive, DRBD, heartbeat这些工具在虚拟机上面跑起来.
因为有些工具运行的配置要求太高, 必须多台服务器配合才能完成. 总监那边选型TiDB,已经和老板申报了机器.

模拟高并发

tengine

公司内则用php写了一些针对要测试的功能点的脚本

如何向别人吹我们的系统

  1. 采用了复杂的分层方案,以保证良好的性能和水平扩展性。要点如下:
  • 动静分离: 通过CDN系统分发静态资源: js, css, 图片, 音频, 视频等资源
  • 应用集群: 通过负载均衡技术,实现的应用服务器集群,具有很高的并发处理能力和扩展性。可以根据实际需要迅速扩充服务器,部署应用之后即可直接上线提供服务。
  • 缓存集群: 通过一致性Hash算法实现实现缓存分片,保证缓存系统的响应速度和可扩展性。通过主从复制,保证缓存系统的可靠性。
  • 读写分离: 读写分离,保证两者都具有具有良好的性能。采用写直达技术,保证缓存和数据库数据的一致性。
  • 数据库集群: 采用分布式数据库集群技术(垂直和水平切分技术,复制技术),保证数据库系统的性能、稳定性和可扩展性。
  • 消息队列和辅助任务集群: 长时间运行的任务,先入队列,再由系统调度到后台任务集群中运行,可保证前端页面的响应性能,并为大型的分析作业提供运行环境,并具有很高的扩展能力。
  1. 充分测试:
  • 持续集成: 持续的自动化测试。
  • 压力测试: 系统功能模块在上线之前,会经过充分的性能和压力测试,只有在功能、性能和吞吐量达到预期设计指标后,才会上线运行。
  1. 部署和监控方案:
  • 红蓝部署: 保证系统升级和发布的稳定性,出现问题时,可迅速回退。
  • 容灾机制: 自动备份机制,降低灾难性事件(如自然灾害等)对系统的影响。
  • 监控方案: 完善的自动监控和报警方案,可以提前发现和报告异常情况,并提醒运维团队及时处理相关问题。