- Cookie:本质上是键值对,由HTTP协议制定,session可以使用Cookie机制来保存,原理:先由服务器保存Cookie到浏览器,再下次浏览器请求服务器时把上一次请求得到Cookie再归还给服务器
- 在高可用架构中,为了保证服务的无状态,会使用session来存储业务的状态,许多网站或多或少会使用Cookie来记录Session,他们是如此的般配。
- 为了高可用架构不受任何限制,有专门的Session服务器来完成存取Session的任务
- 常用的失效转移策略为负载均衡。
(5-9为实现高可用的服务而使用的原则) - 服务降级:
①拒绝服务(拒绝低优先级应用调用,随机拒绝部分请求调用) ②关闭功能(关闭部分不重要的服务或服务内部部分不重要的功能) - 幂等性 简单理解为 f(x)=f(f(x)) 实现服务的反复调用和执行一次服务,产生同样的结果
- 分级管理:核心应用和服务优先使用更好的硬件,服务的部署上需要进行隔离(Isolation)以避免故障连锁反应,低优先级服务启动在不同的线程中或部署在不同的虚拟机上,高优先级服务部署在不同物理机
- 超时设置,由于服务器宕机或死锁等原因,应用程序对服务器的调用失去响应。故设置服务调用的超时时间,一旦超时,通信框架抛异常,根据服务调度策略,可以继续Retry,或转移到提供相同服务的其他服务器上的,当然为了可用性,我们绝对不主动响应服务不可用。
- 异步调用,通过消息队列或其他方式,实现异步来规避因为一个服务失败导致的整个应用请求失败。此外,不是所有服务都可以使用异步,必须确认服务调用成功才能继续下一步操作的应用不适合异步调用。(异步这一块还需要深入了解)
- 用于分布式缓存集群的伸缩性而设计的数据结构 一致性Hash环,其物理节点越多,负载越均衡,使用虚拟技术完成虚拟节点可以更好地实现负载均衡,从经验上来说一般一个物理服务器要虚拟出150个虚拟节点,可以实现较好的负载均衡
- NoSQL,not only SQL,相比关系数据库,其拥有更好的读能力,加入了缓存用于读取。其杰出代表有redis
10-19