【week11】作业
作业一:
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
引起系统不可用的原因:硬件故障,软件bug,系统发布,并发压力,网络攻击,外部灾害等
高可用的架构策略:解耦,保存简单;面向对象基本设计原则,面向对象设计模式,领域驱动设计建模
对于大多数系统而言,大多数的团队的核心问题还是代码
异步:多线程,反应式,异步通信网络编程,事件驱动异步架构
备份:集群设计,数据库复制,CAP原理。任何情况下,要确认单点问题。负载均衡服务器,保证一台服务器不可用的情况,系统是可用的
失效转移:数据库主主失效转移,负载均衡失效转移,如果确认失效,需要转移?设计无状态的服务
事务补偿:传统的ACID,分布式事务的BASE,最终一致性;通过执行业务逻辑逆操作,使事务回滚到事务前状态
重试:上层超时时间要大于底层超时时间之和
熔断:超过限制熔断
限流:固定窗口的计数器,滑动窗口,令牌桶算法,获取令牌处理,令牌不足则拒绝。漏桶算法,自适应限流
降级:非核心功能的降级
异地多活:难点是数据一致性
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
程序首先将userid和密码明文合并成一个字符串并进行md5进行单向散列处理,得到散列值后与密文进行比较,如果相等则认为正确,否则错误。
评论