关于微服务:微服务框架ServiceComb源码解析之一Producer处理客户端请求
- Producer 服务启动后,会部署 vertx 服务,监听端口,期待 Client 连贯,并且客户端申请路由配置到 VertxRestDispatcher.
- Client 发动申请,申请被 vertx 路由到 VertxRestDispatcher,通过用户配置的 HttpServerFilter 进行接管申请后的预处理操作。其中 ServerRestArgsFilter 是 ServiceComb 内置的 filter,专门用来反序列化申请和序列化响应体的。
- 通过 HttpServerFilter 的 afterReceiveRequest 解决后,正式进入 Handler 链,进行具体的业务解决,用户能够自定义多个 Handler,但最初一个 Handler 是 ProducerOperationHandler,这个是 ServiceComb 内置的 Handler,它负责通过反射调用申请对应的 operation,对申请进行解决,失去 response.
- 失去 response 后,回调解决 response 的办法 sendResponseQuietly(resp)
- 这个办法做的事是,调用 HttpServerFilter 链上每个 filter 的 beforeSendResponseAsync,进行发送前解决。其中内置的 ServerRestArgsFilter 会对 response 对象进行序列化,变成 json 字符串,响应给 client