八 多WebApps與多mysql的整合

2021-07-15 16:57:57 字數 2332 閱讀 8289

寫的方式主要主節點,讀取在從節點。然後通過**伺服器做**。但是mysql存在單點故障問題。

解決方案

1、        準備多台mysql並配置好

class="com.caland.sun.client.router.config.interalrouterxmlfactorybean">

classpath:/dbrule/sharding-rules-on-namespace.xml

3、        配置sharding-rules-on-namespace.xml。配置資料池連線規則

order

表示式如果不使用自定義路由規則函式,而是直接使用   taobaoid%2==0這種的話就不用在檔案

中配置中了

partition1

order

partition2

order

partition3

user

表示式如果不使用自定義路由規則函式,而是直接使用   taobaoid%2==0這種的話就不用在檔案

中配置中了

partition1

user

partition2

user

partition3

4、        編寫規則類

* 根據某種自定義的hash演算法來進行雜湊,並根據雜湊的值進行路由

*  常見的水平切分規則有:

基於範圍的切分, 比如 memberid >10000 and memberid < 20000

基於模數的切分, 比如 memberid%128==1或者 memberid%128==2 或者...

基於雜湊(hashing)的切分, 比如hashing(memberid)==somevalue等

* @author lixu

public class hashfunction{

* 對三個資料庫進行雜湊分布

* 1、返回其他值,沒有在配置檔案中配置的,如負數等,在預設資料庫中查詢

* @param id

* @return

//先從快取獲取 沒有則查詢資料庫

//input 可能是id,拿id到快取裡去查使用者的db座標資訊。然後把庫的編號輸出

int result =(int)(userid % 1024);

system.out.println("hash:"+ result);

if(0 <= result&& result < 256){

result = 0;

system.out.println("在第1個資料庫中");

if(256 <= result&& result < 512){

result = 1;

system.out.println("在第2個資料庫中");

if(512 <= result&& result < 1024){

result = 2;

system.out.println("在第3個資料庫中");

return result;

* 對三個資料庫進行雜湊分布

* 1、返回其他值,沒有在配置檔案中配置的,如負數等,在預設資料庫中查詢

* @param id

* @return

//先從快取獲取 沒有則查詢資料庫

//input 可能是id,拿id到快取裡去查使用者的db座標資訊。然後把庫的編號輸出

int result =math.abs(username.hashcode() % 1024);//0---1023

system.out.println("hash:"+ result);//333

if(0 <= result&& result < 256){

result = 1;

system.out.println("在第1個資料庫中");

if(256 <= result&& result < 512){

result = 2;

system.out.println("在第2個資料庫中");

if(512 <= result&& result < 1024){

result = 3;

system.out.println("在第3個資料庫中");

return result;

注:只呼叫一次

taobaoid:3354

在第1個資料庫中

注:呼叫了三次

taobaoid:7043

在第3個資料庫中

taobaoid:7043

在第3個資料庫中

taobaoid:7043

在第3個資料庫中

mysqld multi 多例項啟動mysql

假設伺服器之前有乙個3306的例項在執行了,我們要再新增乙個3316埠的例項。直接編輯 etc my.cnf 新增如下內容 紅色部分是後新增的配置項 client user root socket tmp mysql.sock port 3306 mysql prompt d mysqld data...

八 NameNode多目錄配置

我這裡演示的是已經使用的集群,所以需要刪除data與log檔案 如果是初次配置集群不用。為什麼要配置多目錄?namenode的本地目錄配置成多個,且每個目錄存放內容相同,增加了可靠性。具體配置調整如下 1 在hdfs site.xml檔案中增加如下內容 dfs.namenode.name.dir f...

多校第八場

hdu 4950 monster 小模擬題,找到判斷的臨界條件 include include includeusing namespace std int64 h,a,b,k,sum int main int i 0 while scanf i64d i64d i64d i64d h,a,b,k ...