大家好,我是冰河~~
没错,冰河手写的高性能网关已经初具规模,每个模块也经过了一定量的高并发压测,这也是 冰河技术 知识星球继《手写RPC项目》、 《Seckill秒杀系统》 和《分布式IM即时通讯系统》项目后,又一个支持瞬时百万流量的分布式、高并发、高性能、高可用、可扩展的中间件项目正式上线。
后续冰河的项目所使用的网关会陆续迁移到自己手写的这个高性能网关上来,整体项目结构如下图所示。
目前,高性能网关项目总体包含15+个顶级模块,每个模块下面根据实际需求会扩展对应的子模块,整个网关会包含150+个模块,真正是企业级的高性能网关项目。
星球其他项目与专栏,大家可移步到冰河的个人站点:https://binghe.gitcode.host 进行查看。
这可能是你职业生涯中最具含金量的一次点击,点击【查看更多】了解冰河技术知识星球更多硬核技术和优质项目。
在《高性能Polaris网关》项目中,会涉及到很多互联网大厂研发过程中所使用的核心技术和架构设计模式,也有冰河在互联网大厂工作过程中,自主研发和深度参与基础软件和基础中间件架构设计和研发过程中所使用到的核心技术。
这里,你学到的不仅仅是一套支持瞬时百万流量的分布式、高并发、高性能、高可用、可扩展的中间件项目,更重要的是要学会大厂处理高并发、大流量场景的技术方案和架构设计思想,并学会如何将这些技术方案和架构设计思想落地到实际项目中。
再说一点:秒杀系统是高并发领域最具代表性的业务系统,高性能网关是高并发领域最具代表性的中间件项目,而冰河的知识星球两个项目都已经存在,都是从零开始带着大家一步步手写的高并发与高性能项目,再加上冰河发布到星球的《深入理解高并发编程》和《实战高并发设计模式》,何愁拿不下高并发与高性能编程呢?
一、网关项目背景
相信很多小伙伴学习了不少关于并发编程相关的基础知识,同时,不少小伙伴也看了冰河出版的《深入理解高并发编程:核心原理与案例实战》与《深入理解高并发编程:JDK核心技术》图书。当然,后续根据实际情况,可能会出版《深入理解高并发编程》系列的其他书籍。但是很多小伙伴在和冰河交流的过程中,普遍存在如下几个问题:
- 一直在小公司做CRUD,并发编程没接触过,更别提如何高并发和高性能的实际项目了。
- 公司项目没什么并发,在线人数也不多,学了很多并发编程和性能调优相关的知识不知道怎么用。
- 学了很多高并发和高性能的知识,也知道一些概念,能说出一些简单的方案,但是没实际项目经验。
- 自我感觉掌握了一些高并发、高性能编程的技术方案,但是在真正做项目时,还是不知道如何下手。
- 想做一些高并发、高性能相关的中间件项目,根本不知道怎么做,更别提架构设计和研发了。
- 简历上写了项目中使用过网关,在面试过程中,面试官一般会问网关的具体实现原理和底层架构设计,或者其他高并发和高性能相关的问题,不知道怎么回答。
- 在大厂工作多年,参与了一些系统的建设与研发,但是也没机会参与像网关这种支持高并发、大流量的高性能基础中间件的建设过程。
- 其他问题。。。
可以看到,从收集的这些高并发和高性能相关的问题来看,存在的问题是普遍性的:小公司的小伙伴受限于业务,接触不到高并发、大流量的业务场景,大厂的小伙伴由于某些原因没有被分到高并发、大流量的部门。但更多的是大体掌握了高并发和高性能的基础知识,而没有系统性落地成实际高并发、高性能项目的经验。
之前冰河带着大家一起实现了、《手写高性能RPC项目》、 《Seckill秒杀系统》 和《分布式IM即时通讯系统》项目,这些项目都是支持高并发、大流量的项目。这次,为了带着大家进一步突破技术瓶颈,冰河要带着大家搭建并研发一套网关项目。
在这里,你学到的不仅仅是一套支持瞬时百万流量的分布式、高并发、高性能、高可用、可扩展的中间件项目,更重要的是要学会大厂处理高并发、大流量场景的技术方案和架构设计思想,并学会如何将这些技术方案和架构设计思想落地到实际项目中。
二、为何是网关项目?
说起网关项目,这是所有互联网大厂必不可少的基础中间件项目,没有哪个互联网大厂不做网关,可见网关对互联网大厂的重要性。并且网关项目是整个系统,甚至是整个集群的入口,网关承载的流量比业务系统、各个微服务承载的流量要大得多,学习网关项目,更能快速提升自身的高并发和高性能专业技能。
可以这么说,秒杀系统是高并发、大流量场景下最具代表性的业务系统,而高性能网关,则是高并发、大流量场景下最具代表性的中间件项目。冰河技术知识星球已经带着大家实现了支持瞬时高并发、大流量的《Seckill秒杀系统》,这次,再带着大家实现高并发、高性能的网关项目。如果你能彻底掌握秒杀系统和网关项目的各项技术细节,那涉及到其他的高并发项目,无论是业务系统还是中间件项目,对你来说,那还叫个事儿吗?
这次网关项目背后涉及到的高并发、高性能、高可用、可扩展的技术思路和架构模式与架构思想,你可以直接复用于任何需要支撑高并发、大流量的业务场景。
另外,一般只有互联网大厂才具备真正自研高性能网关的实际需求场景,所以,这次《高性能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节:…
注意:上述大纲在实际专栏推进过程中,由于专栏需要,可能发生稍许变化。
好了,今天就到这儿吧,我是冰河,我们下期见~~