agent服务与chat服务以及cti服务

龙&缘 / 2024-11-13 / 原文

一.服务分布

cc-agent: 维护agent状态

cc-gateway-agent: agent服务的gateway,基于企业,针对不同请求,落地到不同cc-agent服务

cc-gateway-ws: ws请求的gateway,ws响应通知到cc-gateway-agent,再落到具体的cc-agent服务

二.多服务间的leader管理

cc-agent服务

注册管理类-DiscoveryVerticle
监听处理事件-startConsumeDispatchMsg
agent服务实例注册-先initInstancesId 后register
实例存储rediskey描述
服务key标识: cti:service:cti-agent-v3: + 服务自增ID
选举多实例的leader-startLead (带ttl)
实例存储rediskey描述
leader实例key标识: cti:election:cti-agent-v3
选中leader后加载全量实例-getAllSvcInstances,添加实例监听-startWatchAgService
企业分配类-VccDispatchServiceImpl
将企业均有分配到不同实例-checkAllVcc
实例存储rediskey描述
企业对应实例的key标识: cti-v3:vcc_2_instance: + 企业ID
具体企业分配实例实现-dispatchVcc
重新均衡企业分配实例-balance
检查企业分配的状态-checkVccStatus
企业分配实例结果缓存-cacheDispatchResult,同时通过grpc加载企业信息到本实例-loadVcc2Grpc
实例管理-AgInstanceManager
具体实例选哪一个-selectInstance

 cc-gateway-agent

配置管理类-AppConfig
基础控件加载-BaseInitVerticle
GRPC加载-GrpcServerVerticle
接口注册实现加载-HttpServerVerticle
GRP请求调用具体实现-CtiGrpcStubManager
   通过redis获取实例
      key: cti-v3:vcc_2_instance: + 企业ID