高可用架构设计接入层六



接入层职责:

判断请求的接口参数是否完整和合法,判断用户是否登录,接入的攻防例如单位时间内的链接次数。做请求的转发。管理客户端海量长短链接tcp、http、htttps。建立与客户端通信的加密通道。数据合法性正确性校验。整合内部少量的长连接,session管理,实施初步的攻防,请求转发到逻辑层。

无状态设计,每层模块动态高扩展,模块冗余,高可用性保证,动态负载均衡,动态切换服务节点,优化(qps达到3w+)

接入层的session如何设计?

高可用是基于无状态的,但是业务上是有状态的,用户购物车,用户登录的登录状态。Session复制,集群的所有接入层服务器之间同步session数据,每台计入服务器都保存用户信息,可以高可用,适合集群较少的情况。

session绑定:根据用户的请求(Uid,Mac,Imei等用户唯一标识)负载均衡到特定的接入层,Hash(ID),uid%Num

客户端保持session:每次请求携带客户端session。app记录到native中。web记录到cookie中。缺点cookie大小100KB限制,每次传输流量性能收影响,清理session,用户请求不正常。优点方案简单,支持服务端的无缝伸缩,方案可用性高,较多网站都有使用。

session高可用集群:接入层无状态,统一的高可用Session服务器,接触层分布式读写session集群,状态分离,分布式缓存NoSql(memcached、redis),RDBMS(mysql、MongoDB)

接入层安全性

接入层是客户端和服务端的Interface,连接通道加密,传输数据加密。客户端和服务器之间的所有请求(传输数据)都使用对称加密算法。对称加密秘钥使用非对称假面算法经过两次协商确定。安全信道的建立必须满足任何第三方无法伪造服务器,在破解客户端代码的情况下,及时截获其他用户的发送的加密请求,也无法解密。为了满足以上两个条件客户端和服务器都必须要一个随机秘钥生成的过程。具体的四步握手。

 

 约定公私钥对0:写死在代码中的公私钥(公私钥池,服务器每次选一个,告诉客户端每次选中的是哪一个),用于客户端验证请求的确来自服务器。

协商公私钥对1:服务器随机生成协商秘钥;

协商公私钥对2:客户端随机生成的协商秘钥;

对称秘钥3:服务器随机生成的对称秘钥,用于最终的对称加密, 通讯秘钥。

使用HTTPS:提供了数据安全的加密方式,单向加密,双向加密。使用场景:交易支付金融用户信息。单向加密不安全,会有中间人攻击。双向加密安全,客户端证书需要配合。接口分级,更高级别的验证例如打款HTTPS+短信

数据正确性保证:数据签名,md5。例如微信公众号接口的数字签名。进一步提升安全性撒点盐,这个盐只有双方知道。

猜你喜欢

转载自peng4602.iteye.com/blog/2369311