作者回复: 是的,非常好~ 这块都是通用的。 大家理解了设计原理,就自然可以看到在很多知名组件里面都是这么玩的。
作者回复: 是的,要考虑的东西非常多,所以需要有一个系统的了解。可以根据本节的内容,尝试再细化一下这个答案,比如画个思维导图,梳理有哪些模块,如何选型,如何实现等等
作者回复: 1. 是的 2. 我个人理解应该还好,转发失败就是写入失败,客户端是有感知的,此时重新发送就可以。此时只要写入成功,数据应该不会丢失。 3. 是的, 主要成本在于客户端SDK的寻址模块的开发成本
作者回复: 是不是意味着如果出错后的更新还没有找到分区信息就属于就属于不可恢复异常了? --------- 在实际实现上,找不到分区会直接定义为”可重试异常“,然后不停的重试。这样的好处是: 1. 如果一开始topic不存在,然后配合服务端自动创建topic,只要服务端有了topic,客户端业务就自动恢复正常了 2. 如果Leader 切换,也可能在一段时间内会报这个异常,一直重试,可以解决这种leader切换的场景。 3. 在一些其他的场景,只要客户端不断重试,只要客户端分区存在了,客户端就会立即恢复正常,不需要客户端手动去处理。 整体下来,总结好处就是客户端不会报错,会自动恢复,显得更加友好。
作者回复: 客户端是指我们自己的业务应用,我们用来调用消息队列的服务的应用。 比如订单服务,它需要使用到RocketMQ,此时就需要在订单服务创建多个生产者,以提高写入/消费的性能。 此时,客户端就是指我们的业务应用。
作者回复: 有这个诉求的同学蛮多的,我自己后面有这个计划。可以加课程的微信群沟通交流哈。 当前这门课你可以理解是一个技术选型,方案设计的过程,在结课的时候技术方案就设计完成了。 接下来就是实操去写一个简单的MQ了。