根据当周学习情况,完成一篇学习总结
这两周的课程主要讲解的是安全架构及高可用架构。安全架构对于每个系统来说都是至关重要的,安全方面一出问题,基本上是大问题,所以每个开发者都要注重,编写可靠的代码。常见的安全攻击手段有,XSS 攻击(通过请求参数过滤解决),SQL 注入攻击(通过 SQL 预编译参数绑定解决),CSRF 攻击(通过表单 token,短信验证码等解决),Error Code(此前项目中的全局捕获异常类,有打印完整的 URL 报错路径,在安全检查阶段被扫描出来,对于此问题印象比较深刻),HTML 注释(Code Review 可以避免,不该写的注释不要写),文件上传(限制可上传的文件的类型),路径遍历等。另外我了解到的一点是,目前比较主流的一款 WEB 应用防火墙 ModSecurity,其采取的过滤规则,可以是安全架构设计的重要参考。
第二块主要的内容是敏感信息相关的。具体的技术包括散列加密,对称加密,非对称加密。安全这块,我还没完全弄明白,等后续再深入研究。
第二次课主要讲解的是高可用的系统架构,这一块是系统在落地的时候的重要实践指导依据。首先,全体成员都需要重视,可以将出错率与个人或小组部门的业绩挂钩。其次,业务代码在编写的时候,就需要做到高内聚、低耦合,采用面向对象的设计模式,领域驱动模型等。再者,如果采用的是目前主流的微服务架构,则可以做数据库与相关服务的冗余备份与负载均衡,失败隔离,失效转移,大公司可能还会做异地多活。这一块的相关概念非常多,包括重试与幂等,事务补偿,熔断,降级,限流,异步架构(这个课程自始至终一直有讲)等。有关幂等性,之前与三方合作的时候,对方要求我们提供的接口具备此特性,说起来实现也就是多几行代码的事,数据重复了就覆盖或者不进行任何操作直接返回成功。如果不做幂等,就会出现两条一模一样的数据,这显然会影响用户的判断力。最后一部分内容讲解的是高可用的运维系统,包括自动化发布,自动化测试,自动化部署。在我们的开发与运维过程中,我觉得一个是容器化的部署技术,另外就是服务器监控,自动化告警,比较重要。微服务架构下,服务太多,靠人工来维护成本太高。最后,每个人都要树立高可用的价值观,在潜意识里重视它!