框架学习使用

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

2022-05-29  本文已影响0人  二哈_8fd0

(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版本的源码

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

  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

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

上一篇下一篇

猜你喜欢

热点阅读