Kafka学习资料
http://blog.csdn.net/bluetom520/article/details/54892959
https://www.infoworld.com/article/3215165/application-development/how-to-use-apache-kafka-messaging-in-net.html
https://github.com/Microsoft/CSharpClient-for-Kafka
https://github.com/Jroland/kafka-net
https://github.com/confluentinc/confluent-kafka-dotnet/issues/50
--kafka.net
http://blog.csdn.net/wulex/article/details/51786328
http://bbs.csdn.net/topics/392068221?page=1
--confluent.kafka
官网: https://www.confluent.io/product/compare/
https://github.com/confluentinc/confluent-kafka-dotnet
Kafka生产者Producer配置
http://blog.51cto.com/favccxx/1767882
注意:
一、
使用Kafka,需要配置hosts文件,hosts地址:C:\Windows\System32\drivers\etc 。配置方式如下:
1. 在搜索程序和文件中,输入cmd,点击cmd.exe,右键以管理员身份打开。
2、在控制台中输入notepad,打开文本文档
3、在文本文档中选择“打开”,找到hosts文件打开
4、在host文件中配置kafka ip及域名对应关系。保存。
(
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
ip地址 along (域名)
)
二、Kafka中key的作用
key是用于hash分区的。一般我们建立kafka topic的时候,可以预分区。比如分了8个区。
这样你在往kafka写入的时候,如果key是a开头,就存到了分区1,b开头就存到了分区2,以此类推。当然内部肯定是挺复杂的,
分区多了,可以多线程并发读取数据,否则1个分区,读取速度和写入速度都很慢。
不传key就随机放一个地方了。但是不建议这样做。这样做就消息就没有顺序了。
当然,存入分区之前,最好使用md5一次。避免设备都跑到一个分区了。
String did = "homer xxxxx";
send( md5(did) , value );
String did = "homer xxxxx";
send( md5(did) , value );
分区是一个区域,没有数量之说。
你这样想,如果所有消息,全都放在一个盒子里面,当你消费的时候,也只能一个线程消费。这样速度慢。
如果topic有8个分区,就是有8个盒子,这样可以开8个线程消费。
至于一个盒子,能存多少数据,这个是无限的,取决于服务器配置
key只是用作,kafka用来判断,这个消息放到哪个盒子中。
相同的key肯定是会放到一个分区中