# 《API网关》第3章:分治处理会话流程

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

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

# 一、学习指引

你不可能一次性,把所有事情都做完,但你总有时间做完一件事!

关于网关的实现,也包括像星球中Lottery的开发、源码的学习手写Mybatis。这些内容最开始最难的那部分不是功能的实现,而是小傅哥会🤔去思考每一个章节拆分的颗粒度,希望在这条完整的学习线上,把架构、设计、重构、实现、思考等这些内容展示给你,并让你能吸收学习到核心的本质内容。这远比简单的堆砌些代码片段重要的多,所以也希望你在学习的过程中,多一些这方面的思考。

那么本章小傅哥就带着大家来完成这样一件事情。—— 注意:小傅哥不是要带着大家急匆匆的实现一个API网关系统,那样的直接以目的为导向,将失去学习意义。所以如果是在职的公司伙伴,着急用网关可以参考整体的架构设计和网络资料做开发实现,遇到问题可以对我发起提问,我会去回答。🍻

# 二、分治逻辑

分治是软件设计原则,康威定律第一条包括的内容,它可以帮助和指导我们去划分系统模块的职责,界限上下文关系。PS:很多伙伴没有划分清上下文的系统和模块,很可能造成循环依赖,即使是最新版本的 Spring 也并不推荐使用循环依赖,它只是为一个错误的设计做的补丁逻辑。

本章所体现的重点是重构,因为我们要继续扩展新的功能,而上一章功能实现的逻辑分层结构不易于扩展,所以需要进行重构处理。重构点包括;

  1. 拆分session包下会话业务逻辑部分和网络通信部分,做功能实现的隔离。
  2. 拆分bind包下代理和对RPC接口的泛化调用,这里你可以把RPC当做一种可连接资源,而这种连接资源也不是只有 RPC 一种,同时也因为 RPC 的泛化调用是一种通用方法,并不需要与逻辑绑定,所以它也应该被拆分出来。