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
# 負載均衡策略
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
# 負載均衡策略
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)文章
基于SpringBoot項目實現(xiàn)Docker容器化部署的主要步驟
部署SpringBoot項目到Docker容器涉及選擇Java運行時環(huán)境的基礎(chǔ)鏡像、構(gòu)建包含應(yīng)用程序的Docker鏡像、編寫Dockerfile、使用docker build命令構(gòu)建鏡像和使用docker run命令運行Docker容器等步驟2024-10-10
Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別)
這篇文章主要介紹了Java基本數(shù)據(jù)類型與封裝類型詳解(int和Integer區(qū)別) ,需要的朋友可以參考下2017-02-02
解決@ServerEndpoint不能注入@Autowired的問題
這篇文章主要介紹了解決@ServerEndpoint不能注入@Autowired的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
SpringBoot配置文件中密碼屬性加密的實現(xiàn)
本文主要介紹了SpringBoot配置文件中密碼屬性加密的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

