架构师训练营第十一周作业
可用性的保障
影响可用性的因素有很多,包括系统故障、基础设施故障、数据故障、安全攻击、系统压力等等。
可用性的保障涉及到很多层面,其中包括但不限于了:
软件的设计、编码、测试、上线和软件配置管理的水平
工程师的人员技能水平
运维的管理和技术水平
数据中心的运营管理水平
依赖于第三方服务的管理水平
对待技术的态度
扩展
垂直扩展:是在同一逻辑单元里添加资源从而满足系统处理能力上升的需求。
水平扩展:通过增加一个或多个逻辑单元,并使得它们像整体一样的工作。
隔离
是对系统、业务所占有的资源进行隔离,限制某个业务对资源的占用数量,避免一个业务占用整个系统资源,对其他业务造成影响。
隔离级别按粒度从小到大,可以分为线程池隔离、进程隔离、模块隔离、应用隔离、机房隔离。在数据库的使用中,还经常用到读写分离。
解耦
在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使模块之间的耦合度尽量小。在软件架构设计中,模块之间的解耦或者说松耦合有两种,假设有两个模块A、B,A依赖B
限流
一个系统的处理能力是有上限的,当服务请求量超过处理能力,通常会引起排队,造成响应时间迅速提升。如果对服务占用的资源量没有约束,还可能因为系统资源占用过多而宕机。因此,为了保证系统在遭遇突发流量时,能够正常运行,需要为你的服务加上限流。常见的限流算法有:漏桶、令牌桶、滑动窗口计数
首先没有理解密码密文为什么会是字符串传进来,一般密码是不允许明文存储的,要做Hash运算存储,也不能用对称密码算法把密码明文加密后转化存储,因为对称的密钥也可能泄露
Boolean checkPW (String 用户 ID,String 密码明文,String 密码密文)
{
unsigned char result[32];
SHA256( (const unsigned char *)密码明文.c_str(), 密码明文.length(), result);
check (result, 密码密文)
}
评论