zookeeper的灵魂-zab协议
zookeeper的灵魂-zab协议
之前每次面试前,都要把zookeeper的相关知识再看一遍,这次直接把对zookeeper的一些理解记录下来,方便查阅。 由于zookeeper涉及到的东西比较多,所以分成两部分介绍,本次写的是zookeeper的核心-zab数据一致性协议。
1 zk-选举流程zookeeper的zab协议主要包括两部分,一是leader的选举,二是数据的同步过程。
在zookeeper中节点(在代码中称为Quorum)类型有三种
leader 选举过程中得到集群中半数以上节点认同的节点。
follwer follwer参与选举过程,其中follwer与observer在代码中都表示为Learner。
observer observer是一种节点的启动类型,表示该节点不会参与选举。
read-only 准确的讲并不是在选举中需要用到的,而是一种启动类型,如果以read-only模式启动,当zookeeper集群发生故障不可用,该节点依然能够提供读服务。
zookeeper中的数据都保存在每个节点的内存中(也就是冗余储存, ...
分库分表下分页查询解决方案
分库分表下分页查询解决方案
不管是随着业务量的增大、还是随着用户数量的增长,在单一表中无法承受大量大数据,导致查询速度极慢甚至拖垮数据库。所以分库分表的策略随之应用,但是如何在分库分表的情况下,进行分页查询,目前仍是业界难题。本文记录了三种情况下,对于分库分表下的分页查询优化方案。
1 目前大多数的解决方案不管是目前的一些数据库中间件例如Mycat,还是ElasticSearch下的分片查询,大多都使用了最简单的策略去实现不同存储下的全局有序查询,即在每次分页查询时,查询所有存储下相应的条数,汇总排序得到最终要展示的分页下的数量。这种策略实现方案简单、精度高,但是随着查询页数的增长,不管是内存的占用还是查询速度都会极具上升。因此,如果要采取这种方案,要考虑到对于查询页数的限制,防止影响应用的运行。
2 APP上的下拉式分页在APP上的分页查询,多数是采用了下拉式分页(向下拖动,会出现新的一页)。在这种情况下,用户无法自由的选取要查询的页数,因此可以采用以下方式来优化分页的性能。
举个简单的例子,查询需要涉及到五个ES的索引,每页分页数量是10。
当用户请求第一页数据时,从五个索引 ...
开山之剑-第一篇博客
序
之前呢,一直在csdn上记录一些心得,偶然呢,发现有这个hexo的好东西,逼格很高,特花了一点时间来搭建一个。也标志着,个人博客正式起航。先给自己顶下一个小目标,从今年九月份开始,每两个月出一遍博客。