1、图片投票(PHP)
投票展示对象为图片(上千个),开发语言php,负载均衡高可用开启会话保持,使用高速缓存,NFS共享程序数据,后端mysql主从。
2、视频投票(Tomcat)
投票对象为小视频(上千个),开发语言Java,负载高可用,使用动静分离加CDN分发,后端mysql主从。
对比php开发的同样的投票项目,java稳定性以及扛并发似乎更高些,但是成本也高些。
投票项目除了要考虑到高可用,高性能,还得对于防作弊行为作出限制,并且增加安全防护,因为实际环境中投票对象除了正常拉票外,更可能的是直接买票。
项目架构的重点大概有以下几个:
- 安全防护:DDOS、CC、web漏洞的安全防护
- 防作弊:对于投票人的真实性作出判断以及限制:主要从IP,时间段,验证方式:除了使用防机器人识别的程序验证加入手机验证码机制,并从异常的手机号中抽取几个打电话进行询问是否真实。
- 高可用高性能:负载均衡使用高可用架构及后端web服务器可横向扩展。
- 缓存:高性能缓存提高访问速度
- 数据库:Mysql主从双机热备
- 动静分离并加入CDN提高访问速度
- 如果无法预估流量,可以考虑使用弹性伸缩。