【SpringCloud分布式框架搭建】gateway网关,动态路由配置,使用Mysql,存储路由,实现集群gateway动态路由【二】

【SpringCloud分布式框架搭建】gateway网关,动态路由配置,使用Mysql,存储路由,实现集群gateway动态路由【一】

最新版本,已更改为redis存储,并新增了 token验证以及token的动态过滤验证

GitHub 地址:https://github.com/seowen808/springCloud

1、创建 与表对应的 pojo、service、controller。如下:
pojo:


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;

import com.keda.bean.common.BasePojo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * gateway动态路由配置表
 * </p>
 *
 * @author seowen
 * @since 2019-12-20
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class GatewayDynamicRoute extends BasePojo<GatewayDynamicRoute> {

    private static final long serialVersionUID = 1L;

    /**
     * 路由Id
     */
    @TableField("route_id")
    private String routeId;

    /**
     * 路由规则转发的uri
     */
    @TableField("`uri`")
    private String uri;

    /**
     * 路由的执行顺序
     */
    @TableField("`order`")
    private Integer order;

    /**
     * 路由断言集合配置json串
     */
    @TableField("predicate_json")
    private String predicates;

    /**
     * 路由过滤器集合配置json串
     */
    @TableField("filter_json")
    private String filters;

    /**
     * 状态:0,"不可用");1,"可用")
     */
    @TableField("`enable`")
    private Boolean enable;


    @Override
    protected Serializable pkVal() {
        return null;
    }

}

BasePojo

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * @author seowen
 * @since 2019/7/3
 */
@Data
public class BasePojo<T extends BasePojo<?>> extends Model{
    /**
     * 主键Id
     */
    @TableId(type = IdType.INPUT)
    @TableField(value = "id")
    protected Long id;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    protected LocalDateTime createTime;

    /**
     * 修改时间
     */
    @TableField(value = "update_time")
    protected LocalDateTime updateTime;

    /**
     * 创建用户id
     */
    @TableField(value = "create_user_id")
    protected Long createUserId;

    /**
     * 最后操作者的id
     */
    @TableField(value = "last_user_id")
    protected Long lastUserId;


    private static final long serialVersionUID = 1L;
}

mapper

import com.keda.gateway.entity.GatewayDynamicRoute;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotati
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nacos是一个分布式的服务注册和发现系统。Spring Cloud Gateway是开源的网关,可以实现动态路由。结合Nacos和Spring Cloud Gateway可以实现动态路由的功能。 下面是通过Nacos实现Spring Cloud Gateway动态路由的步骤: 1. 添加Nacos组件。在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` 2. 实现Spring Cloud Gateway注册到Nacos的功能。 在application.yml文件中添加以下配置: ``` spring: application: name: gateway-service cloud: gateway: discovery: locator: enabled: true lower-case-service-id: true ``` 其中,将enabled设置为true,表示启用Spring Cloud Gateway的服务发现功能;将lower-case-service-id设置为true,表示服务名全部转换为小写。 3. 实现动态路由。 在Nacos中创建config和route两个配置。config配置用来存放动态路由信息,route配置用来存放每个服务的路由信息。 在route配置中添加以下配置: ``` spring: cloud: gateway: routes: - id: user-service uri: loadbalancer://user-service predicates: - Path=/users ``` 其中,id表示服务名,uri表示服务的负载均衡地址,predicates表示路由谓语,可以是Path、Query等。 在config配置中添加以下配置: ``` spring: cloud: gateway: discovery: locator: enabled: true lower-case-service-id: true routes: - id: user-service predicates: - Path=/api/users/** filters: - StripPrefix=1 uri: lb://user-service metadata: version: 1.0 ``` 其中,id表示服务名,predicates表示路由谓语,filters表示过滤器,StripPrefix表示去掉前缀的过滤器,uri表示服务的负载均衡地址,metadata表示元数据信息。 通过以上配置,就可以实现Nacos和Spring Cloud Gateway动态路由的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值