分布式消息中间件之kafka设计思想及基本介绍(一)
Kafka初探
场景->需求->解决方案->应用->原理
我该如何去设计消息中间件--借鉴/完善
场景
跨进程通信(进程间生产消费模型)
需求
基本需求
实现消息的发送和接收。
NIO通信 (序列化/反序列化)--dubbo、avro、protobuf、zk(jute)
实现消息的存储(持久化/非持久化)
数据库存储、文件存储(磁盘:顺序读写、页缓存、持久化的时机(落盘策略)、零拷贝)、内存
是否支持跨语言(多语言生态)
消息的确认(确认机制)--在跨进程通信中 ->业务逻辑需求
是否支持集群
自己实现选举、第三方的实现(zk)
高级需求
是否支持有序(业务逻辑)
是否支持事务消息(业务逻辑)->最终一致性
是否支持高并发和大数据的存储
是否支持可靠性存储
是否支持多协议
是否收费
发展
pub/sub--金融领域--TIB(规则)
非个性化需求, 而是共性化需求
IBM websphere mq(商业)
JMS协议->Java api->AMQP(通用性)
kafka
起源:LinkedIn 活动流 运营数据 诞生之初就是为了解决大数据量的问题
简介
实现语言:scala
架构图
下载及安装
单节点安装:
sudo wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.0/kafka_2.11-2.3.0.tgz
注意點:
必须安装zk(启动时必须先启动zk),详情请参考
远程安装 必须修改一下两个属性
#本机ip
listeners=PLAINTEXT://‘本机ip’:9092
#zk地址
zookeeper.connect=localhost:2181启动命令
sh kafka-server-start.sh -daemon server.properties
集群安装:
多机器部署
下载安装同单机,主要修改配置文件server.properties文件配置
#zookeeper地址(三个节点相同)
zookeeper.connect=192.168.1.11:2181
#broker.id(三个节点分别为0、1、2)
broker.id=1
##监听协议(三个节点配置各自的ip地址)
listeners=PLAINTEXT://192.168.1.12:9092伪集群部署
在单节点创建文件目录进行设置。参考上述多机器部署。
基本操作
##创建topic--创建成功后可以在zk客户端看到此消息
sh kafka-topics.sh --create --zookeeper 192.168.1.11:2181 -replication-factor 1 --partitions 1 --topic test
##消费监听消息
sh kafka-console-consumer.sh --bootstrap-server 192.168.1.11:9092 --topic test --from-beginning
##生产消息
sh kafka-console-producer.sh --broker-list 192.168.1.11:9092 --topic test
消息中间件的应用场景
不同的业务领域,异步,解耦,削峰
注册新用户(用户中心)
->发送理财金/优惠券;为了增加复购->赠送一些优惠券(营销服务)
秒杀场景(流量大,商品少)
分布式消息中间件之kafka设计思想及基本介绍(一)的更多相关文章
- AI框架精要:设计思想
AI框架精要:设计思想 本文主要介绍飞桨paddle平台的底层设计思想,可以帮助用户理解飞桨paddle框架的运作过程,以便于在实际业务需求中,更好的完成模型代码编写与调试及飞桨paddle框架的二次 ...
- 分布式系列九: kafka
分布式系列九: kafka概念 官网上的介绍是kafka是apache的一种分布式流处理平台. 最初由Linkedin开发, 使用Scala编写. 具有高性能,高吞吐量的特定. 包含三个关键能力: 发 ...
- Kafka/Metaq设计思想学习笔记 转
转载自: http://my.oschina.net/geecoodeer/blog/194829 本文没有特意区分它们之间的区别,仅仅是列出其中笔者认为好的设计思想,供后续设计参考. 目前笔者并没有 ...
- Kafka详解四:Kafka的设计思想、理念
问题导读 1.Kafka的设计基本思想是什么?2.Kafka消息转运过程中是如何确保消息的可靠性的? 本节主要从整体角度介绍Kafka的设计思想,其中的每个理念都可以深入研究,以后我可能会发专题文章做 ...
- kafka具体解释四:Kafka的设计思想、理念
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/suifeng3051/article/details/37606001 本节主要从总体角度 ...
- 从一般分布式设计看HDFS设计思想与架构
要想深入学习HDFS就要先了解其设计思想和架构,这样才能继续深入使用HDFS或者深入研究源代码.懂得了"所以然"才能在实际使用中灵活运用.快速解决遇到的问题.下面这篇博文我们就先 ...
- Kafka 设计与原理详解
一.Kafka简介 本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料. 转载请注明出处 : 本文链接 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索. ...
- kafka之二:Kafka 设计与原理详解
一.Kafka简介 本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料. 转载请注明出处 : 本文链接 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索. ...
- [转载] 360分布式存储系统Bada的设计和应用
原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=208931479&idx=1&sn=1dc6ea4fa28a ...
随机推荐
- partprobe 和 partx 的用法
partprobe: 用于重读分区表,当出现删除文件后,出现仍然占用空间.可以partprobe在不重启的情况下重读分区. 将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表. -d 不更新内核 ...
- SSIS数据同步实践
SSIS数据同步实践 背景 在已初步验证不同实例下同构表数据同步方案之后,为了实现数据持续同步,需使用SSIS把之前的生成脚本和执行脚本的两个步骤组合在一起部署成包之后,通过JOB定时去执行: 测 ...
- 【JVM学习笔记】系统类加载器
可以通过“java.system.class.loader"属性指定系统类加载器 默认情况下,该属性值为空: public class Test { public static void m ...
- 【笔记】7天玩转容器&CKA管理员实训
第一部分 day1,容器基础知识介绍 安装 apt-get install docker-engine [root@cce-7day-fudonghai-24106 01CNL]# docker -v ...
- 快速幂 -- cogs1437 转圈游戏
题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=vJimmkqjW [题目描述] 思路:简单模拟,重点在于如何求这个轮数,由于k的范围过大 ...
- MySQL连接处理方式及最佳并发连接数设置
MySQL连接处理方式及最佳并发连接数设置 mysql是单进程,多线程的架构,通过创建多个线程来服务不同的用户连接,通常情况下,随着用户连接数的增加,mysql内部用于处理用户连接的线程也会同步的增长 ...
- 解决VScode无法输出中文的问题
VScode输出框输出不了中文 解决方法: 在环境变量里面增加:PYTHONIOENCODING为UTF-8 重启vscode即可
- [转帖]彻底理解cookie,session,token
彻底理解cookie,session,token https://www.cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已 ...
- windows环境jar包部署到linux服务器,一键操作
背景: windows系统下生成的jar包通过FTP上传到linux服务器,然后通过XShell进行jar包的发布,这样反复了几个月后,开发阶段需要频繁更新包的部署.个人觉得很繁琐,想一键式把这个工作 ...
- MySQL中的数据类型 [数值型、字符串型、时间日期型]
MySQL中的数据类型 [数值型.字符串型.时间日期型] MySQL中各数据类型 1. 数值类型(整型) 类型 数据大小 类型 (无符号:unsigned) 数据大小 存储空间 tinyint -12 ...