01 | 消息引擎系统ABC
01 | 消息引擎系统ABC
讲述:胡夕
时长10:03大小9.19M
开放讨论
赞 64
提建议
精选留言(119)
- huaweichen2019-06-04曾国藩:真正聪明人都在下笨功夫! https://zhuanlan.zhihu.com/p/25100394共 2 条评论114
- 孙志强2019-06-04讲讲怎么把50完行源代码读下来的? 嘿嘿
作者回复: 一行一行啃下来的。如果你也有兴趣,我建议可以先从kafka.log包开始读起,会很有收获的~~
共 6 条评论67 - 开发无止境,BUG随身...2019-06-03有个问题请教下老师: 之前也用过kafka,怎么解决实时结果响应问题呢?比如秒杀商品,生产者产生订单,消费者处理订单结果,那这结果如何实时返回给用户呢?
作者回复: 这个场景使用Kafka Streams比较适合,它就是为read-process-write场景服务的
57 - Lei Yang2019-06-03老师可以讲一讲Kafka和别的mq的区别和最佳选择方法么?例如什么时候选择RabbitMQ什么时候选择Kafka等等
作者回复: RabbitMQ属于比较传统的消息队列系统,支持标准的消息队列协议(AMQP, STOMP,MQTT等),如果你的应用程序需要支持这些协议,那么还是使用RabbitMQ。另外RabbitMQ支持比较复杂的consumer Routing,这点也是Kafka不提供的。
共 2 条评论50 - Dovelol2019-06-03老师好,想问下有些业务用mq来做异步处理,为了削峰填谷,是不是上游发送消息成功就认为业务成功了,可能下游过很久去消费,那实时性要求很高的业务怎么办呢,比如生成了订单但是一直不处理也不好吧。另外想请教下老师的角度来讲下mq和rpc调用的区别是什么呢?
作者回复: mq和rpc的区别往大了说属于数据流模式(dataflow mode)的问题。我们常见的数据流有三种:1. 通过数据库;2. 通过服务调用(REST/RPC); 3. 通过异步消息传递(消息引擎,如Kafka) RPC和MQ是有相似之处的,毕竟我们远程调用一个服务也可以看做是一个事件,但不同之处在于: 1. MQ有自己的buffer,能够对抗过载(overloaded)和不可用场景 2. MQ支持重试 3. 允许发布/订阅模式 当然它们还有其他区别。应该这样说RPC是介于通过数据库和通过MQ之间的数据流模式。
共 4 条评论48 - Shane2019-06-14老师,今天才学习到这篇文章,还是老师能够在百忙之中抽出时间来解答我的困惑。 这篇文章提到了消息的协议,老师这里介绍了两种模式一种是点对点,一种是订阅,发布模式。但是,为什么我一开始想到消息的协议是http之类的传输协议?这两个有什么区别和联系?
作者回复: http不属于消息传输协议,它是网络通信协议的一种,严格来说这是两个范畴或者说是两个层次上的协议。 通常来说,两个进程进行数据流交互的方式一般有三种: 1. 通过数据库:进程1写入数据库;进程2读取数据库 2. 通过服务调用:比如REST或RPC,而HTTP协议通常就作为REST方式的底层通讯协议 3. 通过消息传递的方式:进程1发送消息给名为broker的中间件,然后进程2从该broker中读取消息。消息传输协议属于这种模式 因此我说虽然我们都称它们为协议,但它们不是一个层次上的协议。
共 4 条评论38 - 第一装甲集群司令克莱...2019-06-07我们公司用kafaka通过埋点,日志分析,做链路监控,某个业务接口出现问题,预警系统发送消息给处理人。很及时有效,不用等运维那么慢的反馈了。合作方对比处理效率也很满意。36
- jeffery2019-06-03pulsar高吞吐低延迟和kafka谁会主宰未来?夕哥、能不能拓展下flink+kafka的耦合!谢谢
作者回复: 和Pulsar的斯杰、翟佳都相识,不敢妄下结论。Flink + Kafka最近的确有标准套餐的趋势:)
共 2 条评论27 - 杨鹏程baci2019-06-20胡夕老师好,我是第一次在这提问,这门课程我应该是0基础了,有一些疑问希望老师帮忙解答一下,用消息引擎的这种数据流数据方式,上游是不是就无法得知处理结果了,甚至是无法将返回值传回上游了?谢谢!
作者回复: 嗯嗯,确实不太容易。因为这种通信方式一般是异步且是单向的,如果你需要这种回馈机制,最好使用服务调用 的方式
共 3 条评论22 - gnayuh2019-06-03老师讲的很好,我是之前那种听过kafaka等消息引擎大名的初学者,听完第一节课,联想到这个发布订阅模型跟之前学过java设计模式之观察者,总感觉它们之间有那么点类似,想知道它们之间的某种关系。还有就是学操作系统时候的生产者消费者也很像
作者回复: 它们的确很类似。特别是发布/订阅与观察者模式。在《Head first Design Pattern》一书中更是有这样的话: Publishers + Subscribers = Observer Pattern 不过细究起来还是有些许不同,pub与sub之间通常都隔了一层,比如broker或message channel,但是Observer模式中Observer通常都直接对接被观测者,因此Pub/Sub模式中组件的耦合度更低;另外Pub/Sub经常是以异步的方式实现,而Observer模式通常都是同步的
22 - 燕子上2019-06-04我司直接把kafka当mq来使用,高吞吐、低延迟、松耦合。对!我司看上了松耦合,哪哪都要用kafka解耦,真正的面向kafka编程🤣
作者回复: 赞👍
共 2 条评论21 - paradox2019-06-031. consesus algorithm,在区块链中多翻译为共识算法,而在其它领域多被翻译为一致性算法,个人觉得共识算法表意更清楚。 2. 削峰填谷,实际上就是流量整形的形象表达,主要还是为了应对上游瞬时大流量的冲击,避免出现流量毛刺现象,保护下游应用和数据库不被大流量打垮。共 1 条评论17
- Bin滨2019-06-19谢谢知识分享。 在Martin Kleppmann 的书中把kafka 定义成 log-based message brocker, 这个基本上是对kafka最简单的定义了。append-only, partition, totally ordered 是比较需要理解的概念。
作者回复: 嗯嗯,DDIA是一本神书:) 其实这个定义最早还是Kafka作者Jay Kreps提出的,有兴趣可以看看Kafka的论文:http://notes.stephenholiday.com/Kafka.pdf 以及Jay Kreps的 《I ❤️ Logs》
16 - 吃饭饭2019-06-03胡老师好,我想请教一个学习方法,我在做Kafka测试的时候遇到一个问题,我记得以前老版本的时候使用命令行进行Demo测试时,消费消息到控制台使用:bin/kafka-console-consumer.sh --zookeeper localhost:2181/kafka --topic test 就可以,但是今天我换了高版本发现不对了,以前的 --zookeeper 新版本不支持了。知道这点后我希望能够从官网找到具体是哪个版本开始删除这个指令的以及删除的原因,但是我这种为题我不会查询官网,只能从百度等搜索引擎上看其他人的一些总结,希望老师能给示例一番,感谢。展开
作者回复: 指定--zookeeper是老版本的消费者,新版本需要指定--bootstrap-server。新版本消费者API是0.9版本引入的,主要是为了移除消费者API对ZooKeeper的依赖。专栏后面有文章谈到这一点。 新版本使用方法: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
共 2 条评论14 - 东风第一枝2019-06-03Kafka官网的描述是“Apache Kafka® is a distributed streaming platform.”,我觉得这里的重点在于分布式和流式处理,而且我认为消息引擎也可以看做是流式处理的一种,不知道老师怎么看?
作者回复: Kafka是以消息引擎起家的,后面转型成流处理平台。没有冒犯的意思,我不认为消息引擎是流处理的一种。事实上,流处理在意的是如何处理无限数据集的问题。它们是不同的领域:)
共 2 条评论13 - 杨俊2019-06-04希望后面能说下要是kafka突然宕机或者临时停止服务进行更新,上游服务的消息该怎么正确更好处理呢?怎么保证消息的能够在kafka恢复工作的时候正确传递,谢谢
作者回复: 如果是升级Kafka这种主动停机,应该采用rolling upgrade来做,不至于服务中断。如果是大面积突然宕机,快速处理反而是最重要的。如果在乎上游系统的消息delivery语义,增加retries的同时试试幂等producer吧
共 2 条评论12 - 清晨吼于林2019-06-111、A系统为什么不能直接把消息发送给B系统? 这可以出一个面试题,😆 2、作者的学习经历确实让人很振奋,可不可以花一个章节,专门讲讲,你当时是怎么读kafka的源码的?🙏11
- 草头2019-06-0350万行,我的天……大牛都是这样炼成的!向大佬看齐,做不到喊喊口号也好!9
- 安不安生2019-06-03我们公司用来传输视频切片,然后使用集群进行视频分析,之前曾经用过kafka ,因为没有人熟悉,不会维护,导致放弃,现在使用aws kinesis 服务,怎么才能说服领导引进kafka 呢?
作者回复: hmmm... 使用Kafka自己把控度会高一些。另外很多公司对数据出公网是有顾虑的,使用云上的服务必然涉及到将 公司数据传给云服务器的问题。如果是敏感数据这也是要考虑的
9 - tracy2019-06-03现在消息中间件很多,想要了解kafka和其他消息中间件的优劣点,系统选型时需要考虑什么?
作者回复: 如果是以实现高吞吐量为主要目标,Kafka是不错的首选;如果是以实现业务系统为主要目标,特别是金融类业务,可以考虑应用Kafka的流处理组件Kafka Streams。不过坦率说目前将Kafka应用于纯业务系统的并不多,但是前景依然可期:)
9