写点什么

安全稳定

用户头像
wing
关注
发布于: 2020 年 12 月 06 日

本周是跟随李智慧老师学习架构师训练营的第十一周,现将本周主要内容总结如下:

常见网络攻击手段:

XSS 攻击:跨站脚本攻击。消毒,即转义 HTML 危险字符,某些需要匹配上下文转义,如 3<5

SQL 注入攻击:特殊字符过滤、预编译

CSRF 攻击:伪造用户请求。随机 token、验证码、Referer check

其他:错误回显,不能将程序异常堆栈信息直接显示在前端。

不能使用 HTML 注释

文件上传:文件类型白名单限制;修改文件名,专门存储等

路径遍历:JS、CSS 等静态资源独立部署,独立域名。访问 URL 不包含文件真实路径

常见预防措施:

开源 web 应用防火墙:ModSecurity

安全漏洞扫描

加密:单项散列(加 salt)、对称、非对称。建议使用专门的加密服务器

反垃圾邮件:贝叶斯分类算法

贝叶斯公式:P(B|A) = P(A|B) * P(B) / P(A)

P(B|A):在事件 A 发生的前提下,事件 B 发生的概率

P(A|B):在事件 B 发生的前提下,事件 A 发生的概率

P(B):事件 B 发生的概率

P(A):事件 A 发生的概率

布隆过滤器黑名单控制

电子商务网站风控:自动、人工


可用性指标:

99 基本可用,年度停机时间小于 88 小时

99.9 较高可用,年度停机时间小于 9 小时

99.99 具有自动恢复的高可用,年度停机时间小于 53 分钟

99.999 极高可用,年度停机时间小于 5 分钟

高可用常见解决方案:

解耦

备份:集群,数据库复制

重试

失效转移

幂等性

补偿事务

异步

降级:关闭一些非核心功能,例如确认收货、评价等

限流:计数器(固定窗口、滑动窗口)、令牌桶算法、漏桶算法

自适应限流:

熔断

异地多活:难点是数据一致


发布:要保证服务 7*24 小时可用,发布相当于一次服务器宕机


自动化测试:web 自动化测试工具:selenium

持续集成、持续交付、持续部署

预发布验证:预发布服务器是生产环境的特殊服务器,没有配置在生产服务的负载均衡上

版本控制:

主干开发,分支发布

分支开发,主干发布:较常使用

自动化发布

灰度发布:分几天,每次发布一部分服务器

网站监控:

用户日志行为收集

服务器性能指标监控:Ganglia

业务运行数据报告:缓存命中率,平均响应延迟等

监控管理:根据监控数据进行失效转移,自动负载、报警、自动扩容、自动限流等


故障分析:

日志管理:

设置合理的日志输出级别

关闭第三方的不必要日志输出

应用日志与第三方日志输出分别配置

首页:

首页尽量不访问数据库,首页需要的数据从缓存服务器或搜索引擎服务器获取

首页尽量是静态的

锁:

慎用锁,尤其是在长时间 IO 场景

根据不同场景使用不同种类的锁,不要统一使用 synchronized

缓存:

缓存服务器升级维护,一台一台来,不能同时停机,造成缓存失效

服务启动依赖:

先启动后端服务,再启动前端服务

文件存储:

根据不同文件类型和用途进行管理

大文件和小文件分开存储,批处理大文件可以使用分布式文件系统

生产数据规范:

生产数据维护,压测等必须遵循相应规范

代码规范:

加强 code review

代码合并前进行比较

代码健壮性,测试覆盖点:例如新增用户逻辑,老用户逻辑


作业一:

(至少完成一个)

  • 导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。

  • 请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。


导致系统不可用的原因:

1.部分服务器宕机导致系统并发压力增大,最终导致服务崩溃。解决方案:限流、熔断、降级、自动扩容,服务自动恢复,异地多活等

2.缓存服务失效,导致数据库压力变大,最终导致服务不可用。解决方案:合理设置缓存淘汰策略,缓存服务高可用配置

3.负载均衡不合理,导致部分服务器压力过大,最终导致服务不可用。解决方案:设置合理的负载均衡策略,根据服务器状态动态调整负载均衡策略

4.磁盘空间占满。设置合理的日志级别,自动化清理日志文件

5.不合理的锁使用,导致线程阻塞。根据不同的场景,使用不同的锁类型

6.数据丢失。做好数据同步、备份

7.后端服务未启动完成,有请求进来,导致系统崩溃。先启动后端服务,再启动前端服务,做好服务启动依赖控制

8.CDN 服务故障,导致静态资源请求到达后端。CDN 预热,限流

9.首页加载,频繁访问数据库。首页加载尽量静态化,或从缓存服务器、搜索服务器获取


用户头像

wing

关注

还未添加个人签名 2018.05.13 加入

还未添加个人简介

评论

发布
暂无评论
安全稳定