在FFLIB的兩篇介紹中,已經介紹了FFLIB是基於Broker模式構建的框架,核心組件關系圖如下:
http://www.cnblogs.com/zhiranok/archive/2012/07/30/fflib_framework.html
http://www.cnblogs.com/zhiranok/archive/2012/08/08/fflib_tutorial.html
這種情況,比較明顯的瓶頸是Broker 只有一個。在Client 和 Service 節點不斷增多的情況下,單個Broker 將會無法承載。所以本文將探究如何擴展FFLIB 。
其實解決之道也很直接,就是增加Broker 。為了能夠為FFLIB 增加Broker 節點, 參考了Mysql 中的Master/Slave 結構, 設計FFLIB 的多Broker 框架如下圖:
Service 調用注冊服務和接口時只通過Broker Master節點, Master將注冊的服務和接口信息同步給所有的Slave節點,而所有的Service 接口和Client 節點和Slave 都是有連接的,所以不同的Service 就實現了通過不同的Slave 完成消息轉發,實現了負載均衡。而且消息轉發的開銷和原來單個Broker的開銷完全相同。
關於 Master 和 Slave 節點核心通信邏輯如下圖所示:
總結:
- Master/Slave 模式是可選的,但Broker 仍然是可以工作的。
- 源碼 svn co http://ffown.googlecode.com/svn/trunk/
- 構建borker : cd example/broker && make
- 開啟Broker Master(默認就是Master): ./app_broker –l tcp://127.0.0.1:10241
- 開啟BrokerSlave :./app_broker –l tcp://127.0.0.1:10242 -node slave –master_host tcp://127.0.0.1:10241
- 構建Echo 測試Service :cd example/echo_server && make && ./app_echo_server
- 構建 Echo 測試Client:dd example/echo_client && make && ./app_echo_client