# online **Repository Path**: carlzyhuang/online ## Basic Information - **Project Name**: online - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-12 - **Last Updated**: 2026-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # online 服务 旨在管理玩家的路由信息。有状态服使用定点路由的策略 ## 功能 - 更新路由 路由服只负载更新和存储路由表,所以,需要另外的服务管理路由信息的分配。 方案一: 在玩家登录的时候,登录服负载分配玩家的有状态服的实例id。 假设有状态服有role,chat两个微服务。那么具体分配逻辑如下: 1. 登录验证后,login服通过服务发现获取所有服务列表,即 role 的在线表,chat的在线表 2. 使用负载均衡算法,计算roleId在role,chat的位置。由于没有role负载的详细信息,推荐使用一致性哈希算法 3. 将路由表写入到online服 - 查询路由 其他服务查询路由表的详细信息,需要有缓存和重试的机制 问题: 1. 为什么不直接使用一致性哈希算法路由,省掉保存玩家路由表的方案? 一致性哈希算法在实例不变化的稳定期,路由确实是唯一的。但是,有不一致的窗口。比如:实例宕机恢复后,在线表会异步变更。热更新扩缩容,在线表会异步变更。 ### 接口实现 ```proto rpc Update(UpdateReq) returns (UpdateRes); rpc Query(QueryReq) returns (QueryRes); rpc BatchQuery(BatchQueryReq) returns (BatchQueryRes); ``` ### 存储实现 使用redis实现存储层