大型网站架构设计与方法总结( 二 )

  • 日志:统一的日志输出标准,有利于进行数据追踪和问题排查 。
  • 冗余
    • 数据定期备份:定期全量备份+主从同步增量备份,例如MySQL/Redis主从复制进行增量备份、Mysqldump全量备份、Redis利用RDB或者AOF进行备份;
    • 集群:一定数量的备用服务器,可以保障系统的高可用,防止单点故障,可以结合Keepalived+LVS/HAProxy/Nginx等实现数据库/Web服务器/缓存/消息中间件高可用集群;
    自动化
    • CI/CD:利用成熟的CI/CD机制实现自动化测试、代码检测,自动化发布,例如可采用Git+Jenkins+Docker搭建CI/CD工作流 。
    • 自动化部署:针对超过30台的服务器部署,可以采用ansible进行批量管理
    • 自动监控/报警:监控用户行为日志、服务器日志等,可结合zabbix+ELK进行实施;
    • 自动降级和资源调度:微服务架构范畴,作者也在努力学习中 。
    安全
    • 二次验证:充分手机验证/人脸识别进行二次验证,保障操作的真实性;
    • web防火墙:传统防火墙仅限于包过滤,网络和端口地址转换(NAT)和VPN等功能 。它根据端口,协议和IP地址做出决策;Web防火墙(WAF)则提供了HTTP/HTTPS访问请求监控、自定义过滤规则、Web攻击防护、安全合规等功能;可以利用阿里云等提供的WAF服务或者基于Nginx+lua等实现的类似API网关实施类似功能;
    • 内外网隔断:暴露出来的IP和端口越少,安全系数越高;例如数据库服务、缓存服务、中间件等尽量只允许内外访问,如果确实需要可以通过路由转发或反向代理实现;
    • 数据加密:充分利用非对称加密,例如启用https, rsa加密等,保障数据传输的安全性;
    • 网络攻击:需要防止DDoS攻击、XSS攻击、SQL注入、CSRF等,常见手段CDN加速、高仿IP、linux内核优化、数据输入输出过滤、Referer限制、表单添加随机token/验证码等;
    • 信息安全:对于垃圾信息、敏感信息可以采用第三方解决方案(例如网易云盾、百度AI等)对文本、图片、音频、视频等进行过滤和审核 。


    推荐阅读