makabakaboom
makabakaboom
该策略主要是将灰度Label标记在灰度实例的ClientID中,并在分配队列时,将每个Broker的指定比例的前N个队列用于所有灰度消费者来进行分配,并在发送端利用相同策略,实现灰度发送生产。
 应用场景主要是用于灰度发布场景,默认没有灰度实例情况下,将所有实例进行分配。在需要业务小规模上线试用的情况下,只需要灰度部分消费实例并打上灰度标签,即可将固定比例的队列分配给灰度的实例进行消费,并在发送端通过相同算法将灰度流量发送到指定队列,待灰度验证完成后,后续可以将所有消费更新消费至新逻辑,并将灰度节点标签去掉,完成上线
percentage只是将队列分成灰度和正常队列的比例,如图上每个broker的16个队列将会把每个broker的前两个队列在发送和消费端均默认为灰度队列。如果我们只需要部署1个灰度消费实例时,我们只需要在该实例配置instanceName加上%GRAY%标签,或者直接通过环境变量注入方式打入灰度标签,利用CID在所有消费者具备最终一致性能力,默认所有消费者实例都能感知到有灰度实例上线,这个时候就会将灰度队列分配给带有灰度标签的消费者。而发送端利用相同算法,将带有灰度的流量直接发送到灰度的队列上,因为发送端和消费端在标识灰度队列上算法是一致的,都是每个broker的前N个队列
> Thanks for Good job ! But in the other hand, it seems like this is not a MQ's responsibility to handle our deployment requirements, keep simple and clean. OK,不过在实际应用过程中,全链路灰度发布需求还是比较大的,而消息队列作为其中一环也应该具备该能力