美文网首页程序员Vert.x
Agate基于Vert.x的API-Gateway

Agate基于Vert.x的API-Gateway

作者: dinstone | 来源:发表于2020-05-23 17:12 被阅读0次

    背景

            关注Vert.x已有4年,在多个项目使用中见证了威力,也踩了很多坑,但对它的喜爱有增无减。一直想基于Vert.x开发一个类似Nginx的API网关,虽然zuul、spring cloud gateway已经很优秀,但是手撕API网关(重复造轮子)的心一直没有死。

            在新冠疫情爆发期间,花了2周时间写了一个基本可用的API网关Agate,借此正好填补空虚失落的焦虑和抚慰多愁善感的心灵。下面介绍一下其架构和实现,更多可以参加源码工程:Agate

    架构

    运行架构

    Agate由2部分组成:

    Agate-Manager:

        管理API的定义、配置信息,将这些信息持久化到数据库中,同时将要发布的API配置推送Consul中。

        为了快速原型,当前使用spring mvc + jsp页面来实现的UI页面。

    Agate-Gateway:

        监听Consul中API配置的变更,执行API的部署和启停,同时接受API客户端的请求,并根据API定义做路由处理,期间会执行日志、限流、熔断、认证、缓存等增强处理。

        Gateway使用了Vert.x框架,全异步流程处理,抽象了BeforeHandler、RouteHandler、AfterHandler、FailureHandler处理过程。

    Gateway组件图

    系统依赖

    Vert.x 4.0 和 Consul 1.7

    特性列表

    BlackWhiteList    未实现

    Logging    已实现

    RateLimit    已实现

    Tracing    已实现

    Metrics    已实现

    Security    未实现

    CircuitBreaker    未实现

    GrayDeployment    未实现

    Routing    已实现

    实现效果

    登录Manager 管理APP 管理API 链路追踪Zipkin 链路追踪Zipkin

    结语

            限于时间和水平有限,很多地方实现的不是太好,后续还要持续完善,也希望有志之士能参与建设。对于正在学习网络编程的同学来说,Vert.x是个不可多得好工具;对于研究高性能网关实现的同学来说,Agate是个不(自)可(吹)多(自)得(擂)的参考。

    相关文章

      网友评论

        本文标题:Agate基于Vert.x的API-Gateway

        本文链接:https://www.haomeiwen.com/subject/dhhlahtx.html