linkedin高吞吐量分布式消息系统kafka使用手记
来源:互联网 发布:像素数据 编辑:程序博客网 时间:2024/06/04 18:47
kafka是一种高吞吐量的分布式发布订阅消息系统,她有如下特性:
通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。
支持通过kafka服务器和消费机集群来分区消息。
支持Hadoop并行数据加载。
设计侧重高吞吐量,用于好友动态,相关性统计,排行统计,访问频率控制,批处理等系统。大部分的消息中间件能够处理实时性要求高的消息/数据,但是对于队列中大量未处理的消息/数据在持久性方面比较弱。
kakfa的consumer使用拉的方式工作。
安装kafka
下载:http://people.apache.org/~nehanarkhede/kafka-0.7.0-incubating/kafka-0.7.0-incubating-src.tar.gz
> tar xzf kafka-.tgz
> cd kafka-
> ./sbt update
> ./sbt package
启动zkserver:
bin/zookeeper-server-start.sh config/zookeeper.properties
启动server:
bin/kafka-server-start.sh config/server.properties
就是这么简单。
使用kafka
- import java.util.Arrays;
- import java.util.List;
- import java.util.Properties;
- import kafka.javaapi.producer.SyncProducer;
- import kafka.javaapi.message.ByteBufferMessageSet;
- import kafka.message.Message;
- import kafka.producer.SyncProducerConfig;
- ...
- Properties props = new Properties();
- props.put(“zk.connect”, “127.0.0.1:2181”);
- props.put("serializer.class", "kafka.serializer.StringEncoder");
- ProducerConfig config = new ProducerConfig(props);
- Producer<String, String> producer = new Producer<String, String>(config);
- Send a single message
- // The message is sent to a randomly selected partition registered in ZK
- ProducerData<String, String> data = new ProducerData<String, String>("test-topic", "test-message");
- producer.send(data);
- producer.close();
这样就是一个标准的producer。
consumer的代码
- // specify some consumer properties
- Properties props = new Properties();
- props.put("zk.connect", "localhost:2181");
- props.put("zk.connectiontimeout.ms", "1000000");
- props.put("groupid", "test_group");
- // Create the connection to the cluster
- ConsumerConfig consumerConfig = new ConsumerConfig(props);
- ConsumerConnector consumerConnector = Consumer.createJavaConsumerConnector(consumerConfig);
- // create 4 partitions of the stream for topic “test”, to allow 4 threads to consume
- Map<String, List<KafkaMessageStream<Message>>> topicMessageStreams =
- consumerConnector.createMessageStreams(ImmutableMap.of("test", 4));
- List<KafkaMessageStream<Message>> streams = topicMessageStreams.get("test");
- // create list of 4 threads to consume from each of the partitions
- ExecutorService executor = Executors.newFixedThreadPool(4);
- // consume the messages in the threads
- for(final KafkaMessageStream<Message> stream: streams) {
- executor.submit(new Runnable() {
- public void run() {
- for(Message message: stream) {
- // process message
- }
- }
- });
- }
- linkedin高吞吐量分布式消息系统kafka使用手记
- linkedin高吞吐量分布式消息系统kafka使用手记
- linkedin高吞吐量分布式消息系统kafka使用手记
- linkedin高吞吐量分布式消息系统kafka使用手记
- linkedin高吞吐量分布式消息系统kafka使用手记
- linkedin高吞吐量分布式消息系统kafka使用手记
- 高吞吐量分布式系统kafka
- 高吞吐量的分布式发布订阅消息系统Kafka--spring-integration-kafka的应用
- Kafka (一种高吞吐量的分布式发布订阅消息系统) 基础概念
- LinkedIn的高可用消息系统Kafka应用介绍
- 一脸懵逼学习KafKa集群的安装搭建--(一种高吞吐量的分布式发布订阅消息系统)
- 一脸懵逼学习KafKa集群的安装搭建--(一种高吞吐量的分布式发布订阅消息系统)
- kafka--高性能的分布式消息系统
- KAFKA分布式消息系统
- KAFKA分布式消息系统
- kafka分布式消息系统
- KAFKA分布式消息系统
- KAFKA分布式消息系统
- windows2003多用户远程登录(允许多用户以同一个用户名登录) .
- 设置 Oracle 监听器密码(LISTENER)
- 几道有意思的题目
- Goclipse中运行Go语言程序的配置.
- Apache 里的 MPM 调优比较
- linkedin高吞吐量分布式消息系统kafka使用手记
- linu增加swap分区的2种方法
- 安卓代码播放手机本地视频
- jquery multiselect中有checkbox
- 网管必备的十大网络安全测试工具
- Grand Central Dispatch (GCD)
- 迭代器iterator为STL中重要概念
- Objective-C 的 self 和 super 详解 (用简单程序说明问题)
- javascript贪吃蛇