# 《API网关》第6章:引入执行器封装服务调用

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

  • 本章难度:★★☆☆☆
  • 本章重点:通过引入执行器解耦会话中流程对数据源(RPC)的处理,让整个流程更加干净、整洁易于扩展和维护。
  • 课程视频https://t.zsxq.com/06Eqrn2Fe (opens new window)

# 一、学习指引

继续拆分功能流程

如果你目前编写的代码还不多,可借鉴的优秀设计还不足,那么随之而来的你可能也没法意识到一堆逻辑实现的代码中,有哪些功能模块应该被拆解出来。而对流程的拆解能力,才是一个工程师进步的标志

就像我们整个实现的API网关工程一样,如果不考虑任何扩展性,那么它就是一段 if···else 堆砌出来的在一个类里的逻辑。虽然这样看似会很快的开发完成,但一个代码工程来说,在它的长周期迭代中后期的维护成本才是最大的。所以我们才会不断精湛技术,开发出更多优秀质量的系统工程。

# 二、封装设计

本章之前对于 HTTP 请求到网络协议转换后,就是会话流程的处理。但在会话流程中还有些内容过于冗余,这些内容就是对数据源(RPC)的调用时入参和出参的封装,它们应该被提取到一个专门的类来处理,这样才能更加方便的管理。会话的职责是负责串联上下文,执行器的职责是负责对数据源的调用信息处理

  • 添加 executor 执行器模块,封装对数据源(RPC)的调用,以及处理相关的入参、出参信息。同时这里还会把网关的调用结果进行封装到一个标准的类中,类里包括了code码、info描述,以及 data 结果信息。
  • 此外本章中还会简单的处理下,GatewayServerHandler 网络请求中的内容处理。让整个代码调用能看到主要干路,清晰化流程,方便后续维护。