Apache ShenYu 网关源码环境搭建、初体验

源码环境搭建

获取源码

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

源码编译、运行环境

  • JDK 1.8+
  • Maven 3.2.x
  • mysql

maven编译

mvn clean package install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true -Dcheckstyle.skip=true

shenyu 网关简介(来源于shenyu官网介绍)

概述
它的前身是 Dromara 开源组织的一个开源项目 Soul,最近正式加入了 apache基金孵化器,改名为 ShenYu。

这是一个异步的,高性能的,跨语言的,响应式的API网关。我希望能够有一样东西像灵魂一样,保护您的微服务。参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Shenyu由此诞生!

特性

  • 支持各种语言(http协议),支持 dubbo,springcloud协议。
  • 插件化设计思想,插件热插拔,易扩展。
  • 灵活的流量筛选,能满足各种流量控制。
  • 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
  • 流量配置动态化,性能极高,网关消耗在 1~2ms。
  • 支持集群部署,支持 A/B Test, 蓝绿发布。

架构图

图片来源于官方

开发工具里运行调试

项目模块概述:

  • shenyu-admin: 网关后台管理服务,主要功能为管理和配置业务网关配置.
  • shenyu-bootstrap: 用于启动shenyu网关项目(可集群部署)
  • shenyu-client : 用户可以使用 Spring MVC,Dubbo,Spring Cloud 快速访问
  • shenyu-common : 框架的通用类
  • shenyu-dist : 构建项目
  • shenyu-metrics : prometheus(普罗米修斯)实现的 metrics
  • shenyu-plugin : shenyu 支持的插件集合
  • shenyu-spi : 定义 shenyul spi
  • shenyu-spring-boot-starter : 支持 spring boot starter
  • shenyu-sync-data-center : 提供 ZooKeeper,HTTP,WebSocket,Nacos 的方式同步数据
  • shenyu-examples : RPC 示例项目
  • shenyu-web : 包括插件、请求路由和转发等的核心处理包

快速体验

shenyu-admin

shenyu-admin 是网关的后台管理系统,我们可以先将它的服务启动起来。步骤:

  • 配置说明:网关后台管理的是业务相关的配置,并持久化到数据库中的,启动前要将application.yml中的数据库配置该为自己的配置。不需要手动建库建表,启动时系统会检测配置的数据库中是否存在相关库和表,如果不存在会根据sql脚本创建,sql脚本在项目中:resources/META-INF 下。
  • 项目是基于spring boot 框架的,启动方式就不必多言了,想必大家都知道。

    启动shenyu-admin时异常:

    Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ls.DocumentLS
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
    ……

    我idea默认配置的jdk11, jdk11找不到该类。切换为jdk1.8.127后,解决该启动报错。

shenyu-bootstrap

shenyu-bootstrap 是网关的启动项目,启动方式同上。它需要和后台管理系统交互,所以要注意修改application-local.yml 中关于shenyu-admin的配置(默认启动不用修改)。

shenyu :
    file:
      enabled: true
    corss:
      enabled: true
    dubbo :
      parameter: multi
    sync:
        websocket :
             urls: ws://localhost:9095/websocket

访问后台管理页面:
以上两个服务启动后,就可以访问shenyu-admin后台管理页面体验各种功能了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注