最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java開發(fā)ShardingSphere的路由引擎類型示例詳解

 更新時間:2022年08月03日 14:10:16   作者:周杰倫本人  
這篇文章主要為大家介紹了java開發(fā)ShardingSphere的路由引擎類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

ShardingSphere的路由引擎類型

本篇文章源碼基于4.0.1版本

上篇文章我們了解到了ShardingSphere在路由流程過程中,根據(jù)不同類型的SQL會現(xiàn)在不同的路由引擎,而ShardingSphere支持的路由規(guī)則也很多了,包括廣播(broadcast)路由、混合(complex)路由、默認數(shù)據(jù)庫(defaultdb)路由、無效(ignore)路由、標準(standard)路由以及單播(unicast)路由等等,那么具體這些路由規(guī)則對應(yīng)的是什么路由引擎呢?今天我們就聊聊這個。

路由引擎類型

RoutingEngineFactory 用來創(chuàng)建路由引擎的實例,對應(yīng)的是它的newInstance()方法,根據(jù)Sql語句SQLStatement對象的類型選擇不同的路由引擎,有

全庫廣播路由引擎DatabaseBroadcastRoutingEngine、

全庫表廣播路由引擎TableBroadcastRoutingEngine、

無效路由引擎IgnoreRoutingEngine、

默認數(shù)據(jù)庫路由引擎DefaultDatabaseRoutingEngine(對默認的數(shù)據(jù)庫進行路由)、

單播路由引擎UnicastRoutingEngine(單播路由只需要在任何數(shù)據(jù)庫的任何表中獲取就可以,相當于獲取表中公有信息)、

數(shù)據(jù)源組的廣播路由引擎DataSourceGroupBroadcastRoutingEngine、

數(shù)據(jù)庫主庫實例的廣播路由引擎MasterInstanceBroadcastRoutingEngine(這個就是針對主庫進行的操作,比如一些授權(quán)的SQL語句)

笛卡爾路由引擎CartesianRoutingEngine、

混合路由引擎ComplexRoutingEngine、

標準路由引擎StandardRoutingEngine

標準路由

標準路由是ShardingSphere推薦使用的一種分片路由策略,在進行分片表只有一個或者分片表是綁定關(guān)系,這個綁定關(guān)系是在配置文件中定義的,比如如下配置:

shardingRule:
  bindingTables: 
     table1,table2

這個配置文件會解析成BindingTableRule集合,在進行判斷綁定關(guān)系的時候根據(jù)邏輯表名獲取BindingTableRule對象,判斷是否在集合中,如果有就表明存在綁定關(guān)系

路由邏輯

路由邏輯在StandardRoutingEngine的route()中體現(xiàn),具體邏輯是分兩步走,先獲取數(shù)據(jù)節(jié)點,在生成路由結(jié)果,獲取路由接點對應(yīng)StandardRoutingEngine的getDataNodes()方法:

    private Collection<DataNode> getDataNodes(final TableRule tableRule) {
        if (isRoutingByHint(tableRule)) {
            return routeByHint(tableRule);
        }
        if (isRoutingByShardingConditions(tableRule)) {
            return routeByShardingConditions(tableRule);
        }
        return routeByMixedConditions(tableRule);
    }
  • 如果是基于Hint的路由,具體就判斷分片策略是否為HintShardingStrategy對象,調(diào)用routeByHint()方法
  • 如果是分片條件的路由,調(diào)用isRoutingByShardingConditions()方法
  • 否則就調(diào)用復(fù)合條件的路由

這三種情況都會調(diào)用route0()方法,先進行數(shù)據(jù)源的路由,再進行表的路由,生成數(shù)據(jù)節(jié)點

總結(jié)

這篇文章我們介紹了RoutingEngineFactory的newInstance()方法的具體邏輯,主要功能就是根據(jù)不同的SQL語句來創(chuàng)建不同的路由引擎,我們羅列一下ShardingSphere支持哪些路由引擎,并介紹了這些路由引擎的應(yīng)用場景,其中對標準路由進行詳細,介紹,先是根據(jù)路由規(guī)則獲取數(shù)據(jù)節(jié)點,然后生成路由結(jié)果,具體路由策略在ShardingStrategy的實現(xiàn)類中體現(xiàn)。

以上就是java開發(fā)ShardingSphere的路由引擎類型示例詳解的詳細內(nèi)容,更多關(guān)于java ShardingSphere路由引擎的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 部署springboot打包不打包配置文件,配置文件為外部配置文件使用詳解

    部署springboot打包不打包配置文件,配置文件為外部配置文件使用詳解

    在Spring Boot項目中,將配置文件排除在jar包之外,通過外部配置文件來管理不同環(huán)境的配置,可以實現(xiàn)靈活的配置管理,在pom.xml文件中添加相關(guān)配置,打包時忽略指定文件,運行時在jar包同級目錄下創(chuàng)建config文件夾,將配置文件放入其中即可
    2025-02-02
  • Java實現(xiàn)單例模式的五種方式總結(jié)

    Java實現(xiàn)單例模式的五種方式總結(jié)

    這篇文章主要介紹了如何實現(xiàn)一個單例模式,包括構(gòu)造器私有化、提供靜態(tài)私有變量和公共獲取實例接口,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • Java 讀取圖片的mimeType的方法

    Java 讀取圖片的mimeType的方法

    本篇文章主要介紹了Java 讀取圖片的mimeType的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • SpringBoot配置文件bootstrap和application區(qū)別及說明

    SpringBoot配置文件bootstrap和application區(qū)別及說明

    這篇文章主要介紹了SpringBoot配置文件bootstrap和application區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • idea項目結(jié)構(gòu)中不顯示out文件夾的解決

    idea項目結(jié)構(gòu)中不顯示out文件夾的解決

    本文通過圖片的方式詳細解釋操作步驟,使讀者能夠更直觀更方便地理解和執(zhí)行操作,同時,文章末尾祝福讀者步步高升,一帆風(fēng)順,展現(xiàn)了作者的人情味和親和力,整體來說,這是一篇簡單易懂、實用性強的操作指南
    2024-10-10
  • java基于servlet實現(xiàn)文件上傳功能解析

    java基于servlet實現(xiàn)文件上傳功能解析

    這篇文章主要為大家詳細介紹了java基于servlet實現(xiàn)上傳功能,后臺使用java實現(xiàn),前端主要是js的ajax實現(xiàn),感興趣的小伙伴們可以參考一下
    2016-05-05
  • Java如何在PDF中添加ToolTip工具提示

    Java如何在PDF中添加ToolTip工具提示

    大家好,本篇文章主要講的是Java如何在PDF中添加ToolTip工具提示,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • SpringBoot多數(shù)據(jù)源解決方案:dynamic-datasource-spring-boot-starter

    SpringBoot多數(shù)據(jù)源解決方案:dynamic-datasource-spring-boot-starter

    本文主要介紹了SpringBoot多數(shù)據(jù)源解決方案,使用dynamic-datasource-spring-boot-starter實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • java采用中文方式顯示時間的方法

    java采用中文方式顯示時間的方法

    這篇文章主要介紹了java采用中文方式顯示時間的方法,實例分析了java時間操作及字符串轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • MyBatis-Plus實現(xiàn)對查詢結(jié)果進行分頁的基本步驟

    MyBatis-Plus實現(xiàn)對查詢結(jié)果進行分頁的基本步驟

    MyBatis-Plus 是一個 MyBatis 的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,MyBatis-Plus 支持多種數(shù)據(jù)庫的分頁查詢,其分頁功能是通過 Page 類實現(xiàn)的,本文介紹了使用 MyBatis-Plus 實現(xiàn)分頁查詢的基本步驟,需要的朋友可以參考下
    2024-08-08

最新評論

庄河市| 齐河县| 镇安县| 贵南县| 大冶市| 讷河市| 随州市| 永胜县| 新源县| 宁安市| 义马市| 西昌市| 隆德县| 大同县| 娄烦县| 闻喜县| 义马市| 嘉祥县| 旌德县| 方城县| 佛山市| 临朐县| 当涂县| 奉贤区| 行唐县| 沙河市| 深水埗区| 甘德县| 武威市| 特克斯县| 南涧| 通渭县| 全州县| 霞浦县| 正蓝旗| 侯马市| 麻栗坡县| 巩义市| SHOW| 民乐县| 新丰县|