Apache ShenYu(神禹)网关

项目中的服务调用监控链:ShenYu网关

回顾Zuul

  1. 功能:对请求的路由和过滤
  2. 路由转发:将请求转发到微服务实例上
  3. 过滤器:对请求的处理进行干预:请求校验,服务聚合等

yaml配置:

zuul:
   routes:
     xxx.sericeId:
     xxx.path:
   ignored-servies: 

启动类上:

@EnableZuulProxy

ShenYu

采用Java WebFlux编写的响应式API网关:具有异步、高性能、跨语言的特点

  • 支持HTTP、Dubbo、spring cloud、grpc、Motan等
  • 内置鉴权、限流、熔断等插件

部署方式:本地部署、docker部署、k8s部署、集群部署等

本地部署:

  1. 下载仓库:https://github.com/apache/incubator-shenyu.git(直接从那个IDEA导入CVS即可)
  2. 下载后启动ShenyuAdminBootstrap项目:运维管理后台
  3. 访问:http://localhost:9095
  4. 用户名&密码:admin/123456
  5. 微服务网关:ShenyuBootstrapApplication项目

依赖部署:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<!--shenyu-->
<!--shenyu gateway start-->
<dependency>
    <groupId>org.apache.shenyu</groupId>
    <artifactId>shenyu-spring-boot-starter-gateway</artifactId>
    <version>${shenyu.version}</version>
</dependency>

<dependency>
    <groupId>org.apache.shenyu</groupId>
    <artifactId>shenyu-spring-boot-starter-plugin-springcloud</artifactId>
    <version>${shenyu.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-commons</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.apache.shenyu</groupId>
    <artifactId>shenyu-spring-boot-starter-plugin-httpclient</artifactId>
    <version>${shenyu.version}</version>
</dependency>

<dependency>
    <groupId>org.apache.shenyu</groupId>
    <artifactId>shenyu-spring-boot-starter-instance</artifactId>
    <version>${shenyu.version}</version>
</dependency>

<!--nacos-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${nacos.version}</version>
</dependency>

<!-- apache shenyu data sync start use nacos-->
<dependency>
    <groupId>org.apache.shenyu</groupId>
    <artifactId>shenyu-spring-boot-starter-sync-data-nacos</artifactId>
    <version>${shenyu.version}</version>
</dependency>

yaml配置

shenyu:
  register:
    registerType: http  #nacos #zookeeper
    serverLists: http://10.10.12.184:30098
    props:
      username: admin
      password: 123456
  client:
    springCloud:
      props:
        contextPath: /pay #项目在shenyu网关的路由前缀
        port: ${server.port} #本项目的启动端口
        isFull: false #设置true 代表代理你的整个服务,false表示代理你其中某几个controller;目前适用于springmvc/springcloud

主启动类

@EnableDiscoveryClient

基于Spring WebFlux开发,是一个一部非阻塞式IO模型,通过少量的容器现场支撑大量的并发访问,底层采用Netty容器;与传统的SpringMVC不同,SpringMVC基于Servlet开发的

  • 反应式流:Reactive Stream

  • 选择Spring Reactive Web依赖

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐