1. 程式人生 > >GateSvr的設計2

GateSvr的設計2

我們 service int bsp 分享 truct client http art

我們的目標是:
1、業務Server集群部署,從網關發來的請求處理,程序自動找一臺空閑的業務Server來處理這個請求,並將結果異步分發到服務網關,從而Push給客戶端;
2、一套業務Server掛了不會影響整個服務端程序運行;
3、當Req過載時,即發送的大量請求在服務端堆積時,服務端“熱部署”掛一個新的Req-Server,而不需要重新啟動服務端程序;

約束條件:
1、前端暫時用tcp連接
2、服務內部可以用zmq連接

服務提供一個Router套接字a,供worker連接,worker封裝服務標識信封,以區分不同worker service, 另提供一個Router套接字(也可共用a),供client連接,收發client包;

應用面向服務的可靠隊列(管家模式)

技術分享


Broker基本的數據結構:

struct worker
{
std::string m_identity; // Address of worker
service * m_service; // Owning service, if known
int64_t m_expiry; // Expires at unless heartbeat
};

struct service
{
std::string m_name; // Service name
std::list<worker*> m_waiting; // List of waiting workers
size_t m_workers; // How many workers we have
};

class broker {
std::map<std::string, service*> m_services; // Hash of known services
};

GateSvr的設計2