# 《API网关》,关于面试中的技能、简历、问题汇总

作者:小傅哥
博客:https://bugstack.cn (opens new window)
课程:https://t.zsxq.com/0d7K7hJ0i (opens new window)

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

此部分主要用于向读者提供星球项目之一的 API 网关如何体现到简历中,包括;专业技能、项目经验。

# 一、项目介绍

面试官您好,这是我所设计和实现的一套统一《API网关》系统,该系统的核心目的是用于解决公司中所有各类服务的统一出口问题。将非业务功能的共性服务进行统一封装使用,这包括;鉴权、熔断、限流、风控、切量等。通过API网关可以将内部的 RPC 服务以及可扩展的 MQ、SQL、任务等资源,通过 HTTP 对外提供调用,让APP、WEB、H5、小程序等有一个统一标准的接入方式,降低公司在此同类功能模块的重复建设问题。

我作为项目的架构师和核心开发人员,在项目架构设计上,将工程拆分为Netty实现的核心通信模块、通信封装模块、通信引擎模块,以及注册中心、上报服务的SDK组件和后台管理系统。并通过 Nginx 动态负载驱动算力的集群使用,可以支持横向的扩展,满足高并发的接入。好的,面试者就是我做的API网关核心实现的介绍。

# 二、简历模板

  • 项目名称:API 网关
  • 系统架构:微服务架构设计、SpringBoot Starter 组件设计、DDD 领域驱动设计
  • 核心技术:SpringBoot、SpringBoot Starter、Netty、NGINX、SHIRO、JWT、Redis、负载均衡、RateLimiter
  • 项目描述:API网关系统用于统一管理RPC(Dubbo)通信接口,通过协议解析和泛化调用统一对外提供HTTP服务的系统。这套系统是微服务架构设计,分为核心通信、启动引擎、注册中心、管理平台以及上报接口服务。这套API网关也是随着对公司传统庞大的单体应用(All in one)拆分为众多的微服务(Microservice)以后,所引入的统一通信管理系统。用于运行在外部HTTP请求与内部RPC服务之间的一个流量入口,实现对外部请求的协议转换、参数校验、鉴权、切量、熔断、限流、监控、风控等各类共性的通用服务。
  • 核心职责
    • 构建 API 网关整体核心架构分层设计,拆分出核心通信、服务助手、启动引擎、注册中心、上报服务、管理后台,这样6个工程模块。便于后续的高效迭代和维护工作。
    • 分治处理会话流程,将复杂的会话流程划分为多个阶段,以提高处理效率;将连接(RPC\HTTP\其他)抽象为数据源,为数据的读取和写入提供支持;实现HTTP请求参数解析,确保请求参数的正确处理;引入执行器封装服务调用,提供对各种服务的调用支持;集成权限认证组件(Shiro+Jwt),确保请求的合法性和安全性;实现网关会话鉴权处理,为会话的安全管理提供支持;实现网络通信配置提取,将网络通信的配置信息抽象为可配置的模块,提高配置的灵活性。
    • 设计并实现服务发现组件搭建和注册网关连接、服务配置拉取和组件使用验证、核心通信组件管理和处理服务映射、容器关闭监听和异常管理、订阅服务注册消息驱动网关映射、网关Nginx负载模型配置、动态刷新网关Nginx负载均衡配置和实现网关算力节点动态负载功能。

  1. 校招生,项目方式:网关项目是我的一个技术学习实战项目,该项目以解决各类应用服务对外提供HTTP的标准和实现,对服务进行统一的管理。如 RPC(Dubbo) 通过 Netty 接收 HTTP 请求,进行泛化调用,对外提供服务。也可以扩展 MQ、Redis、MySQL、Job或各类资源位 HTTP 服务。—— 你这样介绍来讲下项目的目标和行动,会符合你目前阶段。
  2. 校招生,职责描述:首先,经过技术调研和大厂中同类产品的学习,分析设计了 API 网关的服务框架,包括;网关算力、注册中心、服务上报、动态负载等核心模块。” 其他的描述也站在个人的视角下进行描述。

多从个人视角来描述,API网关有很多的技术点。在学习时候认真总结,编写简历从个人视角来编写会非常好。

# 三、面试问题