大数据量下的高并发分布式访问控制(ACL)优化方案(一)-创新互联
目前的设计方案
创新互联主要企业基础官网建设,电商平台建设,移动手机平台,重庆小程序开发等一系列专为中小企业按需搭建网站产品体系;应对中小企业在互联网运营的各种问题,为中小企业在互联网的运营中保驾护航。1.1.控制计数:
在目前的项目中,有很多接口需要对访问方进行权限访问控制。目前设计方案是:利用redis集群来存储每个访问控制点的访问计数信息。Key值为=PlatformId(接入平台方)+InterfaceId(系统接口)+dayTime(日期时间),value值为当天每个时段的访问次数统计列表。
1.2.控制规则:
通过页面配置并制定控制规则、业务系统在启动时加载控制规则,并访问redis获取控制次数,然后在业务系统中做逻辑判断完成,ACL控制做请求拦截处理。
目前的痛点:
2.1.在大数据量高并发时,由于业务系统是集的并且是并发处理,会出现瞬间redis单点的qps峰值达到13w/s。出现这种情况的原因是Platform+InterfaceId+Day作为key的设计,会造成一个接入方的请QPS过大时直接映射到后端的redis的单点请求上,没有利用到redis的集群效应。
2.2.当前的访问控制功能和业务代码紧密耦合在一起,无法做到单独对访问控制功能进行水平扩展,造成管理与优化不便。
结构图:
初步解决思路:
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.1. 所有配置信息统一由配置中心管理,ACL和Service(服务系统)都到zk上注册和订阅服务。
5.2. Service方发送统计消息到MQ上,ACL去订阅该TOPIC来消费
5.3. ACL在自身内存中做初步预处理计算,并定时刷新到redis集群做聚合运算。
5.4. 启动定时服务扫描所有控制规则,检测到需要拦截的规则后,创建广播消息,发送到MQ上。
5.5. Service方订阅广播消息,发现消息后,解析并在内存中对满足规则的访问进行拦截控制。
5.6. 配置中心信息变更时,通过广播推送给所有订阅方,订阅方获取消息后到服务提供方来拉取信息并更新自身内存信息。
结构图如下:
目前该项目的重构方案正在实施,后续实施效果待更新第二版。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享名称:大数据量下的高并发分布式访问控制(ACL)优化方案(一)-创新互联
网站网址:http://scyanting.com/article/ehdje.html