当前位置: 首页 > news >正文

好素材网站好看的网页设计公司

好素材网站,好看的网页设计公司,平台型网站建设方案,安阳汤阴县网站建设场景描述 小程序用户的openid作为最主要的业务查询字段#xff0c;在做了缓存设计之后仍有非常高频的查询#xff0c;通过埋点简单统计约在每日1000w次。 其中#xff1a;由于有新增用户原因#xff0c;导致请求的openid根本不存在MySQL数据库中#xff0c;这部分统计约占…场景描述 小程序用户的openid作为最主要的业务查询字段在做了缓存设计之后仍有非常高频的查询通过埋点简单统计约在每日1000w次。 其中由于有新增用户原因导致请求的openid根本不存在MySQL数据库中这部分统计约占30%左右也就是约300w次查询是浪费的。 假设openid的总量可能达到10亿级别 解决思路基于redis使用布隆过滤器  方案介绍 1. 布隆过滤器 布隆过滤器Bloom Filter 是一种数据结构其主要功能是判断某个元素是否出现在集合中。 它通过使用多个哈希函数将元素映射到一个位数组中并将对应位标记为1来实现对元素的判重。 如果一个元素在位数组中对应的位置上有一位为0那么该元素一定不存在于集合中 如果所有对应位都为1那么该元素可能存在于集合中。 具体来说 当要加入一个元素时使用多个不同的哈希函数对该元素进行哈希得到多个哈希值然后将这些哈希值对应的位数组上的位置置为1。 当查找一个元素时同样使用多个哈希函数进行哈希然后查看对应位置上的位 如果存在任意一位为0那么该元素不存在于集合中 如果所有位都为1那么该元素可能存在于集合中需要进一步确认。 但是布隆过滤器存在一定的误判率。 对于一个元素如果多个哈希函数将其映射到的位都已被标记为1则它可能被误判为存在于集合中即有一定的假阳性率 。 误判率取决于哈希函数的数量和位向量的长度。 2. 10亿数据如何做布隆过滤 · redis的bitmap Bitmap是一种Bit数组数据结构它的主要作用是储存0和1两个状态。 在Redis中Bitmap通过字符串来实现一个字符串可以存储超过2^32个元素所以一个bloom能存储的最大上限就是2^32个约42.9亿。占用的内存是512M 虽然单个bitmap最大可达到42亿但是算上误差率其实是不够的而且在redis中我们也应该尽量避免这种大key的使用 · 分片 范围划分将 32-bit 的范围 ([0, n)) 划分为 2^10 个桶每一个桶有一个 Container 来存放一个数值的低26位存储在存储和查询数值的时候将一个数值 k 划分为高 10 位(k % 2^10)和低 26 位(k mod 2^26)取高 10 位找到对应的桶然后在低 26 位存放在相应的 Container 中查询判断当查询一个数值 k 是否存在时我们只需要判断 k mod 2^26 是否存在于对应的 Container 中即可。 · 实现取高位和低位代码  取高位作桶,就是通过位运算向右移10位 将一个数的二进制位向左或向右移动特定的位数。向左移动相当于在该数的二进制表示中加上多个0向右移动相当于去掉多余的二进制位 $container $hash 10; 取低位作数据字段就是通过位运算取26位 它对两个数的每一个二进制位进行比较只有当两个数的对应二进制位都为1时结果才会将该位置设置为1否则设置为0 0x3FFFFFF是26位全1的二进制数的16进制表示方式 可以简单理解为就是截取了一个数的低26位 $index     $hash 0x3FFFFFF;  · go-zero的bloom介绍(core/bloom/bloom.go) // New create a Filter, store is the backed redis, key is the key for the bloom filter, // bits is how many bits will be used, maps is how many hashes for each addition. // best practices: // elements - means how many actual elements // when maps 14, formula: 0.7*(bits/maps), bits 20*elements, the error rate is 0.000067 1e-4 // for detailed error rate table, see http://pages.cs.wisc.edu/~cao/papers/summary-cache/node8.html func New(store *redis.Redis, key string, bits uint) *Filter {return Filter{bits: bits,bitSet: newRedisBitSet(store, key, bits),} } go-zero内置的bloom默认采用的hash次数是14元素预估需要使用的bitmap位数是20倍多元素数量错误率在0.000067左右 · Hash函数规划 已知元素总量为10亿分片数为2^101024那么每个分片元素数量为976562需要的bitmap长度是 20*976562 19531240也就是小于2^2533554432redis官网上介绍bitmap长度达到2^26-1大约需要8M内存那么总内存预估使用8G左右分散在集群的各个节点上 所以保留一定的弹性范围在使用go-zero自带的bloom时key根据2^10进行分片单个bloom的bits30000000
http://www.w-s-a.com/news/827209/

相关文章:

  • 北京网站建设公司哪家实惠企查查在线查询入口
  • 毕业设计做网站怎么样非微信官方网页自己做的网站
  • 昆明网站多端小程序设计重庆市住房和城乡建设厅网站
  • 网站制作技术人员国际新闻最新10条
  • 做同城特价的网站wordpress后台能修改模板文件
  • 网站信息可以边建设边组织产品展示网站源码php
  • 电子商务网站规划从哪些方面入手途牛企业网站建设方案
  • 莱阳网站定制易语言可以做网站嘛
  • 购物网站开发意义上海中小企业服务中心官网
  • 网站备案证书如何打开江苏网站建设电话
  • 深圳网站建设乐云seo搜索引擎优化seo目的
  • 中山城市建设集团网站网站建设设计基础
  • 网站开发流程莆田wordpress点播收费
  • 网站未及时续费浙江台州做网站的公司有哪些
  • 二级域名做网站好不好河源建网站
  • 公司网站的作用意义维护建设管理天津平台网站建设费用
  • 建设部网站如何下载国标规范上海影视公司
  • 企业官方网站地址通了网站建设
  • 专题网站可以做什么怎么做网站滑动图片部分h5
  • 什么是网站建设外包html 门户网站
  • 资阳市建设局网站微信开发公司
  • wap建站程序源码可不可以异地建设网站
  • 优秀企业网站的特点网站标签名词
  • 建材网站建设案例淄博网站建设培训
  • 纯代码添加wordpress网站底部导航宝塔自助建站源码
  • 网站设计技术有哪些?青岛网站建设工作室
  • 网站怎样建设才叫人性化宣传
  • 济南网站制作方案做淘客网站备案
  • h5企业网站只做做php门户网站那个系统好
  • 长春阿凡达网站建设建网站如果不买域名别人能不能访问