Redis/消息队列 | 青训营

102 阅读1分钟

Redis基本工作原理:数据从内存中读写;数据保存到磁盘上防止重启数据丢失;单线程处理 增量数据保存到AOF文件;全量数据RDB文件(保存了redis的全部信息)

应用: 掘金连续签到:string结构 sdshdr

消息通知:当文章更新时,将更新后的文章推送到ES,用户就能搜索到最新的文章数据。 list数据结构Quicklist由一个双向链表和listpack实现

计数:通过hash结构存储 用rehash操作将数据迁移,渐进式hash将整个迁移过程平摊到所有的访问过程中去。

排名:跳跃表在skiplist

消息队列:保存消息的一个容器,本质是一个队列。 kafka:使用场景:日志信息,metrics数据,用户行为。

如何使用Kafka:创建集群,新增topic,编写生产者逻辑,编写消费者逻辑。 producer:对消息进行batch集合处理,当遇到带宽限制时,kafka内部有压缩算法。

broker-磁盘结构: 写入:移动磁头找到对应磁道,磁盘转动,找到对应扇区,最后写入。寻道成本比较高,因此顺序写可以减少寻道所带来的时间成本。读出:偏移量索引文件ofset,时间索引,零拷贝

consumer: 主要解决分配问题。 解决方法:手动分配,自动分配(high level)-consumer rebalance.

kafka的缺点:需要进行重启操作,时间成本很高。对于替换、扩容、缩容三个操作,只要有节点的变动,都会有数据复制带来的时间成本问题。负载不均匀:解决方案复杂。controller,coordinaator和broker在同一进程中,大量IO会造成去性能下降。