apache-shenyu之启动项目老年人教程

(apache-shenyu 2.4.3版本)apache shenyu前身soul网关,是一款java中spring5新引入的project-reactor的webflux,reactor-netty等为基础实现的高性能网关,现已进入apache孵化器,作者yu199195 (xiaoyu) (github.com)

作者也是国内知名开源社区dromara的创始人,并且作有多个开源产品,apache-shenyu是其中之一apache/incubator-shenyu: ShenYu is High-Performance Java API Gateway. (github.com)

2.4.3版本,目前作为apache孵化器项目迭代还是很快的。

为什么出一篇老年人教程。为了能够过渡一下接下来的探讨shenyu核心模块之一

shenyu-sync-data-center以及shenyu-client做准备,当然后续还会去学习shenyu-plugin(提供各种插件扩展)

开始之前可以看一下github上及其其他百度搜到的关于apache-shenyu网关的介绍,后续可以通过当前文章启动apache-shenyu然后根据页面以及接口来根据自己的想法进行测试,感受一下shenyu的魅力

那么开始了
  1. 下载代码apache/incubator-shenyu: ShenYu is High-Performance Java API Gateway. (github.com)
    可以fork或者直接下载v2.4.3版本的源码
  2. 下载代码完毕后使用idea打开它,它长这个样子


    apache-shenyu2.4.3版本的源码

    简单了解一下各个模块的作用

  • shenyu-admin:shenyu提供的页面可视化的网关配置页面的后端接口
  • shenyu-alert:网关也提供报警功能,可以通过这个模块实现,目前还没有用到,大家继承shenyu网关时可以自己扩展
  • shenyu-bootstrap:网关服务,真正做负载均衡,熔断,限流,路由等逻辑的网关,当然shenyu这里只有一个启动类,会加载其他模块的代码启动
  • shenyu-client:作为网关,要路由到后端服务所提供的客户端模块,分别为core包,提供了所有client实现的聚合,目前支持的协议包括dubbo,grpc,http,motan,sofa,tars,websocket协议的后端
  • shenyu-common:shenyu的工具类,定时逻辑(时间轮),多线程等通用封装
  • shenyu-disruptor:shenyu对disruptor的封装。
  • shenyu-dist:项目构建
  • shenyu-examples:shenyu也提供了各种协议客户端(后端服务)的例子,也包括不同的数据同步机制的例子,例如eureka。也包含plugin等拓展。让我们快速上手,包括dubbo,eureka,grpc,http,https,motan,sofa,spring-cloud,springmvc,springmvc-tomcat,tars,websocket。
  • shenyu-integrated-test:继承测试模块
  • shenyu-loadbalancer:负载均衡模块,目前默认提供轮询,随机,hash。也可以自己扩展
  • shenyu-plugin:插件扩展,shenyu的魅力之一就是提供了插件机制,方便我们扩展,各种维度的插件,和网关能搭上边的都可以
  • shenyu-protocol:shenyu的协议模块,grpc,mqtt协议
  • shenyu-register-center:注册中心。后面要研究的东西。用来后端的client注册,网关的client-server注册等等。
  • shenyu-spi:参照dubbo的spi实现
  • shenyu-spring-boot-starter:shenyu各种模块继承的spring-boot-starter
  • shenyu-sync-data-center:与网关数据同步的模块封装,shenyu的网关uri,rule各种数据是动态的,运行时生效,这个模块封装了数据的同步,包括api(封装抽象的接口),consule,etcd,http,nacos,websocket,zookeeper数据同步方式
  • shenyu-web:包括插件、请求路由和转发等的核心处理包
  1. 修改配置


    修改admin

    我们使用mysql数据库存储元数据,并创建一个库实例,默认会自动执行resources/sql-script/mysql下的sql初始化库以及数据

shenyu:
  register:
// 我这里使用 nacos注册后端的实例(用于shenyu网关获取后端服务列表,这里直接配合我们实际使用什么样的注册中心即可)
    registerType: nacos #http #zookeeper #etcd #nacos #consul
    serverLists: localhost:8848 #localhost:2181 #http://localhost:2379 #localhost:8848 #http://localhost:9095
    props:
      sessionTimeout: 5000
      connectionTimeout: 2000
      checked: true
      zombieCheckTimes: 5
      scheduledTime: 10
      nacosNameSpace: 设置你的namespace
// uri以及元数据的变化通过 websocket与shenyu的网关同步
  sync:
    websocket:
      enabled: true
      messageMaxSize: 10240

修改 网关服务的配置


网关
// 网关服务提供websocket与admin进行数据同步
shenyu:
  sync:
    websocket:
      urls: ws://localhost:9095/websocket
spring:
  // 省略一部分
  cloud:
    loadbalancer:
      ribbon:
        enabled: false
    discovery:
// 这个一定要开启噢,如果使用spring-cloud(nacos也是spring-cloud一种实现)
      enabled: true
    nacos:
// 配置nacos
      discovery:
        server-addr: 127.0.0.1:8848 # Spring Cloud Alibaba Dubbo use this.
        enabled: true
        namespace: 设置为你的namespace

eureka:
  client:
// 如果使用nacos 就关这个
    enabled: false
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true
  1. nacos 我们直接使用当前自己所使用的服务,或者是eureka等等
  2. 后端业务服务配置以及使用
    添加pom依赖
        <dependency>
            <groupId>org.apache.shenyu</groupId>
            <artifactId>shenyu-spring-boot-starter-client-springcloud</artifactId>
            <version>2.5.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shenyu</groupId>
            <artifactId>shenyu-client-springcloud</artifactId>
            <version>2.5.0-SNAPSHOT</version>
        </dependency>

配置加 discovery

spring:
  cloud:
// 一样开启这个 cloud
    discovery:
      enabled: true
shenyu:
  register:
// 通过nacos注册,给shenyu拉取服务列表
    registerType: nacos #zookeeper #etcd #nacos #consul
    serverLists: localhost:8848 #localhost:2181 #http://localhost:2379 #localhost:8848
    props:
      username: admin
      password: 123456
      nacosNameSpace: xxx你的namespace
  client:
    springCloud:
      props:
// 这个类似你的业务服务路径前缀
        contextPath: /erha

springcloud模式通过注解到controller
@ShenyuSpringCloudClient


添加注解来将要被路由的uri注册到shenyu-admin

如上图,也可以注解到单个接口上,默认会添加一层contextPath: /erha

然后我们分别启动 shenyuAdmin,shenyuBootstrap和你的后端业务服务,包括nacos
登录页面

admin/123456


Plugin

这里包含当前shenyu内置的所有plugin,是责任链模式执行噢,有一定的顺序
记得将springCloud插件开启


spring-cloud插件

插件内的规则设置

还可以设置对应插件的规则。
还有这老些功能呢,大家可以自行研究
进入到 代理,其实就是当前的网关暴露给外部,而用户端请求过来都会经过当前网关,则作为后端业务服务的proxy,我们直接来看springCloud
springCloud代理

之前被注解的controller
可以看到之前被注解的controller已经全部出现在这里了
rules

还可以设置一些匹配路由规则,其他的更多的使用方式以及扩展方式大家可以多尝试一下如何为自己的业务赋能。今天就到这里了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容