MyCluster服务调用

MyCluster一个最重要的功能是抽象并简化跨进程跨节点的RPC调用,让开发人员:

  1. 不关心远端服务的部署(IP地址、端口号);
  2. 不关心远端服务的IP地址,端口号是否发生变化,不想因为他变化而修改我的代码;
  3. 不想知道远端服务是否是多实例,不想去解决负载均衡的问题,除非业务中指定了向某一固定远端服务的实例发送消息;
  4. 可以随意增加一个新的服务,因为部署极其简单,不想去考虑新增服务端口号是否冲突之类的部署问题;
  5. ……


设计原则:

  1. 对计算节点进行抽象,每个节点维护一个服务端口,监听其他节点发来的服务调用请求或本节点发出去的响应消息。
  2. 每个计算节点主要有4类可执行程序:msgbus、container、monitor和logger。
  3. msgbus负责跨节点的消息收发,msgbus与同节点的container通过共享内存直接交互。
  4. container为服务容器,开发人员按照一定的接口规范编写特定的业务动态库插件,由monitor负责自动加载。
  5. 同节点调用,不走网络,走共享内存。同一服务共享一个Input MsgQ,用于放请求消息,服务的每个container实例内部也有一个Input MsgQ,用于放响应消息(或指定路由的请求消息),这是因为:a)各Container根据自己的负载状态主动从共享的请求MsgQ中拉消息;b)请求消息可以任意分发到一个实例去处理,但响应消息必须原路返回,谁发出去的请求,必须回到谁那。c)如果要求指定发往哪个实例,自然不必多说。
  6. 跨节点调用走网络。
  7. 支持Java/C++/Python的Container,本文只介绍C++ Container,后面章节再详细介绍Java/Python版的Container。


服务调用流程:









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值