4.2 Orleans消息处理模型
Orleans运行时在Orleans应用服务(包括客户端节点Client及服务节点Silo)内使用了统一的消息处理模型来实现节点内消息的处理与派发逻辑。
Orleans服务集群中的每个Silo服务节点需要同时在客户网关端口及集群内部通信端口上监听来自Orleans客户端的连接请求,以及来自集群内其他Silo服务器的连接请求。Silo节点的应用层逻辑需要处理Orleans集群中传递的三类消息对象:连通性心跳消息Ping、系统消息System和应用消息Application,因此Silo服务节点采用了一种以消息调度器为中心的消息处理模型,将入站和出站消息按照消息类型及处理上下文交由不同的对象处理。
Orleans运行时通过独立的端口监听组件在指定的网络服务端口上监听外部连接请求,并通过连接管理器集中管理本机与外部节点的通信连接,保证网络连接的高效复用及对各个节点间连接状况的实时监测。Orleans运行时中的消息中心(Message Center)则将Orleans网络层抽象为一个只进行异步读写的简单组件,简化了消息调度器中处理消息发送及接收的逻辑。Silo节点的消息处理模型如图4-3所示,其主要由连接监听器(Connection Listener,包含Silo连接监听器和网关连接监听器)、连接对象(Connection包含Silo连接对象和网关连接对象)、连接管理器(Connection Manager)、消息中心(Message Center)、消息调度器(Dispatcher)和消息代理(Message Agent)组成。
而对于Orleans客户端节点而言,其在业务逻辑中总是主动向Silo节点发起并维护连接,而且客户端节点并不需要主动监听外部连接请求,因此客户端节点的消息处理模型相对较为简单(见图4-4),只存在网关管理器(Gateway Manager)、连接对象(Connection)、连接管理器(Connection Manager)及消息中心(Message Center)。