糗百架构演进:技术选型与高并发应对策略

需积分: 0 1 下载量 100 浏览量 更新于2024-07-21 收藏 762KB PDF 举报
糗百架构文档详细探讨了糗百网站的技术架构发展历程,该平台自上线以来,用户规模持续扩大,对系统的性能和可扩展性提出了极高的要求。以下是关键知识点的详细解析: 1. **用户规模与访问量**: - 糗百拥有约2000万注册用户和4000万非注册用户,日活跃用户达到320万,每日启动次数高达2000万次。 - 高并发访问压力巨大,每天处理1亿动态请求,高峰期每秒达到30000个请求。 2. **服务器配置**: - 系统由11台应用服务器组成,其中5台用于支撑Web服务(每台8核8GB),另外6台支持移动应用(每台8核16GB)。 - 使用18GB内存的Memcached作为分布式缓存,提高数据读取速度。 - 数据库方面,有6台MySQL服务器,包括1个主数据库(4核4GB)和5个从数据库(4核16GB),确保数据一致性。 3. **架构原则**: - 糗百遵循“没有最好的架构,只有最合适的架构”这一理念,强调简单性和可维护性(KISS原则)。 - 架构设计的核心是适应性和扩展性,随着用户增长,系统通过增加服务器来应对,同时保证系统的稳定性和正确性。 4. **架构选择**: - 选用了成熟且广泛使用的技术栈,如Nginx、Tornado(Python)、Memcached、Redis、MySQL,这些技术在高并发、低内存消耗、稳定性方面表现出色。 - Nginx作为负载均衡器,采用非阻塞式设计(epoll)和轻量级框架,减少异步接口的使用,提高效率。 - Tornado负责处理动态内容,通过快慢分离策略,将请求快速路由到不同的后端服务器,如app和web服务。 5. **快慢分离**: - 通过设置不同的upstream(负载均衡组)实现服务的快慢分离,例如appends组用于快速服务,appslowends组用于较慢但可能需要复杂处理的服务。 - Nginx的location配置中,根据查询字符串中的参数判断请求是否需要慢服务,实现动态路由。 总结来说,糗百的架构设计是围绕用户增长和性能优化展开的,通过合理配置服务器、选择成熟技术以及采用高效的设计模式,确保了平台在面对海量用户和高并发场景时的稳定性和可扩展性。这个文档对于理解大型网站架构设计和优化策略具有很高的参考价值。