寫的方式主要主節點,讀取在從節點。然後通過**伺服器做**。但是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 ...