我们在选择如何存储用户标签时,遇到了问题(标签查询速度慢,并且构建不够灵活,标签更新和删除比较麻烦),比如之前用HDFS或者ES存储,后来切换为ClikcHouse,并用BitMap存储,原因如下
1.延迟队列,重试队列,死信队列,延迟队列:用户登录过时,订单30分钟自动取消;重试队列:可以利用延迟队列实现,即该消息处理失败后,多久时间重试;死信队列:消息处理失败的队列。2.afka高吞吐量1)消息顺序写到磁盘2)分区3)零拷贝:跳过“用户缓冲区”的拷贝,消费者直接通过offset位置,批量拉取消息4)生产者,通过缓存批量发送消息
在正常情况下,AR应该是和ISR一样的,但是当某个Follower副本落后太多或者某个Follower副本节点挂掉了,那么它会被移出ISR放入OSR中,kafka的选举也比较简单,就是把ISR中的第一个副本选举成新的Leader节点。比如现在AR=[1,2,3],1挂掉了,那么ISR=[2,3],这时会选举2为新的Leader。
对于hbase而言,当我们选择采用布隆过滤器之后,HBase会在生成StoreFile(HFile)时包含一份布隆过滤器结构的数据,称其为MetaBlock;MetaBlock与DataBlock(真实的KeyValue数据)一起由LRUBlockCache维护。
列簇 :HBASE表中的每个列,都归属于某个列族。列族是表的schema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如 courses:history,courses:math都属于courses 这个列族。