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

1、mysql建表语句

CREATE TABLE `gateway_dynamic_route` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键自增Id',
  `route_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '路由Id',
  `uri` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '路由规则转发的uri',
  `order` int(11) NOT NULL DEFAULT '0' COMMENT '路由的执行顺序',
  `predicate_json` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '路由断言集合配置json串',
  `filter_json` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '路由过滤器集合配置json串',
  `enable` bit(1) NOT NULL COMMENT '状态:0,"不可用");1,"可用")',
  `create_time` timestamp NOT NULL COMMENT '创建时间',
  `update_time` timestamp NOT NULL COMMENT '修改时间',
  `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
  `last_user_id` bigint(20) DEFAULT NULL COMMENT '最后操作员的Id',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `route_id` (`route_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=359926760386240514 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='gateway动态路由配置表';

2、表中的实例数据

mysql> select * from gateway_dynamic_route;
+--------------------+-----------------------+----------------------------+-------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+--------+---------------------+---------------------+----------------+--------------+
| id                 | route_id              | uri                        | order | predicate_json                                                | filter_json                                                                                                                                              | enable | create_time         | update_time         | create_user_id | last_user_id |
+--------------------+-----------------------+----------------------------+-------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+--------+---------------------+---------------------+----------------+--------------+
| 355180729269358603 | keda-information-main | lb://KEDA-INFORMATION-MAIN |     1 | [{"args":{"_genkey_0":"/information-main/**"},"name":"Path"}] | [{"args":{"_genkey_0":"1"},"name":"StripPrefix"},{"args":{"retries":"3","series.0":"SERVER_ERROR","methods.0":"GET","methods.1":"POST"},"name":"Retry"}] | 1      | 2019-12-20 17:41:50 | 2019-12-20 17:41:50 |              1 |            1 |
| 357737444216041473 | keda-channel-provider | lb://KEDA-CHANNEL-PROVIDER |     1 | [{"args":{"_genkey_0":"/channel/**"},"name":"Path"}]          | [{"args":{"_genkey_0":"1"},"name":"StripPrefix"},{"args":{"retries":"3","series.0":"SERVER_ERROR","methods.0":"GET","methods.1":"POST"},"name":"Retry"}] | 1      | 2019-12-27 19:01:18 | 2019-12-27 19:01:18 |              1 |            1 |
| 357737444216041500 | keda-app              | lb://KEDA-APP              |     1 | [{"args":{"_genkey_0":"/main/**"},"name":"Path"}]             | [{"args":{"_genkey_0":"1"},"name":"StripPrefix"},{"args":{"retries":"3","series.0":"SERVER_ERROR","methods.0":"GET","methods.1":"POST"},"name":"Retry"}] | 1      | 2019-12-27 19:01:18 | 2019-12-27 19:01:18 |              1 |            1 |
| 359926760386240513 | keda-creditcard       | lb://KEDA-CREDITCARD       |     1 | [{"args":{"_genkey_0":"/card/**"},"name":"Path"}]             | [{"args":{"_genkey_0":"1"},"name":"StripPrefix"},{"args":{"retries":"3","series.0":"SERVER_ERROR","methods.0":"GET","methods.1":"POST"},"name":"Retry"}] | 1      | 2020-01-02 20:00:52 | 2020-01-02 20:06:52 |              1 |            1 |
+--------------------+-----------------------+----------------------------+-------+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+--------+---------------------+---------------------+----------------+--------------+
4 rows in set (0.13 sec)

3、动态新增路由的postman请求参数

{
	"routeId":"keda-creditcard",
	"uri":"lb://KEDA-CREDITCARD",
	"order":"1",
	"enable":"true",
	"predicates":[ 
		{
	        "name": "Path",
	        "args": {
	            "_genkey_0": "/main/**"
	        }
	    }
    ],
	"filters":[
	    {
            "name": "StripPrefix",
            "args": {
                "_genkey_0": "1"
            }
        },
        {
            "name": "Retry",
            "args": {
                "retries": "3",
                "series.0": "SERVER_ERROR",
                "methods.0": "GET",
                "methods.1": "POST"
            }
        }	
	]
	
}

更新路由和新增路由,请求参数都是一样的。

http://192.168.1.126:20001/gateway-dynamic-route/add

http://192.168.1.126:20001/gateway-dynamic-route/update

获取路由信息:
http://192.168.1.126:20001/actuator/gateway/routes

以上,仅仅是展示一些 动态路由搭建好后的,数据展示

接下来,正式开始搭建 动态路由信息

发布了111 篇原创文章 · 获赞 28 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42697074/article/details/103820504