Context教程
Context相关内容
概述
在框架中,我们所有的请求和操作都会依赖于context,通过context我们可以获取到当前请求的用户,还有他的前置请求节点,还有相关的缓存信息. 我们会根据这些信息,进行用户请求的路由,权限等操作.
一般情况下,我们是不需要自己去操作Context的,因为框架已经帮我们管理了用户的常规操作Context.但是我们在某些场景下,只记录了用户的userId,这时候可以 通过框架提供的Context相关操作进行实例化,而后就可以正常调用相关的rpc请求了.
函数详解
context的相关操作函数,都在rpc包下.我们可以通过rpc.*
的方式调用这些函数
- NewCacheUserContext
实例化一个
Context
,会先从redis等缓存中先获取用户的context信息,如果存在那么就会返回用户的Context
缓存数据.否则会调用NewUserRPCContext
这个函数会从缓存中初始化用户所有
Context
信息这个实例化函数一般会应用在需要精准命中节点的场景,或者有多业务节点请求的场景.避免重复获取节点信息
- NewRPCContext
常规的rpc Context实例, 不包含用户信息.一般用于不涉及用户相关内容的服务器和服务器之间的逻辑请求.
- NewUserRPCContext
默认用户
Context
,用于用户常规的请求.- NewBindRPCContext
多用户节点绑定实例,需要传入多个用户的
UserId
.这个函数会将传入的用户,重新绑定到同一节点中.这个节点信息是通过默认的路由逻辑进行分配的.开发人员不需要关注最终的节点路径.
举个例子: 多个用户通过匹配服,分配到某个房间.这时候我们需要使用该函数,传入这些用户的
userId
创建一个Context
,使用这个Context
调用rpc请求创建房间. 这时候,这几个用户会重新绑定相同的房间节点信息.那么,在后续与房间相关的api请求,都会路由到该房间节点中.
Last modified: 02 March 2024