1、 需求分析 庞大的业务访问量需要高性能、可靠的服务器框架支撑。高性能要求服务器在巨大压力下仍然高速运行,读写返回正确的业务信息,前端用户体验良好。可靠性要求服务器出现宕机、罢工等情况,可以及时恢复服务器正常工作状态,支持业务系统24小时健康运行。使用缓存、读写分离技术提高服务器访问资源速度,解决大访问量资源拥堵问题;使用负载均衡与高可用技术提高服务器响应速度以及服务器稳定性,解决服务器处理大用户量请求问题以及服务器宕机的及时恢复能力。
2、 基础架构 按照上述需求,基础架构划分下面几个模块:负载均衡与代理、Web主站服务、APP接口服务、图片服务器、数据库与缓存服务。
图片服务器也可以不需要存在与其他服务直接访问关系,他们只需要保存好访问图片对应关系,包括图片所属ID、路径、标识等。
3、 负载代理负载均衡代理主要是两个作用:实现多台机器按照算法轮流工作,分担服务压力,当一台机器宕机或者罢工,其他机器也可以继续运行;代理隐藏服务内部真实结构,多台对外提供统一地址,运行相同业务系统。
负载代理服务器本身也需要支持高可用性能,主从备份机器,主服务器发生故障时,从服务器及时顶替继续运行负载代理服务。Keepalived可以支持高可用性能,更加可以配置Keepalived自动执行自定义检测脚本,检测服务器的心跳,自动递减服务器的优先级,实现服务自动偏移功能。
4、 主站服务 主站框架是一个Web服务器(apache、tomcat、nginx等)集群,集群中全部机器运行相同业务系统。通过负载均衡代理与客户端通讯,每一次通讯只有一台机器为当前客户端服务。需要解决session共享问题,否则将会丢失用户的登录状态,在用户体验方面有逻辑错误。常见的共享session方法有数据库共享、cookie共享、内存共享。使用最多的是memcache共享方式,memcache把多个服务器的共享内存拼接成一块大的内存使用,保存用户的session信息。Tomcat服务集群可以简单配置memcache共享内存,PHP中也可以直接配置设置memcache共享内存。
5、 接口服务接口服务与主站服务功能大同小异,也是Web服务集群。在负载代理时候,通过七层代理转发正则匹配域名与目录,指向接口服务地址端口。对于划分更加细节的系统架构,接口服务也是单独的域名,启用四层负载代理连接集群,服务功能更加简单明了。
6、 图片服务 图片服务建立在分布式文件系统基础上,搭建Web服务主要支持图片访问上次下载功能。结合读写分离技术,图片上传划分一个子群,图片下载划分一个子群。前面搭建负载均衡服务器支持大量读写操作,两个子群建立在同一个文件系统,组成分布式文件系统。常见的文件系统有NFS、FastDFS、TFS、Hadoop等。
7、 数据库与缓存7.1、数据库集群 如果服务访问量非常大,数据库是访问速度最重要的影响因素。数据的读写操作往往占用大部分时间,数据表上百万级别记录,update操作时间开销会很大。而且外面有一条几万的数据库操作队列,那是人不崩溃,机器已经崩溃。首先是CPU占满,数据库里面堆满上锁sql语句,导致前端反应速度跟不上蜗牛。
7.2、缓存服务 缓存可以提高服务的响应速度,处理及时性要求高的数据时,数据首先进入缓存,然后通过消息队列写入到数据库。从数据库查询出来的实时数据也可以保存在缓存中,在缓存中直接提供用户访问,执行用户操作数据请求,再把数据返回数据库。
8、 安全加固 安全配置:隐藏常见系统服务信息、配置用户权限、开启防火墙、关闭无用系统服务、定期更新系统
9、 服务器监控配置运维监控平台,实时监控服务器的健康状况。CPU、内存、磁盘、输入输出、网络性能等参数,配置报警规则,触发报警是立即调用API接口或者第三方回调,发送报警信息到邮箱、微信等。同时,自定监控数据项,检测Web服务、数据库服务、后台程序等运行状态,连续出现拒绝服务行为立刻报警,通知管理员。
|
|