[发明专利]一种异地多活的分布式消息消费方法及装置有效
| 申请号: | 201711350825.6 | 申请日: | 2017-12-15 |
| 公开(公告)号: | CN108170527B | 公开(公告)日: | 2021-06-22 |
| 发明(设计)人: | 冯浩 | 申请(专利权)人: | 北京奇艺世纪科技有限公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50;H04L12/58;H04L29/08 |
| 代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 莎日娜 |
| 地址: | 100080 北京市海淀*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 异地 分布式 消息 消费 方法 装置 | ||
1.一种异地多活的分布式消息的消费方法,其特征在于,包括:
消费端监测服务端中至少两个业务集群是否可用;
如果所述消费端监测到所述至少两个业务集群均可用,则选择所述至少两个业务集群中的一个业务集群作为主业务集群;
所述消费端与选择的所述主业务集群建立连接,开始进行消费;
在开始消费后,所述消费端继续监测所述主业务集群是否可用;
在所述消费端监测到所述主业务集群不可用时,从所述至少两个业务集群中重新选择次优先级高的一个业务集群作为消费的主业务集群;
所述消费端连接重新选择的所述主业务集群进行消费;
在所述消费端连接到重新选择的所述主业务集群进行消费前,计算消费端初始化的消费起点偏移值;
所述消费端根据所述消费起点偏移值重新设置所述消费端的消费进度;
所述消费端按照重新设置的消费进度连接到重新选择的所述主业务集群进行消费;
其中,按照下述公式计算消费起点偏移值:
offsetA=offsetB-Lag-调整因子offsetA≤0,
其中,所述offsetA为业务集群A上一个主题topic消息的消费起点偏移值;
所述offsetB为业务集群B上所述topic目前的消费偏移值;
所述Lag为业务集群B上所述topic消息消费的滞后值,所述Lag的计算公式为:Lag=LogSize–Offset;其中,所述Offset 为业务集群B中一个主题topic单独Partition 被标记为已经消费的消费偏移值,所述LogSize 为业务集群B中一个主题topic单独Partition 的消息总量,所述Partition为所述topic中包含的分区;
所述调整因子为调整常量。
2.根据权利要求1所述的方法,其特征在于,所述选择所述至少两个业务集群中的任一业务集群作为主业务集群的方式为:
所述消费端选择至少两个业务集群中优先级高的一个业务集群作为消费的主业务集群。
3.一种异地多活的分布式消息的消费装置,其特征在于,包括:
监测模块,用于监测服务端中至少两个业务集群是否可用;
第一选择模块,用于在所述监测模块监测到所述至少两个业务集群均可用时,选择所述至少两个业务集群中的任一个业务集群作为主业务集群;
第一消费模块,用于与所述第一选择模块选择的所述主业务集群建立连接,开始进行消费;
其中,所述监测模块,还用于在开始消费后,继续监测所述主业务集群是否可用;
第三选择模块,用于在所述监测模块监测到所述主业务集群不可用时,从所述至少两个业务集群中重新选择次优先级高的一个业务集群作为消费的主业务集群;
第三消费模块,用于连接所述第三选择模块重新选择的所述主业务集群进行消费;
计算模块,用于在第三消费模块进行消费前,计算消费端初始化的消费起点偏移值;
设置模块,用于根据所述消费起点偏移值重新设置所述消费端的消费进度;
所述第三消费模块,还用于按照重新设置的消费进度连接到重新选择的所述主业务集群进行消费;
所述计算模块按照下述公式计算消费起点偏移值:
offsetA=offsetB-Lag-调整因子offsetA≤0,
其中,所述offsetA为业务集群A上一个主题topic消息的消费起点偏移值;
所述offsetB为业务集群B上所述topic目前的消费偏移值;
所述Lag为业务集群B上所述topic消息消费的滞后值,所述Lag的计算公式为:Lag=LogSize–Offset;其中,所述Offset 为业务集群B中一个主题topic单独Partition 被标记为已经消费的消费偏移值,所述LogSize 为业务集群B中一个主题topic单独Partition 的消息总量,所述Partition为所述topic中包含的分区;
所述调整因子为调整常量。
4.根据权利要求3所述的装置,其特征在于,
所述第一选择模块,具体用于在所述监测模块监测到所述至少两个业务集群均可用时,选择至少两个业务集群中优先级高的一个业务集群作为消费的主业务集群。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇艺世纪科技有限公司,未经北京奇艺世纪科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711350825.6/1.html,转载请声明来源钻瓜专利网。





