问题一:钉钉如何确保路由数据在多单元之间的一致性?
钉钉如何确保路由数据在多单元之间的一致性?
参考回答:
"钉钉通过构建一个业务路由系统(RoutingService)来实现流量的精确路由,并借助GlobalTable来确保多单元之间数据的一致性。GlobalTable采用多数派写入成功即返回的原理,能在20ms以内实现一致性写,从而保障了多单元之间路由数据的一致性。
"
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655269
问题二:当钉钉的路由服务出现异常时,如何保障路由的可用性?
当钉钉的路由服务出现异常时,如何保障路由的可用性?
参考回答:
当路由服务出现异常时,钉钉可以继续使用客户端缓存的路由信息进行路由,确保消息的发送不受影响。此外,钉钉还具备主动下推能力,可以通过同步协议将新的路由信息主动推送给客户端,从而进一步提高路由的可用性和会话迁移的平顺性。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655273
问题三:如何确保新创建的会话只在一个单元中创建并维护其一致性?
如何确保新创建的会话只在一个单元中创建并维护其一致性?
参考回答:
对于新创建的会话,钉钉通过GlobalTable来确保其在多单元之间的一致性。GlobalTable采用多数派写入成功即返回的原理,在20ms以内实现一致性写。当在某一单元创建新会话时,该信息会迅速同步到其他单元,确保整个系统中会话信息的一致性。这种方式避免了会话在多个单元中被重复创建或数据不一致的问题。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655277
问题四:钉钉单元化的容灾能力是如何与业务层场景结合的?
钉钉单元化的容灾能力是如何与业务层场景结合的?
参考回答:
"钉钉单元化的容灾能力是深度结合具体业务层场景来落地的。以DTIM为例,在服务单元异常时,服务侧通过提供最核心的服务来保障最基本的能力。这得益于DTIM是最终一致性系统,可以短暂允许部分环节失败,从而实现容灾。
"
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655278
问题五:在DTIM中,当某个单元完全不可用时,消息发送链路是如何进行容灾的?
在DTIM中,当某个单元完全不可用时,消息发送链路是如何进行容灾的?
参考回答:
在DTIM中,若某个单元完全不可用,消息发送链路会降级为local模式。在此模式下,系统会在本地校验非本单元会话数据,校验通过后直接发送消息。若processor遇到非本单元的会话消息数据,可以进行单元间递递做数据回放。本地是否落库可选,而同步协议推送则不区分是否为本单元会话消息数据,直接通过本单元的topic推送给客户端。
关于本问题的更多回答可点击原文查看: