使用kafka服务进行灰度发布实现方案
背景
2022年6月8日的时候,有服务需要进行灰度发布,但是,这些服务使用到了Kafka,所以无法像普通的http服务那样使用nginx进行引流。
所以,那些HW的大佬就在会议上讨论了,最终也没有得出一个方案出来。
但是,我想到了一个方案,但是又想想在项目组中的待遇,算了算了,何必多管闲事,说出来也不会改变什么,现在周末有空了,我还是以博客的方式记下自己的方案,毕竟是是自己想出来了,仅供参考。
kafka服务调用
生产环境服务调用

灰度发布服务调用

kafka灰度发布的难点
因为消费者监听同一个topic,灰度节点的生产者/Kafka无法实现把消息送到指定的消费者服务中。
灰度实现方案

方案说明:
- 保证在服务B处的监听topic1的方法A处,通过消息体以及查询数据库,判断该服务节点是否为灰度节点。
- 如果是灰度节点/非灰度节点,就把消息转发到kafka上,注意,这时候的topic必须和灰度节点/非灰度节点的IP绑定或者关联的,topic必须保证唯一。
- 最后,服务B也监听一个以自己IP关联的topic进行消费。
总结
- 经过了二次转发,可能会导致消息的丢失,所以需要根据业务确定是否应该开启消息确认机制。
- 如果消息量特别大,建议kafka集群需要准备2个。