作者:小傅哥 博客:https:bugstack。cn 沉淀、分享、成长,让自己和他人都能有所收获! 我在经海路,地铁站这么多年啊,肝了这么多项目,卷了这么多技术,攒了这么多经验。不就是为了给兄弟们讲点在真实场景有用的干货吗?! 所以你问我手撕了Spring源码、手撕了MyBatis源码,接下来是不要手撕SpringMVC源码了?其实不会的,因为互联网大厂做项目这么多年就没有几次用SpringMVC的!所以搞它干肾嚒?一、为啥不用SpringMVC? 关于为什么不用SpringMVC或者很少使用这样的技术栈,ChatGPT给出了这样的回答; ChatGPT的这个回答,非常正确。有了ChatGPT可以谨防上当受骗! 互联网现代分布式架构应用技术主要以RPC通信的微服务模型为主,代表技术如;Dubbo、gRPC、Thrift,它们的通信协议为RPC协议(RemoteProcedureCall,远程过程调用),这样的调用方式可以提高微服务间的通信性能。 但这样的RPC却不是WEB、H5、小程序的HTTP调用,所以通常需要把RPC转换为HTTP协议。那么怎么转换,总不能一个个在SpringMVC中硬编码吧,这不是胡来吗!所以在互联网大厂应运诞生了API网关项目,它可以通过RPC服务的注册和发现机制,把接口注册网关中心,再通过网关算力执行接收HTTP请求协议进行解析做RPC接口的泛化调用。这中间还包括了;认证、授权、风控和服务治理的相关事项。二、手写一套网关 讲道理,学习源码框架最行之有效的办法就是上手,看是看不会的,只有事必亲躬、亲力亲为的体验才能掌握框架的原理和精髓。所以小傅哥在学习这类东西的时候一直也是喜欢上手实践,一次花充足的时间折腾一件事,比反反复复的毛毛躁躁的学习要用的多。 所以从22年的8月开始一直到今天,小傅哥都会在周末的时候研究API网关的设计和代码实现,在这将近8个月的时间里终于完成了API网关的框架结构和核心流程,微服务工程数6个,代码行数总计1万以上。实现了;协议转换、服务映射、调用鉴权、注册中心、上报接口、管理后台等模块功能,代码使用了众多的分治、抽象和设计模式等思想,保证整体代码的高质量和可维护性。 工程信息 https:t。zsxq。com0ciYdgP5u 管理后台 https:t。zsxq。com0ciYdgP5u 运行效果 https:t。zsxq。com0ciYdgP5u 慢工出细活,只有把每一个知识点都经过深思熟虑的设计,才能做出行之有效的解决方案。也能让参与者在这里学习到有价值的内容。接下来小傅哥在分享下这块的架构模型,看看整体这套网关是如何被运行的。三、网关架构设计 API网关除了基础的功能模块以外,还需要重点考虑负载均衡的设计,只有这样才能被横向扩展支撑高并发的吞吐量。所在负载设计这块,小傅哥也是花了不少的时间来构建,让负载可以被动态的管理。 https:t。zsxq。com0ciYdgP5u 这是一整套API网关的核心通信模型结构图,以API网关算力的多套服务注册到网关中心开始,拉取RPC应用接口并完成映射HTTP调用操作。最终允许用户通过Nginx访问和路径重写的负载均衡管理,调用到具体的网关算力中执行协议解析和RPC接口的泛化调用并最终返回结果数据。就这套架构设计学习完,就够你晋升到P7岗了! 整个网关模型的复杂度较高,这里的简述还不能概括出全部的核心,所以小傅哥计划对加入学习的伙伴,后期组织一场网关架构设计的技术直播来讲解里面的具体实现。四、加入源码学习 不好好深度学习,再过几年35了,你得遭老罪喽。 当然小傅哥也不瞎扯,这是一套付费学习项目。在小傅哥花费了大量的周末、假期所沉淀出的技术经验,为有需要技术成长的伙伴开一扇可以进入学习的门。这对新人和有技术提升诉求的伙伴来说非常有必要,因为没人带的时候,自己要浪费很长时间摸索,也找不到正确的路。学习链接:https:t。zsxq。com0ciYdgP5u