前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实时数据系统中几种常用的验证方法

实时数据系统中几种常用的验证方法

作者头像
jiewuyou
发布2022-09-29 17:22:02
4780
发布2022-09-29 17:22:02
举报
文章被收录于专栏:数据人生数据人生

很多场景中,服务端需要对用户的请求进行验证,比如QQ登录模块、统计工具的数据收集模块、品牌广告对应id的match等。针对不同的场景,可以有不同的验证方法,本文将介绍工程中常用的几种。

直接使用数据库进行验证

方法1:每次请求时,从数据库中查询出key对应的秘钥,然后和请求的秘钥进行验证。 场景1:适合QPS非常低的场景,比如内网的权限认证系统 方法2:和方法1类,数据库使用内存数据库如redis 场景2:内存数据库的使用成本很高,如果预算允许的话,可以扛住高并发的请求。比如在投放品牌广告时,我们事先计算出目标用户的ID,将其导入内存数据库,针对每次广告请求,从内存数据库中查询,看是否能和目标用户match,如果match的话,就曝光一条品牌广告

缓存查询结果

方法:通过缓存将key对应的秘钥缓存起来。针对每一次请求,如果缓存中没有对应的数据,则从数据库中查询数据进行验证,然后将key对应的秘钥更新到缓存中,以供下次使用。 场景:可以扛住高并发的请求,如果请求的key比较少的话,可以得到精确的结果。如果请求的key的数据量非常巨大,则使用部分数据结构,能计算出在误差允许范围内的统计结果。比如统计日活千万级app的实时新增设备数,app打开时,会上报日活事件,同时附带设备ID。我们可以将app的历史设备ID通过bloom filter缓存下来,如果不在其中认为是一个新增设备,同时将设备ID更新进入bloom filter中

使用二级缓存

方法:保存两个缓存,一个用于判断key是否合法,一个存放key对应的秘钥,判断请求的秘钥是否合法。请求进来时,首先从第一个缓存中查询key是否合法,如果合法,则从第二个缓存中,查询出对应的秘钥并和请求的秘钥进行对比,如果match,则认为请求合法。每次请求缓存时,如果缓存中没有对应的key,都需要查询数据库,并将key更新到缓存中 场景:适合key不是很多,但是请求量非常巨大的场景,第一个缓存可以很好地防止有人利用接口攻击系统。比如现有的app统计工具,因为没有建立长连接,app每次打点时,都要验证是否是合法的SDK上传上来的点,这种系统的QPS非常高,但是app量即key不是很多

总结

因为现实中IO的成本非常高,所以我们要针对不同的业务场景,使用不同的验证方法对数据进行验证。而实时系统中,某些场合对数据的准确性要求不高,这个时候,就可以利用一些数据结构如bloom filter来提升程序的性能

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 直接使用数据库进行验证
  • 缓存查询结果
  • 使用二级缓存
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档