Kafka
文章平均质量分 92
磊磊崔
这个作者很懒,什么都没留下…
展开
-
漫游Kafka设计篇之数据持久化
4.2 Persistence(持久化)不要畏惧文件系统!Kafka大量依赖文件系统去存储和缓存消息。对于硬盘有个传统的观念是硬盘总是很慢,这使很多人怀疑基于文件系统的架构能否提供优异的性能。实际上硬盘的快慢完全取决于使用它的方式。设计良好的硬盘架构可以和内存一样快。在6块7200转的SATA RAID-5磁盘阵列的线性写速度差不多是600MB/s,但是随即写的速度却是原创 2014-07-09 18:39:28 · 12909 阅读 · 1 评论 -
漫游Kafka入门篇之简单介绍
Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢?首先让我们看几个基本的消息系统术语:Kafka将消息以topic为单位进行归纳。将向Kafka topic发布消息的程序成为producers.将预订topics并消费消息的程序成为consumers.Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker.原创 2014-07-09 18:37:20 · 11112 阅读 · 6 评论 -
漫游Kafka实战篇之搭建Kafka运行环境
接下来一步一步搭建Kafka运行环境。 Step 1: 下载Kafka点击下载最新的版本并解压.> tar -xzf kafka_2.9.2-0.8.1.1.tgz> cd kafka_2.9.2-0.8.1.1Step 2: 启动服务Kafka用到了Zookeeper,所有首先启动Zookper,下面简单的启用一个单实例的Zookkeeper服务。可以在命令的结尾加个&原创 2014-07-09 18:38:02 · 20370 阅读 · 4 评论 -
漫游kafka实战篇之搭建Kafka开发环境
上篇文章中我们搭建了kafka的服务器,并可以使用Kafka的命令行工具创建topci,发送和接收消息。下面我们来搭建kafka的开发环境。大家开发环境需要引入kafka的jar包,一种方式是将Kafka安装包中lib下的jar包加入到项目的classpath中,这种比较简单了。不过我们使用另一种更加流行的方式,使用maven管理jar包依赖。创建好maven项目后,在原创 2014-07-09 18:38:48 · 48062 阅读 · 11 评论 -
漫游Kafka设计篇之性能优化
Kakfa在提高效率方面做了很大努力。Kakfa的一个主要使用场景是处理网站活动日志,吞吐量是非常大的,每个页面都会产生好多次写操作。读方面,假设每个消息只被消费一次,读的量的也是很大的,Kafka也尽量使读的操作更轻量化。我们之前讨论了磁盘的性能问题,线性读写的情况下影响磁盘性能问题大约有两个方面:太多的琐碎的I/O操作和太多的字节拷贝。原创 2014-07-09 18:39:56 · 11985 阅读 · 0 评论 -
漫游Kafka设计篇之Producer和Consumer
负载均衡producer直接将数据发送到broker的leader(主节点),不需要在多个节点进行分发。为了帮助producer做到这点,所有的Kafka节点都可以及时的告知:哪些节点是活动的,目标topic目标分区的leader在哪。这样producer就可以直接将消息发送到目的地了。客户端控制消息将被分发到哪个分区。可以通过负载均衡随机的选择,或者使用分区函数。Kafka允许用户实现分区函数,原创 2014-07-09 18:40:25 · 22428 阅读 · 2 评论 -
漫游Kafka设计篇之主从同步
Kafka允许tipci的分区拥有若干副本,这个数量是可以配置的,你可以为每个topci配置一个副本数量。Kafka会自动的在个副本上备份数据,所以当一个server down掉时数据依然是可用的。Kafka的副本功能不是必须的,你可以配置只有一个副本,这样其实就相当于只有一份数据。创建副本的单位是topic的分区,每个分区都有一个leader和零或多个followers.所有的读写操作都原创 2014-07-09 18:41:37 · 19939 阅读 · 1 评论 -
漫游Kafka实战篇之客户端编程实例
Consumer API有两个级别。低级别的和一个指定的broker保持连接,并在接收完消息后关闭连接,这个级别是无状态的,每次读取消息都带着offset。高级别的API隐藏了和brokers连接的细节,在不必关心服务端架构的情况下和服务端通信。还可以自己维护消费状态,并可以通过一些条件指定订阅特定的topic,比如白名单黑名单或者正则表达式。原创 2014-07-11 18:32:57 · 47136 阅读 · 20 评论 -
漫游Kafka实现篇之消息和日志
读操作需要两个参数:一个64位的offset和一个S字节的最大读取量。S通常比单个消息的大小要大,但在一些个别消息比较大的情况下,S会小于单个消息的大小。这种情况下读操作会不断重试,每次重试都会讲读取量加倍,直到读取到一个完整的消息。可以配置单个消息的最大值,这样服务器就会拒绝大小超过这个值的消息。也可以给客户端指定一个尝试读取的最大上限,避免为了读到一个完整的消息而无限次的重试。原创 2014-07-17 15:53:20 · 20548 阅读 · 2 评论 -
漫游Kafka实现篇之分布式
当路径中的元素包括在方括号里比如[xyz],则表示xyz表示的值是不固定的,每个可能的值都有一个Zookeeper节点。比如/topics/[topic]表示每个topic名称对应/topics的一个子目录。也可以用类似[0...5]表示一个数值范围来表示含有子目录0,1,2,3,4的目录。箭头->表示znode的节点含有某个内容,比如/hello->word表示一个含有“world”的节点。原创 2014-07-21 11:32:36 · 3576 阅读 · 1 评论 -
漫游Kafka设计篇之消息传输的事务定义
4.6 消息传输的事务定义之前讨论了consumer和producer是怎么工作的,现在来讨论一下数据传输方面。数据传输的事务定义通常有以下三种级别:最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输。最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输.精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输被一次而且仅原创 2014-07-09 18:39:52 · 7935 阅读 · 2 评论 -
漫游Kafka之过期数据清理
Kafka将数据持久化到了硬盘上,允许你配置一定的策略对数据清理,清理的策略有两个,删除和压缩。原创 2015-11-06 15:40:56 · 34026 阅读 · 0 评论