13 Spring Cloud微服务 微服务网关Zuul

 

一基本概念
当后端有很多的接口,不能通过一个个调用,需要用到网关,提供request的统一入口

服务网关的要素
7*24小时可用,网关瘫痪,系统全挂
。稳定性,高可用
。性能,并发性
。安全性(金融,通信数据的加密)
。扩展性

常见的网关方案
Nginx(性能和高可用是傲视群雄的资本)+Lua
kong(基于Nginx二次开发,收费)
Tyk (Go语言,并发)
Spring Cloud Zuul
混搭:Nginx+Zuul

Zuul 的特点
。路由+过滤器 = Zuul
。核心是一系列的过滤器

Zuul的四种过滤器API
。前置(Pre)
。路由(Route)
。后置(Post)
。错误(Error)

.custom filters



二 Zuul:路由转发,排除和自定义
新建项目->
Group->com.immoc
Artifact->api-gateway
Spring Cloud Config-> config Client
Spring Cloud Discovery->Eureka Discovery Client
Spring Cloud Routing->Zuul

Project name: api-gateway
->完成

三代码
@SpringBootApplication
@EnableZuulProxy      <------------------
public class ApiGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayApplication.class, args);
    }

}

三 修改src->resources->bootstrap.yml
string:
  application:
    name: api-gateway
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: test
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

因为端口占用,修改端口
Edit Configurations->Configuration->Environment->VM options(-Dserver.port=9000)

访问localhost:9000/produt/product/list
localhost:9000/order-test.yml
localhost:9000/config/order-test.yml


如何自定义路由
string:
  application:
    name: api-gateway
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: dev
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
zuul:
  routes:
    myProduct:   <--------定义的规则的名字,这个名字随意些,写成aaa也可以
      path: /myProduct/**    <-----url地址
      serviceId: product     <-----路由到哪个服务上去
等价于下面
routes:
  product: /myProduct/**
访问localhost:9000/myProduct/product/list


如何查看所有的路由规则 bootstrap.yml

management.security.enabled=false

查看路由localhost:9000/application/routes
{
    /myProduct/**: "product",
    /config/**: "config",
    /product/**: "prodcut"
}
访问
localhost:9000/product/product/list
localhost:9000/myProduct/product/list


希望有些地址不能被访问

zuul:
  routes:
    myProduct:
      path: /myProduct/**
      serviceId: product
  #排除某些路由
  ignored-patterns:
    - /product/product/listForOrder     <-------------不让访问
    - /myProduct/product/listForOrder   <-------------不让访问

management:
  security:
    enabled: false

访问,已经不能路由了
http://localhost:9000/product/product/listForOrder
http://localhost:9000/myProduct/product/listForOrder

如何获取cookie

zuul:
  routes:
    myProduct:
      path: /myProduct/**
      serviceId: product
      sensitiveHeaders:  <----------获取cookie,源码中敏感头的过滤

动态路由(放到 Git上)

zuul:
  routes:
    myProduct:
      path: /myProduct/**
      serviceId: product
      sensitiveHeaders:
  ignored-patterns:
    - /product/product/listForOrder
    - /myProduct/product/listForOrder
  #排除某些路由
  ignored-patterns:
    - /**/product/listForOrder
management:
  security:
    enabled: false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值