初识网关

一、什么是微服务

  • 微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。


二、什么是API Gateway

  • 一般在后台N个服务和UI之间一般会有一个代理或者叫作APIGateway,作用:
    • 提供统一服务入口,让微服务对前台透明。
    • 聚合后台的服务,节省流量,提升性能。
    • 提供安全,过滤,流控等API管理功能。
  • API Gateway可以有很多广义的实现办法,可以是一个软硬一体的盒子,也可以是一个简单的MVC框架。他们最重要的作用是为前台(通常是移动应用)提供后台服务的聚合,提供一个统一的服务出口,解除他们之间的耦合。

三、几款API Gateway的功能对比


四、Go语言开发的API Gateway

GoKu

  • 悟空API网关,是国内首个开源go语言API网关,支持Docker部署、私有云部署。支持OpenAPI与微服务管理,实现API转发、请求参数转换、数据校验等功能,提供图形化界面管理,能够快速管理多个API网关,提高API业务安全性。
  • 使用教程:help.eolinker.com/agw/?target…
  • 特性:
    • 免费且开源:GoKu API Gateway秉承开源精神,是国内第一个企业开源的API接口网关,为广大的开发、运维以及管理人员提供专业的产品。
    • 多种鉴权方式:支持Basic 认证、API Key授权、IP认证、无认证等方式。
    • 支持Open API:不同账户拥有独立的访问密钥。
    • 权限管理:可针对不同策略组设置流量控制策略,包括访问QPS、访问总次数、访问IP、访问时间段等。
    • 请求转发:默认支持http rest路由。
    • IP黑白名单:支持用户的IP白名单、黑名单机制。
    • 数据整形:参数的转换与绑定,支持formdata、raw数据、json。
    • 超时设置:配置访问超时时间,网关控制超时后立即返回,防止系统雪崩。
    • 监控告警:清晰的监控界面,方便API网关管理员了解系统主要运行情况。
    • 配置网关:支持 UI界面 修改网关配置,支持 配置文件 修改网关配置,方便网关管理员对多个业务API网关进行管理。
    • 兼容eoLinker-AMS,可与国内最大的接口管理平台打通。

Gateway

  • 能够规划更友好的URL给调用者。聚合多个API的结果返回给API调用者,利于移动端,后端可以实现原子接口。保护后端API服务不会被突发异常流量压垮。提供熔断机制,使得后端API Server具备自我恢复能力。借助消息路由能力,实现灰度发布,AB测试。
  • 特性:
    • 流量控制
    • 熔断
    • 负载均衡
    • 服务发现
    • 插件机制
    • 路由
    • API 聚合
    • API 参数校验
    • API 访问控制(黑白名单)
    • API 默认返回值
    • API 定制返回值
    • 后端server的健康检查
    • 使用 fasthttp
    • 开放管理API

caddy

  • Caddy和我们常用的Nginx、Apache等Web服务器相比,最大的特点就是部署简单,它拥有基本的apache或者nginx有的web server模块,同时还有一些很有特色的功能,比如: HTTP/2、Automatic HTTPS、Multi-core、Websockets、Markdown、IPv6等等。caddy用起来简单, 能让网站自动支持 HTTPS, 并且其丰富的插件系统提供了文件管理、文件上传、基于 MarkDown 的博客系统等等开箱即用的扩展功能。

  • 特性:

    • HTTP/2 全自动支持HTTP/2协议,无需任何配置。
    • Auto HTTPS Caddy 使用 Let’s Encrypt 让你的站点全自动变成全站HTTPS,无需任何配置。当然你想使用自己的证书也是可以的。
    • Multi-core 因为caddy是golang写的,所以当然可以合理使用多核啦。
    • IPv6 完全支持IPv6环境.
    • WebSockets Caddy 对WebSockets有很好的支持.
    • Markdown 自动把md转成 HTML ,当然,我后续要给大家介绍更强大的hugo来干这个事情.
    • Logging Caddy 对log格式的定义很容易,更好的满足你日志收集的需求。
    • Easy Deployment 得益于go的特性,caddy只是一个小小的二进制文件,没有依赖,很好部署。
  • 那么在什么场景下适合尝试使用caddy呢,我推荐从以下场景开始:

    • 作为静态页面的webserver
    • 转发 fastcgi 请求到 php-fpm 服务,比如替换apache或nginx作为wordpress的server
    • 反向代理,管理多个站点
    • 微服务的 API gateway。
    • 有些在nginx上难以开发的需求,为caddy写插件太方便了。

五、一些其他框架

Kong

  • Kong是一个云原生、高效、可扩展地分布式 API 网关。Kong 是目前市场上相对较为成熟的开源 API 网关产品,无论是性能,扩展性,还是功能特性,都决定了它是一款优秀的产品,
  • Features:
    • 云原生: 与平台无关,Kong可以从裸机运行到Kubernetes
    • 动态路由:Kong 的背后是 OpenResty+Lua,所以从 OpenResty 继承了动态路由的特性
    • 熔断
    • 健康检查
    • 日志: 可以记录通过 Kong 的 HTTP,TCP,UDP 请求和响应。
    • 鉴权: 权限控制,IP 黑白名单,同样是 OpenResty 的特性
    • SSL: Setup a Specific SSL Certificate for anunderlying service or API.
    • 监控: Kong 提供了实时监控插件
    • 认证: 如数支持 HMAC, JWT, Basic, OAuth2.0 等常用协议
    • 限流
    • REST API: 通过 Rest API 进行配置管理,从繁琐的配置文件中解放
    • 可用性: 天然支持分布式
    • 高性能: 背靠非阻塞通信的 nginx,性能自不用说
    • 插件机制: 提供众多开箱即用的插件,且有易于扩展的自定义插件接口,用户可以使用 Lua 自行开发插件

Gin

  • Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。自身的net/http足够简单,性能也非常不错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值