框架的核心通信机制见下图:
上面略过Spring的Jackson转换器等过程。
通信中有四个重要的元素,说明如下
元素 | 说明 |
---|---|
Context(Web端) | 基于ThreadLocal,通过mvc拦截器将部分请求信息设置在Context中。可以在web端的任意地方取出使用,包括Dubbo过滤器。设置的常见信息如用户IP,请求地址,MsgId,会话用户信息等。 |
Context(Server端) | 基于ThreadLocal,在Dubbo的RpcFilter中将数据设置在Context中,可以在Server端的任意地方使用。比如用户会话信息。 |
ConsumerRpcFilter | Dubbo服务消费端的过滤器,在Dubbo调用前可以设置上下文信息,Dubbo调用完成后进行日志输出。 |
ProviderRpcFilter | Dubbo服务提供端的过滤器。在Dubbo服务具体业务方法执行前,可以从consumer传递的RPCContext中获取信息并处理,以及在具体业务调用完成后,对异常进行处理,并进行日志输出。 |