第十一周总结
本周的课程,主要讲了两个部分:组件设计原则,系统安全,系统的高可用性。
组件设计原则
1软件复杂度:越拆分越小
2.组件内聚原则
2.1复用发布等同原则
2.2.共同封闭原则
2.3.共同复用原则
3.组件耦合原则
3.1 无循环依赖原则
3.2 稳定依赖原则
3.3 稳定抽象原则
系统安全
XSS跨站脚本攻击
输入检查:输入检查一般是检查用户输入的数据中是否包含一些特殊字符, 如<、>、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码
输出检查,对html页面输出的内容进行使用htmlEncode
csrf 跨站请求伪造:请求地址添加token并验证
sql 注入:预编译sql或使用参数化查询
Ddos 攻击:
随机抛弃一部分请求
提高服务器配置
高防IP ->aliyun
idc 机房 ->运营商
系统的高可用性
使用加密算法:单向散列算法,对称加密算法,非对称加密算法
解耦原则:
遵循高内聚,低耦合的组件设计原则
面向对象基本设计原则
面向对象设计模式
领域驱动设计建模
隔离原则:
业务与子系统隔离
使用微服务与中台架构
生产者消费者隔离
虚拟机与容器隔离
使用异步:
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
使用备份:
集群设计
数据库复制:遵循CAP原理
使用失效转移:
数据库主主失效转移
负载均衡失效转移
事务补偿机制:通过执行业务逻辑逆操作,使事务回滚到事务前状态。
传统事务的ACID: 原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)
分布式事务的BASE:基本可以(Base Availability),软状态(Soft-state),最终一致性(Eventual consistency)
重试:重试调用方法,上游调用者超时时间要大于下游调用者超时时间之和。
限流:在高并发场景下,如果系统的访问超过了系统的承受能力,可以通过限流对系统进行保护。
计数器(固定窗口)算法
计数器(滑动窗口)算法
令牌桶算法
漏桶算法
异地多活:将数据中心分布在多个不同的地点机房里,这些机房都可对外提供服务。
自动化部署
预发布验证
监控系统
评论