当前位置: 首页 > news >正文

Apache Shenyu 本地启动及快速入门

Apache Shenyu 本地启动及快速入门

1. 环境准备

本文中使用 MySQL 来作为 ShenYu 数据库,使用 Docker Compose 部署 MySQL。

或者使用本地 MySQL 数据库也可,使用本地数据库时跳转到 1.3 配置数据库表。

1.1 docker-compose.yml

services:db:image: mysqlcontainer_name: mysqlrestart: alwayscommand: --default-authentication-plugin=caching_sha2_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M;ports:- 3306:3306volumes:- ./data:/var/lib/mysql- ./my.cnf:/etc/my.cnf:ro- ./log:/var/log/mysql- ./initdb.d:/docker-entrypoint-initdb.denvironment:MYSQL_ROOT_PASSWORD: toor

1.2 MySQL 数据库配置

[mysqld]skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysqlpid-file=/var/run/mysqld/mysqld.pidtmpdir=/tmp

1.3 SQL 文件配置:

SQL 数据文件下载地址:https://github.com/apache/shenyu/blob/master/db/init/mysql/schema.sql

将数据文件在同级目录的 init.d 目录下并改为 init.sql.

Tips: 或者不自动执行 sql 脚本,启动之后手动执行 sql 文件。

2. 工具和代码下载

本文中使用 IDEA,从 Github clone 仓库并使用 IDEA 打开。

Github:https://github.com/apache/shenyu

3. 编译及启动

3.1 安装编译

执行如下命令将 shenyu 安装到本地的 mvn 仓库,后面启动 example 时需要用到。

mvn clean install '-Dmaven.javadoc.skip=true' '-B' '-Drat.skip=true' '-Djacoco.skip=true' '-DskipITs' '-DskipTests'

3.2 配置修改

  1. 将 shenyu-admin/src/resouce/application.yml#24 中的激活配置从 h2 改为 mysql
  2. 将 shenyu-admin/src/resouce/application-mysql.yml#25 中的 MySQL 密码改为 1.1 中的 toor 或者你自己的数据库密码。

3.3 启动

  1. 启动 Admin 管理端(作为网关控制面) org.apache.shenyu.admin.ShenyuAdminBootstrap
  2. 启动 ShenYu 网关(作为网关数据面)org.apache.shenyu.bootstrap.ShenyuBootstrapApplication

3.4 访问 Admin 页面

浏览器访问 http://127.0.0.1:9095,默认的用户名密码为:admin/123456。

如果一切顺利,你将会看到 shenyu 网关的 Admin 页面。

4. Example 测试

接下来使用 shenyu-examples/shenyu-examples-http 作为测试服务,使用 IDEA 单独打开或者为其设置工作目录。

Tips: 务必完成 3.1 的编译动作!

完成 example 启动之后,观察各个服务控制台,会看到日志输出。

然后在 Admin 控制台可以看到已经注册的的 http 路由:

启动之前:
在这里插入图片描述

启动之后:

在这里插入图片描述

5. 流量处理

首先需要明确下面一些细节问题:

  1. Shenyu 网关流量通过插件和选择器以及路由规则来控制;
  2. 网关流量入口在:org.apache.shenyu.web.handler.ShenyuWebHandler.DefaultShenyuPluginChain#execute
  3. 插件执行链路在,完成路由规则的筛选并交由插件实现执行:org.apache.shenyu.plugin.base.AbstractShenyuPlugin#execute

通过断点即可看到执行的插件链以及插件数据信息等

参考文档

  1. https://shenyu.apache.org/zh/docs/deployment/deployment-before
  2. https://shenyu.apache.org/zh/docs/deployment/deployment-local
  3. https://shenyu.apache.org/zh/blog/Plugin-SourceCode-Analysis-Divide-Plugin/
  4. https://github.com/deigmata-paideias/deigmata-paideias/blob/main/docker-compose-tmpl/mysql
http://www.xdnf.cn/news/1237159.html

相关文章:

  • Flutter开发 dart异步
  • 动态置信度调优实战:YOLOv11多目标追踪精度跃迁方案(附完整代码)
  • 基于springboot的在线考试系统/考试信息管理平台
  • 生成式人工智能展望报告-欧盟-04-社会影响与挑战
  • trace-cmd记录线程被中断打断的时间
  • Java 实现poi方式读取word文件内容
  • 编译旧版本的electron内核
  • VisualStudio的一些开发经验
  • 能表示旋转的矩阵是一个流形吗?
  • C++与Go的匿名函数编程区别对比
  • 吴恩达【prompt提示词工程】学习笔记
  • 曼哈顿距离与切比雪夫距离
  • 北京-4年功能测试2年空窗-报培训班学测开-第六十六天
  • Digit Queries
  • Arrays.asList() add方法报错java.lang.UnsupportedOperationException
  • 常见的深度学习模块/操作中的维度约定(系统性总结)
  • 接口测试用例的编写
  • Java 大视界 -- Java 大数据机器学习模型在金融市场情绪分析与投资决策辅助中的应用(379)
  • WSUS服务器数据库维护与性能优化技术白皮书
  • Nvidia Orin + RealSense D435i 与3D地图实现导航
  • ulimit参数使用详细总结
  • 第九章:了解特殊场景下的redis
  • 推荐系统学习笔记(八)其他召回通道
  • 机器人抓取流程介绍与实现——机器人抓取系统基础系列(七)
  • 《人形机器人的觉醒:技术革命与碳基未来》——类人关节设计:人工肌肉研发进展及一款超生物肌肉Hypermusclet的设计与制造
  • 最小半径覆盖问题【C++解法+二分+扫描线】
  • 从零开始学Express,理解服务器,路由于中间件
  • 批发订货系统:私有化部署与源代码支持越来越受市场追捧
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-56,(知识点:电源模块,DCDC电源,LDO电源,原理及其特点)
  • CVE-2025-5947 漏洞场景剖析