http://distributedlog.incubator.apache.org/community/#mailing-lists
https://cwiki.apache.org/confluence/display/DL/Project+Ideas
Kafka | DistributedLog | |
数据分片与分布 | Kafka分区中的数据存储在若干个代理服务器上,每个代理服务器中的数据都在本地被切分成多个分区文件。 | 一个DistributedLog流的数据被分成多个日志分片,日志分片被均匀分布在多个存储节点上。 |
数据持久化 | 数据在超过配置的保留时间之后会被删除,或都被压缩,即只保留单个主键的几个最新值。 | 数据可以在超过配置的保留时间之后被删除,或者直接把某个位置之前的日志清除掉。 |
写操作 | 通过代理服务器可以并行写入。 | 通过写入代理可以并行写入,通过核心库只能串行写入。 |
读操作 | 从主代理服务器上读出。 | 可以从任何有数据的存储节点上读出。 |
数据复制 | ISR (In-Sync-Replica,同步副本)复制:主和从都是代理服务器。 | Quorum投票复制:主是写入代理,从是Bookie。 |
复制修复 | 通过增加新的副本来从主代理服务器上拷贝所有数据。 | 通过Bookie的自动恢复机制来保证复制因子。 |
集群扩展 | 增加新代理服务器时需要重新分配分区,以使得整个集群负载均衡。要严密跟进每个分区的状态,保证迁移操作不会占满网络和磁盘I/O。 | 增加写入代理或Bookie时不需要做数据重分布,新的日志分区会自动分配到新加入的Bookie上。 |
存储 | 每个分区中存储文件(文件的集合)。 | 交错存储格式。 |
持久性 | 只写到文件系统的页缓冲中。可以配置只等待主的确认,或者等待所有副本的确认,才认为写入是成功的。 | 所有写入操作都是通过显式的fsync操作持久化到硬盘上的。等到超过配置数量的Bookie的确认之后才认为写入是成功的。 |
I/O隔离 | 没有物理I/O隔离,依靠文件系统缓冲。 | 有物理I/O隔离,读写在不同磁盘上。 |
ManagedLedger是一个典型的日志实现,它提供Single-Writer-Single-Reader的语义。一个ManagedLedger只能有一个Broker打开进行读写。而DistributedLog的Stream是一个面向流的实现,提供的是Single-Writer-Multiple-Readers的语义。
也是因为在这个日志实现的差异,导致了架构的一个差异:在Pulsar中,读写都有Topic的属主Broker进行服务;而在DistributedLog中,读写被分离在读代理和写代理中进行服务。此外,ManagedLedger也进行记录消费的偏移;而DistributedLog将偏移量的记录交由上层应用管理。
| 欢迎光临 名表交流网 (https://bbs.wanhu888.com/) | Powered by Discuz! X3.2 |