《后端技术面试 38 讲》学习笔记 Day 11
29 | 高可用架构:我们为什么感觉不到淘宝应用升级时的停机?
原文摘抄
程序要升级,必须要关闭进程重新启动,这段时间应用也是不可用的
互联网的高可用是说,在上面各种情况下,应用都要是可用的,用户都能够正常访问系统,完成业务处理
但不管是哪种方案,实现高可用需要投入的技术和设备成本都非常高。因此可用性并不是越高越好,而是要根据产品策略寻找高可用投入产出的最佳平衡点
高可用的架构:冗余备份、失败隔离、限流降级、异地多活
失败隔离的主要架构技术是消息队列
心得体会
- 感受不到停机是因为集群整体是可用的,只要是集群中节点一部分一部分的进行部署、升级,通过网关对流量的切换,是可以做到用户无感知的。
工作体验
- 工作中,生产机器部署着我们开发者都不清楚的数量的监控,已知的就有老牌的Zabbix、新兴的Promethues等监控,针对系统CPU、内存、GC、接口失败率等等资源指标进行了监控,防患于未然。
30 | 安全性架构:为什么说用户密码泄漏是程序员的锅?
原文摘抄
主要使用的加密方法有三种:单向散列加密、对称加密和非对称加密
HTTP 攻击是黑客攻击行为中门槛最低的攻击方式,也是最常见的一种互联网攻击。而 HTTP 攻击中,最常见的是 SQL 注入攻击和 XSS 攻击。
XSS 攻击即跨站点脚本攻击,攻击者构造恶意的浏览器脚本文件,使其在其他用户的浏览器上运行,进而进行攻击。XSS 攻击防御的主要手段是消毒,对比较有危险的脚本语法关键字进行转义。比如把“>”转义为“>”,HTML 显示的时候还是正常的“>”,但是这样的脚本无法在浏览器上执行,也就无法达到攻击的目的。
硬件指令和操作系统可能会有漏洞,我们使用的各种框架和 SDK 可能也有漏洞,这些漏洞从被发现,到被公开,再到官方修复漏洞,可能会经过一个或长或短的时间,这个时间内就可能被掌握这些漏洞的黑客利用,攻击系统。
心得体会
- 安全问题主要就是有许多方式让黑客可以获得超出当前用户权限的问题。例如大学期间,老师通过使用超长,或者为空的输入进行发送报文,先绕过了前端校验,一旦后端未做校验,也未做统一的异常拦截,抛出去的异常堆栈无异于告诉黑客你的一些代码片段,易于其后进一步分析。不过这一步往往工作规范的工程师已经自动规避了这个问题。
工作体验
- 在金融机构以及服务与金融机构的公司就职经验让我很清楚,这些公司里都有一个专业的安全部门,会通过静态代码扫描,手动尝试漏洞攻击。告诉我们所用到的高危组件,并给出修复方案。以及我们自己写的哪些代码可以SQL注入等。
就比如之前fastjson大行其道时,高危漏洞是一个接一个,痛下心来直接在本工程内全部替换为jackson,但是倒霉,依赖的系统中还有fastjson强依赖无法剔除,比较头疼。
突发奇想,为什么json界没有类似slf4j的存在内,屏蔽底层json序列化框架的差异?