微服务架构下的统一授权(单点登录)
微服务架构下的统一授权
识别客户端的身份,并且能够保存这个身份的状态
HTTP协议无状态协议:
- 浏览器的Cookie(disk / mem),客户端的状态存储
- 服务器端的session(服务端的状态存储)
集群模式下的会话丢失
Session Sticky
-
IPHASH |hash(ip)|%目标服务器的数量=目标服务器的地址
-
HASH算法
- Hash算法: MD5 、SHA-1 、SHA-256
- 应用场景: 软件包的签名; HS256/ RS256 ;
分表的场景 1000数据量的表 - 10个100W的小表 (分片键) 唯一ID
HASH(ID) %10 ={1~10}
如果数据量增长过快,需要扩容。 10个表 - 100个表
HASH(ID) %100 ={1~100}
影响: 需要对原来的数据进行整体的迁移。
-
一致性hash算法
- hash环
-
Session复制
-
Session信息的统一存储
-
Access_Token(携带一些有效信息)
Session统一存储
Session Replication
- session复制,通过相关技术实现session复制,使得集群中的各个服务器相互保存各自节点存储的
- session数据。tomcat本身就可以实现session复制的功能,基于IP组播放方式。
如何配置
这种实现方式的问题:
- 同步session数据会造成网络开销,随着集群规模越大,同步session带来的带宽影响也越大
- 每个节点需要保存集群中所有节点的session数据,就需要比较大的内存来存储。
在节点持续增多的情况下,session复制带来的性能损失会快速增加.特别是当session中保存了较大的对象,而且对象变化较快时,性能下降更加显著.这种特性使得web应用的水平扩展受到了限制.