# 《高性能Polaris网关》开篇:我要手把手教你搭建并研发一套抗瞬时百万流量的高性能网关项目
作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/h7vdS (opens new window)
沉淀,成长,突破,帮助他人,成就自我。
- 本章难度:★☆☆☆☆
- 本章重点:主要介绍在接下来的一段时间中,冰河要带着大家从零开始搭建并研发一套可支持瞬时百万流量的高并发、高性能网关项目。
- 课程视频:https://t.zsxq.com/h7vdS (opens new window)
大家好,我是冰河~~
今天,正式通知大家一件事情:又到了启动新项目的时候,这也是 冰河技术 知识星球继 《手写RPC项目》 (opens new window) 、 《Seckill秒杀系统》 (opens new window) 和《分布式IM即时通讯系统》 (opens new window) 项目后,又一个支持瞬时百万流量的分布式、高并发、高性能、高可用、可扩展的中间件项目。星球其他项目与专栏,大家可移步到冰河的个人站点:https://binghe.gitcode.host (opens new window) 进行查看。
那这次又是怎么样的一个高并发、高性能项目呢?没错,这次就是大家期待已久的高性能Polaris网关项目。所以,在今后一段时间内,冰河就带着大家从零开始,一步步搭建并研发一套可用于真实生产环境,支持瞬时百万流量的企业级、分布式、高性能网关项目。
这可能是你职业生涯中最具含金量的一次点击,点击【 查看更多 (opens new window) 】了解冰河技术知识星球更多硬核技术和优质项目。
这里,会涉及到很多互联网大厂研发过程中所使用的核心技术和架构设计模式,也有冰河在互联网大厂工作过程中,自主研发和深度参与基础软件和基础中间件架构设计和研发过程中所使用到的核心技术。
在《高性能Polaris网关》项目中,你学到的不仅仅是一套支持瞬时百万流量的分布式、高并发、高性能、高可用、可扩展的中间件项目,更重要的是要学会大厂处理高并发、大流量场景的技术方案和架构设计思想,并学会如何将这些技术方案和架构设计思想落地到实际项目中。
# 一、网关项目背景调研
相信很多小伙伴学习了不少关于并发编程相关的基础知识,同时,不少小伙伴也看了冰河出版的《 深入理解高并发编程:核心原理与案例实战 (opens new window) 》与《 深入理解高并发编程:JDK核心技术 (opens new window) 》图书。当然,后续根据实际情况,可能会出版《深入理解高并发编程》系列的其他书籍。但是很多小伙伴在和冰河交流的过程中,普遍存在如下几个问题:
- 一直在小公司做CRUD,并发编程没接触过,更别提如何高并发和高性能的实际项目了。
- 公司项目没什么并发,在线人数也不多,学了很多并发编程和性能调优相关的知识不知道怎么用。
- 学了很多高并发和高性能的知识,也知道一些概念,能说出一些简单的方案,但是没实际项目经验。
- 自我感觉掌握了一些高并发、高性能编程的技术方案,但是在真正做项目时,还是不知道如何下手。
- 想做一些高并发、高性能相关的中间件项目,根本不知道怎么做,更别提架构设计和研发了。
- 简历上写了项目中使用过网关,在面试过程中,面试官一般会问网关的具体实现原理和底层架构设计,或者其他高并发和高性能相关的问题,不知道怎么回答。
- 在大厂工作多年,参与了一些系统的建设与研发,但是也没机会参与像网关这种支持高并发、大流量的高性能基础中间件的建设过程。
- 其他问题。。。
可以看到,从收集的这些高并发和高性能相关的问题来看,存在的问题是普遍性的:小公司的小伙伴受限于业务,接触不到高并发、大流量的业务场景,大厂的小伙伴由于某些原因没有被分到高并发、大流量的部门。但更多的是大体掌握了高并发和高性能的基础知识,而没有系统性落地成实际高并发、高性能项目的经验。
之前冰河带着大家一起实现了《手写RPC项目》 (opens new window) 、 《Seckill秒杀系统》 (opens new window) 和《分布式IM即时通讯系统》 (opens new window) 项目,这些项目都是支持高并发、大流量的项目。这次,为了带着大家进一步突破技术瓶颈,冰河要带着大家搭建并研发一套网关项目。
在这里,你学到的不仅仅是一套支持瞬时百万流量的分布式、高并发、高性能、高可用、可扩展的中间件项目,更重要的是要学会大厂处理高并发、大流量场景的技术方案和架构设计思想,并学会如何将这些技术方案和架构设计思想落地到实际项目中。
# 二、为何是网关项目?
说起网关项目,这是所有互联网大厂必不可少的基础中间件项目,没有哪个互联网大厂不做网关,可见网关对互联网大厂的重要性。并且网关项目是整个系统,甚至是整个集群的入口,网关承载的流量比业务系统、各个微服务承载的流量要大得多,学习网关项目,更能快速提升自身的高并发和高性能专业技能。
可以这么说,秒杀系统是高并发、大流量场景下最具代表性的业务系统,而高性能网关,则是高并发、大流量场景下最具代表性的中间件项目。冰河技术知识星球已经带着大家实现了支持瞬时高并发、大流量的《Seckill秒杀系统》 (opens new window) ,这次,再带着大家实现高并发、高性能的网关项目。如果你能彻底掌握秒杀系统和网关项目的各项技术细节,那涉及到其他的高并发项目,无论是业务系统还是中间件项目,对你来说,那还叫个事儿吗?
这次网关项目背后涉及到的高并发、高性能、高可用、可扩展的技术思路和架构模式与架构思想,你可以直接复用于任何需要支撑高并发、大流量的业务场景。
另外,一般只有互联网大厂才具备真正自研高性能网关的实际需求场景,所以,这次《高性能Polaris网关》专栏也是一次贴近大厂真实项目的机会,专栏中涉及到的架构模式和技术点都是大厂在研发中间件项目过程中真正实践和优化过的架构模式与技术点,认真学习《高性能Polaris网关》专栏,认真消化吸收专栏中的每项知识点、技术思路和架构模式,并亲自动手实践每个高并发和高性能编程的技巧和方案,相信你会有非常多的收获,而这些收获是实实在在的,也是互联网大厂经常使用的核心技术。
# 三、技术选型
在技术选型上,网关的核心部分实现不会选择Spring、SpringBoot等框架,因为我们对网关的性能要求极高,引入这些框架会影响网关的性能。对于Polaris网关来说,具体的技术选型如下所示。
- 高性能组件:Netty、Disruptor
- 异步交互:asynchttpclient
- 缓存:caffeine、guava
- 序列化:protobuf、json
- 注册中心:Etcd、Nacos、Zookeeper
可以看到,这次网关项目的技术选型非常简单。对网关的核心实现来说,我们会选择性能非常高的组件来实现。
# 四、系统大纲
为了大家能够更好的学习和理解高性能Polaris网关,我们会将整体专栏分成几部分,大致的专栏提纲如下所示。
- 第01部分:需求分析
- 第01节:为何要学习高性能网关项目
- 第02节:高性能网关项目的目标和挑战
- 第03节:网关功能点梳理
- 第04节:...
- 第02部分:架构设计
- 第01节:总体方案目标和架构设计
- 第02节:网关高性能之道
- 第03节:高性能无锁框架
- 第04节:整体领域模型设计
- 第05节...
- 第03部分:网关上下文
- 第01节:自定义封装网关上下文
- 第02节:网关上下文生命周期设计
- 第03节:网关上下文请求与解析
- 第04节:...
- 第04部分:网关过滤器
- 第01节:过滤器的定义与设计
- 第02节:顶级过滤器接口的设计
- 第03节:...
- 第05部分:注册中心
- 第01节:注册中心整体流程设计与实现
- 第02节:注册中心服务设计与实现
- 第03节:抽象注册管理的设计与实现
- 第04节:...
- 第06部分:客户端注册
- 第01节:客户端注解的定义和实现
- 第02节:注册管理器的设计与实现
- 第03节:自动装配设计与实现
- 第04节...
- 第07部分:负载均衡
- 第01节:负载均衡接口定义与抽象类实现
- 第02节:负载均衡算法的实现
- 第03节:网关主流程核心Processor设计与实现
- 第04节:...
- 第08部分:后置处理器
- 第01节:统计节点耗时设计与实现
- 第02节:埋点后置处理器设计与实现
- 第03节:...
- 第09部分:...
- 第01节:...
注意:上述大纲在实际专栏推进过程中,由于专栏需要,可能发生稍许变化。
整体课程采用视频+小册+源码+1v1问答形式,加入星球即可加入专属交流群,并且星球提供了简历优化服务,还为大家准备了1000+精美简历模板,助力小伙伴们升职加薪,让你在面试过程中更具竞争力。加入星球,猛戳如下链接获取1000+精美简历模板。
# 五、如何学习
1.加入 冰河技术 知识星球(文末有知识星球优惠券,IM即时通讯系统完结了,即将涨价),才能查看星球专栏文章,学习专栏视频课程,查看置顶消息,申请加入项目,才能看到项目代码和技术小册,如果未申请加入项目,点击项目链接,你会发现是404页面。
2.专栏的每一章会对应一个代码分支,需要切换对应的分支学习对应的视频和文章的代码分支,大家对照学习即可。
3.学习过程中最好按照章节顺序来学习,每一章前后都是比较连贯的,并且每一章的代码实现也有先后顺序,这样按照从前往后的顺序学习,最终你会实现一个完整的高性能网关。
注意:学习的过程,不是复制粘贴代码的过程,赋值粘贴代码是没有任何意义的,最好的学习方式就是自己动手实现代码,然后思考、总结。
4.代码结构:master分支是最新的全量代码,专栏中每一个章节和视频都会对应一个代码分支,切换到章节对应的代码分支后,即可根据当前章节和视频学习对应的代码实现,不然,在master分支中看到的是全量的代码。
5.对应代码实现上的问题,可以在专栏对应的源码提issuse
6.冰河会为《高性能Polaris网关》专栏录制完整的视频课程。
# 六、提交作业
在学习Polaris网关的过程中,为了有助于大家更好的消化吸收《高性能Polaris网关》的知识,冰河会为大家布置相应的作业。当然,也是为了希望在学习的过程中,留下你真实的足迹,让我们一起努力,突破自身技术瓶颈。
# 1.代码作业
- 作业空间:https://gitcode.net/BingheProjects/gateway-projects-starball (opens new window)
- 空间说明:为知识星球的用户提供项目代码提交空间,方便针对项目进行技术交流,你可以把自己实现的网关项目源码提交到空间中,按照
项目名称-用户星球编号-作者名称
的格式创建仓库,例如polaris-1-binghe
。
# 2.文字打卡
大家可以在 冰河技术 知识星球中,提交文字作业也可以进行文字打卡。主要按照如下方式进行总结:
1.今天你学了哪些章节?
2.遇到的问题是什么?
3.你是怎么解决问题的?
4.今天的收获是什么?
基于大家的打卡或者作业反馈的问题,冰河会在后续以文章和直播的形式统一解决大家学习过程中的疑问。
# 七、如何加入星球
在冰河的知识星球除了目前正在热更的高性能网关外,还有其他6个项目,像分布式IM即时通讯系统、Sekill分布式秒杀系统、手写RPC、简易商城系统等等,这些项目的需求、方案、架构、落地等均来自互联网真实业务场景,让你真正学到互联网大厂的业务与技术落地方案,并将其有效转化为自己的知识储备。
值得一提的是:冰河自研的Polaris高性能网关比某些开源网关项目性能更高,你还在等啥?不少小伙伴经过星球硬核技术和项目的历练,早已成功跳槽加薪,实现薪资翻倍,而你,还在原地踏步,抱怨大环境不好。2024年抛弃焦虑和抱怨,我们一起塌下心来沉淀硬核技术和项目,让自己的薪资更上一层楼。
目前,领取5折优惠券,就可以跟冰河一起学习《简易商城脚手架项目》、《手撸RPC专栏》和《Spring6核心技术与源码解析》、《实战高并发设计模式》、《分布式IM即时通讯系统》和《高性能Polaris网关》,从零开始介绍原理、设计架构、手撸代码。
花很少的钱就能学这么多硬核技术、中间件项目和大厂秒杀系统与分布式IM即时通讯系统,比其他培训机构不知便宜多少倍,硬核多少倍,如果是我,我会买他个十年!
加入要趁早,后续还会随着项目和加入的人数涨价,而且只会涨,不会降,先加入的小伙伴就是赚到。
另外,还有一个限时福利,邀请一个小伙伴加入,冰河就会给一笔 分享有奖 ,有些小伙伴都邀请了50+人,早就回本了!
# 八、其他方式加入星球
- 链接 :打开链接 http://m6z.cn/6aeFbs (opens new window) 加入星球。
- 回复 :在公众号 冰河技术 回复 星球 领取优惠券加入星球。
特别提醒: 苹果用户进圈或续费,请加微信 hacker_binghe 扫二维码,或者去公众号 冰河技术 回复 星球 扫二维码加入星球。
好了,今天就到这儿吧,我是冰河,我们下期见~~