温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

大数据量下的高并发分布式访问控制(ACL)优化方案(一)

发布时间:2020-06-18 19:26:34 来源:网络 阅读:1899 作者:zhuce51buzou 栏目:大数据
  1. 目前的设计方案

    1.1.控制计数:

    在目前的项目中,有很多接口需要对访问方进行权限访问控制。目前设计方案是:利用redis集群来存储每个访问控制点的访问计数信息。Key值为=PlatformId(接入平台方)+InterfaceId(系统接口)+dayTime(日期时间),value值为当天每个时段的访问次数统计列表。

    1.2.控制规则:

    通过页面配置并制定控制规则、业务系统在启动时加载控制规则,并访问redis获取控制次数,然后在业务系统中做逻辑判断完成,ACL控制做请求拦截处理。

  2. 目前的痛点:

    2.1.在大数据量高并发时,由于业务系统是集的并且是并发处理,会出现瞬间redis单点的qps峰值达到13w/s。出现这种情况的原因是Platform+InterfaceId+Day作为key的设计,会造成一个接入方的请QPS过大时直接映射到后端的redis的单点请求上,没有利用到redis的集群效应。

    2.2.当前的访问控制功能和业务代码紧密耦合在一起,无法做到单独对访问控制功能进行水平扩展,造成管理与优化不便。

  3. 结构图:

    大数据量下的高并发分布式访问控制(ACL)优化方案(一)

  4. 初步解决思路:

    4.1. 减少redis的访问量、并将redis的key值做细分使其能均匀分布到所在redis集群上.

    4.2. 对ACL访问控制功能进行服务化处理,做成无状态支持水平扩展。

    4.3. 引入异步处理逻辑、将ACL服务与业务方分离。后续ACL服务的变动对业务系统无感知。

    4.4.实现预先计算功能,在做redis汇总统计时现在ACL系统中做分组预计算,减少更新redis的频率。

    4.5.延迟检测控制,ACL访问控制目的主要是对一些过量请求进行拦截处理,非一定要保证实时性和一致性。通过延迟统计策略实现高吞吐量的处理能力。

    4.6.通知拦截机制,业务方不需要做任何拦截控制统计和分析,只需要接受ACL系统通知并执行通知动作即可。

  5. 具体实施细则:

    5.1. 所有配置信息统一由配置中心管理,ACL和Service(服务系统)都到zk上注册和订阅服务。

    5.2. Service方发送统计消息到MQ上,ACL去订阅该TOPIC来消费

    5.3. ACL在自身内存中做初步预处理计算,并定时刷新到redis集群做聚合运算。

    5.4. 启动定时服务扫描所有控制规则,检测到需要拦截的规则后,创建广播消息,发送到MQ上。

    5.5. Service方订阅广播消息,发现消息后,解析并在内存中对满足规则的访问进行拦截控制。

    5.6. 配置中心信息变更时,通过广播推送给所有订阅方,订阅方获取消息后到服务提供方来拉取信息并更新自身内存信息。

  6. 结构图如下:

    大数据量下的高并发分布式访问控制(ACL)优化方案(一)

  7. 目前该项目的重构方案正在实施,后续实施效果待更新第二版。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI