Kafka核心技术与实战 01

二进制的字节序列

消息传输协议

  • 点对点模型

  • 发布/订阅模型

Kafka与JMS的关系

JMS 是 Java Message Service,

它也是支持上面这两种消息引擎模型的。严格来说它并非传输协议而仅仅是一组 API 罢

了。不过可能是 JMS 太有名气以至于很多主流消息引擎系统都支持 JMS 规范,比如

ActiveMQ、RabbitMQ、IBM 的 WebSphere MQ 和 Apache Kafka。当然 Kafka 并未

完全遵照 JMS 规范,相反,它另辟蹊径,探索出了一条特有的道路。

常见问题


  • 怎么解决实时结果响应问题呢?比如秒杀商品,生产者产生订单,消费者处理订单结果,那这结果如何实时返回给用户呢?

这个场景使用Kafka Streams比较适合,它就是为read-process-write场景服务的

  • 讲一讲Kafka和别的mq的区别和最佳选择方法么?例如什么时候选择RabbitMQ什么时候选择Kafka等等

RabbitMQ属于比较传统的消息队列系统,支持标准的消息队列协议(AMQP, STOMP,MQTT等),如果你的应用程序需要支持这些协议,那么还是使用RabbitMQ。另外RabbitMQ支持比较复杂的consumer Routing,这点也是Kafka不提供的。

  • 有些业务用mq来做异步处理,为了削峰填谷,是不是上游发送消息成功就认为业务成功了,可能下游过很久去消费,那实时性要求很高的业务怎么办呢,比如生成了订单但是一直不处理也不好吧。mq和rpc调用的区别是什么呢?

实时性要求高的应该是同步的rpc,mq是异步的。

通常来说,两个进程进行数据流交互的方式一般有三种:

\1. 通过数据库:进程1写入数据库;进程2读取数据库

\2. 通过服务调用:比如REST或RPC,而HTTP协议通常就作为REST方式的底层通讯协议

\3. 通过消息传递的方式:进程1发送消息给名为broker的中间件,然后进程2从该broker中读取消息。消息传输协议属于这种模式

mq和rpc的区别往大了说属于数据流模式(dataflow mode)的问题。我们常见的数据流有三种:

  1. 通过数据库;

  2. 通过服务调用(REST/RPC);

  3. 通过异步消息传递(消息引擎,如Kafka)

RPC和MQ是有相似之处的,毕竟我们远程调用一个服务也可以看做是一个事件,但不同之处在于:

  • MQ有自己的buffer,能够对抗过载(overloaded)和不可用场景
  • MQ支持重试
  • 允许发布/订阅模式
当然它们还有其他区别。应该这样说RPC是介于通过数据库和通过MQ之间的数据流模式。
  • 用消息引擎的这种数据流数据方式,上游是不是就无法得知处理结果了,甚至是无法将返回值传回上游了?

因为这种通信方式一般是异步且是单向的,如果你需要这种回馈机制,最好使用服务调用 的方式

  • 现在消息中间件很多,想要了解kafka和其他消息中间件的优劣点,系统选型时需要考虑什么?

如果是以实现高吞吐量为主要目标,Kafka是不错的首选;如果是以实现业务系统为主要目标,特别是金融类业务,可以考虑应用Kafka的流处理组件Kafka Streams。不过坦率说目前将Kafka应用于纯业务系统的并不多,但是前景依然可期:)

  • 卡夫卡的消息超过了log.retention.bytes以后可以拒绝生产者的消息么,现在默认好像直接删除

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618164986)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值