Skip to content

Latest commit

 

History

History
26 lines (18 loc) · 1.59 KB

abnormalScenario.md

File metadata and controls

26 lines (18 loc) · 1.59 KB

为保证sorakaq系统的高可用性,zookeeper/kafka/receive/admin/center/worker模块都需要进行多实例分布式部署,redis需要开启持久化,下面针对sorakaq系统可能存在的异常场景进行简要介绍。

redis单实例宕机

  • 导致的问题:center无法正常备份和分发消息,worker上的消息无法正常回调。
  • 解决办法:重启redis实例并进行消息恢复,下个版本会通过redis cluster或者mysql clustr进行消息备份。

receive单实例宕机

  • 导致的问题:无,其他正常的receive实例可以提供服务。

admin单实例宕机

  • 导致的问题:无,其他正常的admin实例可以提供服务。

center单实例宕机

  • 导致的问题:kafka消费者组重平衡期间center无法正常消费消息,重平衡结束后可以正常消费,重平衡期间积压的消息在系统中的流转时间会有所增加。

worker单实例宕机

  • 导致的问题:无,center会从redis获取宕机worker的备份消息,并对备份消息的延时时间进行重新计算(新的延时时间 = 消息接收时间 + 老的延时时间 - 当前时间),最后对备份消息进行重新分发。

kafka消息堆积

  • 导致的问题:消息在系统中的流转时间会有所增加。
  • 解决办法:可以通过增加center实例提高消息消费速度。

center重复消费kafka消息/center重复分发消息

  • 导致的问题:同一条消息可能多次回调业务方。
  • 解决办法:防止同一条消息多次回调对业务方造成影响,业务方需要对消息进行幂等校验。