0

分享一个基于Abp Vnext开发的API网关项目 - 喻平勇

 2 years ago
source link: https://www.cnblogs.com/yupingyong/p/16505300.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

分享一个基于Abp Vnext开发的API网关项目

  这个项目起源于去年公司相要尝试用微服务构建项目,在网关的技术选型中,我们原本确认了ApiSix 网关,如果需要写网关插件需要基于Lua脚本去写,我和另外一个同事当时基于这个写了一个简单的插件,但是开发测试以及发布都很麻烦,而且使用Lua脚本作为插件的开发语言本身也不是我们强项。

      后来通过其他渠道了解到了微软出了一个反向代理组件 Yarp,而且也有人基于它去做过一些项目,于是我就决定自己基于它来构建一个简单的Api网关,能够满足基础需求就好.

      项目技术使用:

      开发平台: .Net 6 + MySql

      开发框架:Abp Vnext 5.3.2

      反向代理组件: Yarp (官方文档:https://microsoft.github.io/reverse-proxy/index.html)

      后台管理:Blazor (Bootstrap Blazor UI: https://www.blazor.zone)

   其它组件:Dto映射(Mapster)、日志组件(Serilog)

     开源地址(GitHub): https://github.com/yupingyong/kite.gateway

     注: 这篇文章会很少展示代码实现本身

   一. 项目结构图(以及层依赖说明):

    

481915-20220722111825388-1414616303.png

  Kite.Gateway.Admin : 后台管理项目,实现对网关服务节点的管理以及网关配置数据的管理,支持像多个节点同步刷新配置数据

  Kite.Gateway.Hosting : 网关启动项目,定义了网关过滤器以及中间件

  Kite.Gateway.Application : 应用服务层,组合业务逻辑层业务,提交数据库保存

  Kite.Gateway.Application.Contracts : 应用服务公共合约层,定义应用服务层接口,DTO对象

  Kite.Gateway.Domain: 领域服务层,业务逻辑处理核心层

  Kite.Gateway.Domain.Shared : 领域服务共享层,定义公共的枚举,通用工具类等

  Kite.Gateway.EntityFrameworkCore : 仓储实现层,依赖于领域服务,基于EF Core实现

  二.网关执行流程介绍(含图):

  

481915-20220722112234596-1075910250.png

       网关中间件说明,上一个版本的设计是利用Abp自带插件机制去实现,但是这一版我去掉了这种设计模式.为什么取消插件设计模式,就是感觉这样网关会导致具体业务关联太深,新版的我采用网关根据配置的中间件信息去向业务服务发起Http请求或者Grpc(暂未实现)的方式实现,这样减少业务对网关系统的依赖,以及网关对具体业务的深层依赖。

       三.后台管理介绍(会出现比较多的效果图):

  

481915-20220722114416235-2064069043.png

       1.账号管理: 登录后台管理的账号管理(如果全新安装会可以使用 admin/admin 进行登录)

  481915-20220722115438085-505174622.png

       2.节点管理: 网关部署节点,后台管理可以向节点推送配置动态刷新,可及时生效

  481915-20220722120204098-1454243621.png

 

481915-20220722120250947-1057873008.png

  

       3.服务治理配置: Consul信息的配置,目前支持Consul做为服务治理中间件

  

481915-20220722120400173-1251756730.png

       4.身份认证配置: Jwt校验配置,支持自定义密钥以及SSL证书进行token校验

  

481915-20220722120423515-821529643.png

       5.白名单配置: 网关过滤白名单,当请求地址出现在白名单中,则不会进行token校验

481915-20220722120531299-1826544209.png

       6.路由管理: Yarp反向代理组件信息配置,支持配置路由信息、集群信息、健康检查信息、负载均衡策略信息

  481915-20220722120636459-1062830369.png

  7.中间件管理: 配置中间件信息

  481915-20220722120720823-680643096.png

 注:更多功能,可以在下载源码后本地跑起来实际测试了.

下一个项目我将打算构建一个发布平台...从设计开始到开发完成使用,都在博客园发布文章


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK