在Spring Cloud Gateway中壹個RouteDefinition對象定義壹個路由。Spring Cloud Gateway啟動時首先加載所有的RouteDefinition,然後生成路由並講路由加載到內中(有緩存機制,主要目的是提供路由匹配的效率)。Spring Cloud Gateway可以從四個數據源加載RouteDefinition:配置文件,Fluent Route API,RouteDefinitionRepository和DiscoveryClient(Spring Cloud定義的服務發現接口)。從路由的加載機制可以看出,能夠實現動態添加、刪除、修改路由的方式就是自定義實現RouteDefinitionRepository,從而可以保證在Spring Cloud Gateway啟動時加載之前已經添加過的路由。
Spring Cloud Gateway定義了壹個RouteRefreshListener用來監聽路由變化事件RefreshRoutesEvent,因此在添加、刪除、更新路由後只需要發布壹個RefreshRoutesEvent事件以讓所有存儲路由的組件更新路由即可。
實現步驟:
基於mysql的實現源碼參考 Spring Cloud Gateway Example