我们的目标是:
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
};

最新文章

  1. mac 关闭&amp;&amp;显示隐藏文件命令
  2. 【bzoj1951】 Sdoi2010—古代猪文
  3. js webapp 滑动事件
  4. Android 二维码扫描框 加四个角及中间横线自动下滑
  5. IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法
  6. Android微信SDK API 调用教程【转】
  7. sql 游标循环当中重新赋值
  8. VBA实现随意输入组合码,查询唯一标识码
  9. 只看Delphi自带的WnAPI帮助似乎不够
  10. poj 1011 Sticks ,剪枝神题
  11. MFC原理第二讲.MFC的初始化过程
  12. @RequestParam 和@RequestBody 的区别?
  13. 转:win7下git凭据导致无法clone代码
  14. ruby----controller中简单的增删改 方法定义
  15. ES6_入门(1)_let命令
  16. FireDAC 下的 Sqlite [5] - 数据的插入、更新、删除
  17. mysql中的日志
  18. 话谈C#第一天
  19. 对HashMap的理解(一):HashMap的实现
  20. BZOJ 2746: [HEOI2012]旅行问题

热门文章

  1. python学习笔记之列表与元组
  2. Java 并发 – 线程安全?
  3. Tomcat、JBOSS、WebSphere、WebLogic、Apache等技术概述
  4. win7老是弹出“Windows Media PIayer网络共享服务配置应用程序 已停止工作”
  5. 保存Druid的监控记录
  6. 用window的onload事件,窗体加载完毕的时候
  7. Easyui设置动态表格,动态导出数据实例,附Demo
  8. accp8.0转换教材第4章MySQL高级查询(二)理解与练习
  9. ReactiveCocoa源码解析(五) SignalProtocol的observe()、Map、Filter延展实现
  10. Docker部署DVWA