Sharding-Jdbc如何配置主從讀寫分離模式
Sharding-Jdbc 配置主從模式
我們項目的讀寫分離的主從模式項目中一般可以分為多種方式來實現(xiàn),可以手動在代碼 Java 中配置多種數(shù)據(jù)源來實現(xiàn)讀寫分離的模式,我們也可以通過第三方的框架來實現(xiàn)讀寫分離例如我們的 Sharding-jdbc
,也可以是我們的MyCat
的來實現(xiàn)讀寫分離。
- Java 代碼的方式配置多種數(shù)據(jù)源
- Sharding-Jdbc
- MyCat
今天我們就來講解一下如何使用 Sharding-jdbc
來實現(xiàn)讀寫分離。
使用 YMAL
方式來實現(xiàn)配置。
配置 master
數(shù)據(jù)源和 slave
數(shù)據(jù)源。我們這次是的方案是一主多從的方式來實現(xiàn)讀寫分離,mysql
的主從搭建我們這次就不說了。
我們這次就是主要來實現(xiàn) sharding-jdbc
的方式來實現(xiàn)讀寫分離
Sharding-jdbc 讀寫分離配置
我們首先要引入 MAVEN
依賴
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>5.1.1</version> </dependency>
我們這次使用的版本是比較新的版本。
配置數(shù)據(jù)源以及數(shù)據(jù)源的名字
spring: shardingsphere: # 內(nèi)存模式 mode: type: Memory # 數(shù)據(jù)源配置 datasource: names: master,slave # 主數(shù)據(jù)源 master: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.jc.mysql.Driver jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true username: root password: 123456 # 從機數(shù)據(jù)源 slave: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.jc.mysql.Driver jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true username: root password: 123456
主要是配置數(shù)據(jù)源的鏈接地址和賬戶以及密碼。
讀寫分離的策略
spring: shardingsphere: rules: readwrite-splitting: data-sources: mydatasource: # 類型是靜態(tài)還是動態(tài) type: Static props: # 寫入數(shù)據(jù) write-data-source-name: master # 讀數(shù)據(jù) read-data-source-names: slave # 使用的邏輯策略 load-balancer-name: round-alg # 負(fù)載均衡策略 load-balancers: # 輪詢 round-alg: type: ROUND_ROBIN
這里的是配置寫數(shù)據(jù)和讀數(shù)據(jù)使用的數(shù)據(jù)源
完整配置
spring: shardingsphere: mode: type: Memory # 數(shù)據(jù)源配置 datasource: names: master,slave # 主數(shù)據(jù)源 master: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.jc.mysql.Driver jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true username: root password: 123456 # 從機數(shù)據(jù)源 slave: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.jc.mysql.Driver jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true username: root password: 123456 rules: readwrite-splitting: data-sources: mydatasource: # 類型是靜態(tài)還是動態(tài) type: Static props: write-data-source-name: master read-data-source-names: slave # 使用的邏輯策略 load-balancer-name: round-alg # 負(fù)載均衡策略 load-balancers: # 輪詢 round-alg: type: ROUND_ROBIN # 隨機 random-alg: type: RANDOM # 權(quán)重,我們在配置權(quán)重的時候必須配置各個 slave 的權(quán)重值,值的數(shù)據(jù)類型為 double weight-alg: type: WEIGHT props: slave: 1.0 props: show-sql: true
結(jié)束!
中間我在啟動的時候遇到一個 mysql
的連接異常
Public Key Retrieval is not allowed
這種情況可以配置參數(shù)的時候設(shè)置連接參數(shù) ?allowPublicKeyRetrieval=true
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JAXB命名空間及前綴_動力節(jié)點Java學(xué)院整理
這篇文章主要給大家介紹了關(guān)于JAXB命名空間及前綴的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08Java8新特性之Base64詳解_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java8新特性之Base64的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06使用mybatis-plus的insert方法遇到的問題及解決方法(添加時id值不存在異常)
這篇文章主要介紹了使用mybatis-plus的insert方法遇到的問題及解決方法(添加時id值不存在異常),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08