cch123 / blog_comment

comments of xargin.com
8 stars 0 forks source link

用 MQ 解耦其实是骗你的 #194

Open cch123 opened 3 years ago

cch123 commented 3 years ago

https://xargin.com/mq-is-not-savior/

MichaelXoXo commented 3 years ago

所以,又有什么解决的办法呢?

cch123 commented 3 years ago

@Michael728 ,哈哈,公众号上也有朋友是这么问的,我汇总一下,大概是这些:

  1. 接受有些复杂场景下,上下游就是要有耦合的事实
  2. 使用 schema registry 之类的方案,让上下游使用一份 domain event 的 schema,也可以用 pb 之类的文件来描述,让队列里的消息也能类似 API 定义一样,有“软件契约”
  3. 增加专门的 data validation 服务,类似 Google 在应对机器学习数据问题时的一个方案:https://blog.acolyer.org/2019/06/05/data-validation-for-machine-learning/
  4. 如果公司内有 mono repo,那么在有 mono repo + schema 描述的前提下,适当开发一些静态分析工具,来阻止上游程序员犯错
  5. 耦合实在解除不了的情况下,让下游的计算和查询模块做好分离,重点保障查询模块的稳定性,不要拖累主流程
baijianruoliorz commented 3 years ago

@Michael728 ,哈哈,公众号上也有朋友是这么问的,我汇总一下,大概是这些:

  1. 接受有些复杂场景下,上下游就是要有耦合的事实
  2. 使用 schema registry 之类的方案,让上下游使用一份 domain event 的 schema,也可以用 pb 之类的文件来描述,让队列里的消息也能类似 API 定义一样,有“软件契约”
  3. 增加专门的 data validation 服务,类似 Google 在应对机器学习数据问题时的一个方案:blog.acolyer.org/2019/06/05/data-validation-for-machine-learning
  4. 如果公司内有 mono repo,那么在有 mono repo + schema 描述的前提下,适当开发一些静态分析工具,来阻止上游程序员犯错
  5. 耦合实在解除不了的情况下,让下游的计算和查询模块做好分离,重点保障查询模块的稳定性,不要拖累主流程

受教了 之前面试还有说过这个来着:D

cch123 commented 3 years ago

@Michael728 ,哈哈,公众号上也有朋友是这么问的,我汇总一下,大概是这些:

  1. 接受有些复杂场景下,上下游就是要有耦合的事实
  2. 使用 schema registry 之类的方案,让上下游使用一份 domain event 的 schema,也可以用 pb 之类的文件来描述,让队列里的消息也能类似 API 定义一样,有“软件契约”
  3. 增加专门的 data validation 服务,类似 Google 在应对机器学习数据问题时的一个方案:blog.acolyer.org/2019/06/05/data-validation-for-machine-learning
  4. 如果公司内有 mono repo,那么在有 mono repo + schema 描述的前提下,适当开发一些静态分析工具,来阻止上游程序员犯错
  5. 耦合实在解除不了的情况下,让下游的计算和查询模块做好分离,重点保障查询模块的稳定性,不要拖累主流程

受教了 之前面试还有说过这个来着:D

现在面试这么难了。。

baijianruoliorz commented 3 years ago

@Michael728 ,哈哈,公众号上也有朋友是这么问的,我汇总一下,大概是这些:

  1. 接受有些复杂场景下,上下游就是要有耦合的事实
  2. 使用 schema registry 之类的方案,让上下游使用一份 domain event 的 schema,也可以用 pb 之类的文件来描述,让队列里的消息也能类似 API 定义一样,有“软件契约”
  3. 增加专门的 data validation 服务,类似 Google 在应对机器学习数据问题时的一个方案:blog.acolyer.org/2019/06/05/data-validation-for-machine-learning
  4. 如果公司内有 mono repo,那么在有 mono repo + schema 描述的前提下,适当开发一些静态分析工具,来阻止上游程序员犯错
  5. 耦合实在解除不了的情况下,让下游的计算和查询模块做好分离,重点保障查询模块的稳定性,不要拖累主流程

受教了 之前面试还有说过这个来着:D

现在面试这么难了。。

面试MQ三大作用:应用解耦 流量削峰 异步处理/doge

cch123 commented 3 years ago

@Michael728 ,哈哈,公众号上也有朋友是这么问的,我汇总一下,大概是这些:

  1. 接受有些复杂场景下,上下游就是要有耦合的事实
  2. 使用 schema registry 之类的方案,让上下游使用一份 domain event 的 schema,也可以用 pb 之类的文件来描述,让队列里的消息也能类似 API 定义一样,有“软件契约”
  3. 增加专门的 data validation 服务,类似 Google 在应对机器学习数据问题时的一个方案:blog.acolyer.org/2019/06/05/data-validation-for-machine-learning
  4. 如果公司内有 mono repo,那么在有 mono repo + schema 描述的前提下,适当开发一些静态分析工具,来阻止上游程序员犯错
  5. 耦合实在解除不了的情况下,让下游的计算和查询模块做好分离,重点保障查询模块的稳定性,不要拖累主流程

受教了 之前面试还有说过这个来着:D

现在面试这么难了。。

面试MQ三大作用:应用解耦 流量削峰 异步处理/doge

这倒还好, 其实还有延迟消息和事务消息