Skip to main content

1.HTTP协议请求解析

本系列将分享我个人对于网关的了解,旨在从多个维度分享我的理解,欢迎大家探讨

手写网关是我在学习小傅哥的网关课程时所涉及的主题,文章中包含了我个人的观点和学到的知识。希望这些见解和学习笔记能够对读者有所启发,特别是对于想深入了解网关原理和实践的同学们。

https://bugstack.cn/md/assembly/api-gateway/2022-08-12-开篇:如果让我设计一套,TPS百万级API网关.html

网关分为流量网关和API网关,区别在于,流量网关直接与流量打交道,是第一道入口,更加关注的全局流量监控、日志记录、限流、黑白名单控制等。如Nginx

API网关(业务网关)通常会和业务系统有交互,是用来给API服务提供更多附加能力的一个中间层,比如Gateway

图片参考 https://developer.aliyun.com/article/1036809

小傅哥api网关有些不同的是,入口都是http协议,在内部转换为RPC协议进行请求。

所以我们把接口通过RPC的形式注册到网关上,这样就比之前的http转发http要快一些

SessionServer 是入口类,绑定了childHandler,重点来看一下SessionChannelInitializer

SessionChannelInitializer实现了ChannelInitializer,该类可以拿到pipline,然后来添加管道,协议的处理,都是在这里

  1. HttpRequestDecoder http请求解码器
  2. HttpRequestDecoder http响应编码器
  3. HttpObjectAggregator http聚合器,1024 * 1024 超过这个阈值,将会抛出异常,并且会被聚合为FullHttpRequest 如果不加这个聚合器,是没有办法被识别到的

最后就是SessionServerHandler,继承了一个SimpleChannelInboundHandler,表示入站的处理器,做了一个简单的打印