Apache ShenYu分布式网关安装&部署&使用文档

前言

本文主要介绍分布式网关Apache ShenYu网关如何安装部署及使用,从0到1,图文并茂的保姆级教程,包括ShenYu网关源码下载,打包部署,客户端接入,请求路由,负载均衡等。

一、Apache ShenYu网关介绍

网关作为微服务架构中统一的流量入口,它扮演着多种关键角色,可以做请求路由和负载均衡,统一安全认证,服务注册与分发,灰度发布,请求熔断、限流、错误重试,让业务服务只需关心自己的业务逻辑,将通用的请求过程统一在网关层进行处理。

  • 代理:支持Apache Dubbo,Spring Cloud,gRPC,Motan,SOFA,TARS,WebSocket,MQTT
  • 安全性:签名,OAuth 2.0,JSON Web Token,WAF插件
  • API治理:请求、响应、参数映射、Hystrix、RateLimiter插件
  • 可观测性:跟踪、指标、日志记录插件
  • 仪表板:动态流量控制,用户菜单权限的可视化后端
  • 扩展:插件热插拔,动态加载
  • 集群:NGINX、Docker、Kubernetes
  • 语言:提供.NET,Python,Go,Java客户端用于API注册

二、ShenYu网关安装部署教程

环境准备

  • 本地正确安装JDK1.8+
  • 本地正确安装Git
  • 本地正确安装Maven
  • 本地正确安装MySQL

1. ShenYu网关源码下载

ShenYu安装方式有两种

  • 下载官方编译后的包部署
  • 下载源码自己打包编译部署

下载官方的包比较简单,但是因为网关一般为业务网关,要整合我们自己的业务的,如统一认证,限流,鉴权,请求重定向等,故推荐使用下载源码部署,可根据自己的需求自行编写代码。

使用git下载源码,并使用IDEA打开。

git clone https://github.com/apache/shenyu.git

打开后目录如下

image.png

ShenYu本质上还是一个Java语言编写的SpringBoot项目。

2. 执行sql创建数据库

我们采用mysql数据库存储网关的数据,需执行db/init/mysql/schema.sql脚本,会创建一个shenyu的数据库。

修改shenyu-admin模块下的application.yml文件,将spring.profiles.active改为mysql

image.png

然后修改application-mysql.yml文件,将数据库配置修改为自己的数据库信息。

image.png

3. 启动ShenyuAdminBootstrap,访问ShenyuAdmin

启动ShenyuAdminBootstrap的main()方法即可运行起ShenyuAdmin项目

image.png

访问 http://localhost:9095 , 默认用户名和密码分别为: admin123456,登录后请修改密码。

image.png

登录成功后进入如下界面。

image.png

shenyu的使用主要由插件构成,可以在BasicConfig->plugin中启用或修改插件配置,顺序等控制插件的运行。

4.启动ShenyuBootStrap

启动ShenyuBootstrapApplication中的main()方法。

image.png

启动后打印如下日志,该项目运行在9195端口,是一个纯后端的项目,是真正执行插件逻辑的网关项目,内部通过pom.xml文件引用了很多shenyu-spring-boot-starter下的插件,通过springbootstarter的自动装配引用插件。

image.png

至此,Shenyu的两个项目启动完毕,接下来将我们的项目接入即可。

二、WEB项目接入ShenYu网关

1. Http服务注册上报、负载均衡、错误重试:

创建一个自己的web项目,在pom.xml中添加依赖项:

<!-- shenyu网关上传服务状态 -->
<dependency>
    <groupId>org.apache.shenyu</groupId>
    <artifactId>shenyu-spring-boot-starter-client-springmvc</artifactId>
    <version>2.6.1</version>
</dependency>

在application.yml中配置以下内容,密码修改为自己网关admin密码。

shenyu:
  register:
    registerType: http
    serverLists: http://localhost:9095
    props:
      username: admin
      password: your_password
  client:
    http:
      props:
        contextPath: /api/${spring.application.name}
        appName: ${spring.application.name}
        port: ${server.port}

在任一controller类上添加注解:

@ShenyuSpringMvcClient("/")

服务启动后即会上报当前服务ip:端口以及请求路径到shenyu-admin中。在插件列表->Proxy->Divide插件中即可看到服务情况。

image.png

服务启动会自动上报自动的ip:port到/api/demo选择器中,若启动多个服务会进行负载均衡,服务下线也会自动下线。

image.png

并可配置负载均衡策略以及错误重试策略。

image.png

2. 服务请求路径重写:

在插件列表中找到HttpProcess->Rewrite插件,添加一个Selector如下,uri -> startWith ->/api

image.png

在该选择器下添加规则,可在regex中配置要替换的内容,支持正则,在replace中配置替换后的内容,用户请求的url匹配到此规则时将会被重写到新的路径。

regex: ^/[^/]+/[^/]+/(.+)$ , replace: /$1

结果为将请求的前两层路径/替换为空,如/api/demo/getList替换为/getList。

image.png

通过postman调用请求接口

http://127.0.0.1:9195/api/demo/testThread/testOkhttp
将会重定向为->
http://127.0.0.1:{demo真实端口}/testThread/testOkhttp

image.png

ShenyuBootstrap项目打印日志:

image.png

至此,网关的自动注册,以及通过请求服务名自动重定向到对应的端口并实现负载均衡的功能即实现完毕。

三、打包部署至服务器中

我们进到shenyu-dist目录下,有shenyu-admin-dist和shenyu-bootstrap-dist,这两个包里包含了打包所需的所有文件。

image.png

1.打开命令行工具执行命令:

# 进入到shenyu-dist目录下
cd shenyu-dist

# 打包编译,指定激活profile为release
mvn clean -U package -P release

执行后若提示部分包不存在,可能是你下载的源码的项目版本为SNAPSHOT,相关依赖在maven中央仓库中不存在,需将整个项目maven install一下,将整个项目的依赖包安装到本地,这个过程时间比较长,需耐心等待。

image.png

执行后会生成如下两个文件

image.png

解压后目录如下

image.png

2.上传压缩包,运行脚本

我们看到解压后的目录类似apache-tomcat的目录,启动的脚本都在bin目录下,Windows下运行start.bat脚本,mac/linux下运行start.sh脚本,即可成功启动项目。

image.png

3.自定义修改源码

我们有时候会有一些定制化的需求,根据自己的需求自行修改源码。修改后对修改的那个模块执行mvn install,再执行上面的打包命令即可。

4.自定义插件

ShenYu主要由各种各样的插件组成实现复杂的功能,插件的形式类似过滤器,按照顺序依次执行业务逻辑,过程中可修改请求参数和返回参数,或统一认证、请求次数调用等,添加自己的业务逻辑。

具体实现方式官网有详细介绍,有需求者可自行研究。

四、总结

本篇文章从0到1帮助读者了解Shenyu网关,包含安装教程,使用教程,希望对读者有所帮助,留个赞再走,谢谢老板😁

作者:龙猫帝
原文链接:https://blog.csdn.net/chang_mao/article/details/136190617?spm=1001.2014.3001.5502
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
shenyu网关是一款开源的API网关软件,它可以帮助开发者实现对接口的统一管理和流量控制。shenyu网关提供了多种功能,包括请求转发、请求过滤、流量限制、负载均衡等,帮助用户实现高可用和高稳定性的系统架构。 shenyu网关基于Java开发,使用简单方便,支持多种开源框架和中间件,如Spring Boot、Dubbo、Motan等。通过使用shenyu网关,开发者可以快速搭建起一个完善的微服务架构,可以轻松地管理和监控各个微服务之间的通信和流量。 另外,shenyu网关还提供了可视化的管理界面,方便用户进行参数配置、资源管理、性能监控等操作。用户可以通过该界面对各个服务进行细粒度的管理,实现功能的灵活配置和动态调整。 码云是中国最大的代码托管平台,类似于国外的GitHub。用户可以通过码云托管自己的代码仓库,并利用这个平台进行团队协作和项目管理。码云提供了Git版本控制、代码托管、代码审查等功能,支持多种开发语言和开发工具。 与GitHub不同的是,码云在国内具有更好的访问速度和稳定性,同时还提供了国内常用的Git代码托管服务,支持国内的开发者更方便地使用和访问。用户可以在码云上创建自己的项目仓库,与其他开发者进行交流学习,并共同进行开发和维护。 综上所述,shenyu网关和码云都是开发者常用的工具。shenyu网关可以帮助开发者实现API网关的功能,提供统一的接口管理和流量控制;码云则是代码托管平台,提供代码的版本控制和团队协作功能。两者的结合可以帮助开发者更好地进行微服务架构的开发和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值