由於下面章節會涉及到程式間通訊,會用到zeromq通訊中介軟體,所以先介紹下zeromq的幾種通訊模式,並且通過幾個小demo來初步了解它的應用。
發布和訂閱模式,該模式主要用於**中心在收到交易所**並封裝好訊息後通過pub方式發布給客戶端,客戶端通過sub方式訂閱需要接收**的合約。
推拉模式,該模式主要用於後端測試工人在測試完成後將結果推送給回測中心,由回測中心統一將測試報告入庫。
路由模式,該模式主要將客戶端指令**給下單工人,由下單工人加指令傳送至交易所場內。
public class zmqtest
break;
}using (var head = new zeromq.zframe("time"))
using (var body = new zeromq.zframe(datetime.now.timeofday.tostring()))
thread.sleep(2000);
}console.writeline("pubserver is closed.");
}});
task.start();
}/// /// 啟動訂閱客戶端
///
public void startsubclient()
using (var msg = client.receivemessage())
if (msg.count == 2)
->", title, content);}}
}console.writeline("subclient is closed.");
}});
task.start();
}/// /// 啟動訊息拉取伺服器
///
public void startpullserver()
using (var msg = server.receivemessage())
else
", content);}}
}console.writeline("pullserver is closed.");
}});
task.start();
}/// /// 啟動訊息推送客戶端
///
public void startpushclient()
break;
}using (var content = new zeromq.zframe("push->"+datetime.now.timeofday.tostring()))
thread.sleep(2000);
}console.writeline("pushclient is closed.");
}});
task.start();
}/// /// 啟動路由伺服器
///
public void startrouterserver()
using (var msg = front.receivemessage())
", id);
var content = "do work->" + msg[1].readstring();
var replymsg = "no worker";
if (workerlist.count > 0)
using (var head = new zeromq.zframe(workerlist[i]))
using (var body = new zeromq.zframe(content))
replymsg = "beging working...";
i++;
}using (var reply = new zeromq.zframe(replymsg))}}
front.close();
console.writeline("frontserver is closed.");
});task taskbacend = new task(() =>
// 接收工人上線訊息
using (var msg = backend.receivemessage())
if (!workerlist.contains(worker))
console.writeline(" is standby, msg:", worker, info);}}
backend.close();
console.writeline("backendserver is closed.");
});taskfront.start();
taskbacend.start();
}listworkerlist = new list();
/// /// 啟動訂閱客戶端
///
public void startdealerclient()
break;
}using (var content = new zeromq.zframe("task " + datetime.now.timeofday.tostring()))
thread.sleep(10000);
}console.writeline("dealerclient is closed.");
}});
task.start();
}/// /// 啟動訂閱客戶端
///
public void startdealerworker(string id)
while (true)
break;
}using (var msg = worker.receivemessage())}}
console.writeline("backendclient is closed.");
}});
task.start();
}public void stop()
}
開源分布式檔案系統
mogilefs乙個開源的分布式檔案系統 1.應用層 沒有特殊的元件要求 2.無單點失敗 mogilefs啟動的三個元件 儲存節點 跟蹤用的資料庫 均可執行在多個 機器上,因此沒有單點失敗。你也可以將 和儲存節點執行在同一臺機器上,這樣你就沒有必要用4臺機器 推薦至少兩台機器。3.自動的檔案複製 檔...
電商交易系統高併發分布式訂單號生成策略
商交易系統高併發分布式訂單號生成策略 一 要求 1.全域性唯一性,不能重複 2.資訊保安加密防止使用者根據id規則獲取資料 二,策略 1.uuid 唯一識別碼,16個位元組 128位 uuid 有幾個實現版本,比如jdk 自帶的uuid 優點 生成簡單,不占用寬頻,本地生成,資料遷移不影響。缺點 字...
分布式系統關注點 初識 高可用
本文長度為2042字,建議閱讀6分鐘。所有 包裹的文字,只對第一次出現進行高亮顯示。閱讀目錄咳咳,從這篇開始,正式拉開分布式系統關注點中,我認為第二重要的內容 高可用 本篇的要點主要是明確 高可用 的定義,以及了解在分布式系統下哪些環節要做 高可用 為後續要講的策略 方式方案打下基礎。如有1年以上的...