亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • SpringCloud實現分庫分表模式下,數據庫實時擴容方

SpringCloud實現分庫分表模式下,數據庫實時擴容方

發布時間:2020-02-25 18:43:13 來源:網絡 閱讀:261 作者:艾弗森哇 欄目:數據庫

一、項目結構

1、工程結構

SpringCloud實現分庫分表模式下,數據庫實時擴容方

2、模塊命名

shard-common-entity:???公共代碼塊
shard-open-inte:????????開放接口管理
shard-eureka-7001:??????注冊中心
shard-two-provider-8001:?8001?基于兩臺庫的服務
shard-three-provider-8002:8002?基于三臺庫的服務

3、代碼依賴結構

SpringCloud實現分庫分表模式下,數據庫實時擴容方

4、項目啟動順序

(1)shard-eureka-7001:????????注冊中心
(2)shard-two-provider-8001:??8001?基于兩臺庫的服務
(3)shard-three-provider-8002:8002?基于三臺庫的服務

按照順序啟動,且等一個服務完全啟動后,在啟動下一個服務,不然可能遇到一些坑。

二、核心代碼塊

1、8001 服務提供一個對外服務

基于Feign的調用方式 作用:基于兩臺分庫分表的數據查詢接口。鄭州治療不孕不育哪里好:http://www.zzfkyy120.com/

import?org.springframework.cloud.netflix.feign.FeignClient;import?org.springframework.web.bind.annotation.PathVariable;import?org.springframework.web.bind.annotation.RequestMapping;import?shard.jdbc.common.entity.TableOne;/**
?*?shard-two-provider-8001
?*?對外開放接口
?*/@FeignClient(value?=?"shard-provider-8001")
public?interface?TwoOpenService?{
????@RequestMapping("/selectOneByPhone/{phone}")????TableOne?selectOneByPhone(@PathVariable("phone")?String?phone)?;
}

2、8002 服務提供一個對外服務

基于Feign的調用方式 作用:基于三臺分庫分表的數據存儲接口。

import?org.springframework.cloud.netflix.feign.FeignClient;import?org.springframework.web.bind.annotation.RequestBody;import?org.springframework.web.bind.annotation.RequestMapping;import?shard.jdbc.common.entity.TableOne;/**
?*?數據遷移服務接口
?*/@FeignClient(value?=?"shard-provider-8002")
public?interface?MoveDataService?{
????@RequestMapping("/moveData")
????Integer?moveData?(@RequestBody?TableOne?tableOne)?;
}

3、基于8002服務數據查詢接口

查詢流程圖?SpringCloud實現分庫分表模式下,數據庫實時擴容方

代碼塊

/**
?*?8001?端口?:基于兩臺分庫分表策略的數據查詢接口
?*/@Resourceprivate?TwoOpenService?twoOpenService?;@Overridepublic?TableOne?selectOneByPhone(String?phone)?{
????TableOne?tableOne?=?tableOneMapper.selectOneByPhone(phone);????if?(tableOne?!=?null){
????????LOG.info("8002?===?>>?tableOne?:"+tableOne);
????}????//?8002?服務沒有查到數據
????if?(tableOne?==?null){????????//?調用?8001?開放的查詢接口
????????tableOne?=?twoOpenService.selectOneByPhone(phone)?;
????????LOG.info("8001?===?>>?tableOne?:"+tableOne);
????}????return?tableOne?;
}

4、基于 8001 數據掃描遷移代碼

遷移流程圖?SpringCloud實現分庫分表模式下,數據庫實時擴容方

代碼塊

鄭州不孕不育檢查:http://wapyyk.39.net/zz3/zonghe/1d427.html

/**
?*?8002?端口開放的數據入庫接口
?*/@Resourceprivate?MoveDataService?moveDataService?;/**
?*?掃描,并遷移數據
?*?以?庫?db_2?的?table_one_1?表為例
?*/@Overridepublic?void?scanDataRun()?{
????String?sql?=?"SELECT?id,phone,back_one?backOne,back_two?backTwo,back_three?backThree?FROM?table_one_1"?;????//?dataTwoTemplate?對應的數據庫:ds_2
????List<TableOne>?tableOneList?=?dataTwoTemplate.query(sql,new?Object[]{},new?BeanPropertyRowMapper<>(TableOne.class))?;????if?(tableOneList?!=?null?&&?tableOneList.size()>0){????????int?i?=?0?;????????for?(TableOne?tableOne?:?tableOneList)?{
????????????String?db_num?=?HashUtil.moveDb(tableOne.getPhone())?;
????????????String?tb_num?=?HashUtil.moveTable(tableOne.getPhone())?;????????????//?只演示向數據新加庫?ds_4?遷移的數據
????????????if?(db_num.equals("ds_4")){
????????????????i?+=?1?;
????????????????LOG.info("遷移總數數=>"?+?i?+?"=>庫位置=>"+db_num+"=>表位置=>"+tb_num+"=>數據:【"+tableOne+"】");????????????????//?掃描完成:執行新庫遷移和舊庫清理過程
????????????????moveDataService.moveData(tableOne)?;????????????????//?dataTwoTemplate.update("DELETE?FROM?table_one_1?WHERE?id=??AND?phone=?",tableOne.getId(),tableOne.getPhone());
????????????}
????????}
????}
}

三、演示執行流程

https://www.jianshu.com/p/fc56f6221728

1、項目流程圖

SpringCloud實現分庫分表模式下,數據庫實時擴容方

2、測試執行流程

(1)、訪問8002 數據查詢端口

http://127.0.0.1:8002/selectOneByPhone/phone20日志輸出:8001?服務查詢到數據8001?===?>>?tableOne?:+{tableOne}

(2)、執行8001 數據掃描遷移

http://127.0.0.1:8001/scanData

(3)、再次訪問8002 數據查詢端口

http://127.0.0.1:8002/selectOneByPhone/phone20日志輸出:8002?服務查詢到數據8002?===?>>?tableOne?:+{tableOne}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清远市| 沙洋县| 大余县| 青川县| 皋兰县| 阿荣旗| 万全县| 花垣县| 南通市| 高邑县| 临海市| 湘乡市| 雅江县| 门头沟区| 汝州市| 河源市| 新竹县| 嘉定区| 德清县| 青冈县| 平湖市| 怀来县| 平定县| 白银市| 大新县| 蒙阴县| 繁峙县| 保亭| 桃源县| 三门县| 铜川市| 鹿邑县| 西乌珠穆沁旗| 黑龙江省| 红河县| 亳州市| 吉首市| 林芝县| 岱山县| 雷州市| 成都市|