ICE各核心工作原理
文章来自:百度文库
PPT1 运行时环境
Ice作为一个中间件产品,其使用过程中,有运行时(也称mn time)环境和开发环境两部分。
图 Ice核心功能的模块组成图
可见,Ice核心功能实际上由六大子系统模块共同分担,分别是通信模块、对象适配模块、线程模块、调用/分派模块、桩和框架模块和插件模块。
PPT2 通信模块
Icc的通信子系统主要负责对网络连接的管理,涉及范围包括端点、引用、连接及它们的相互关系。
利用端点信息可寻址一台主机,端点信息包括协议类型、寻址信息等。
引用包含了servant的标识:Identity+facet。一个引用包含一个Identity,但可包含多个端点,这意味着,可以选择任意一个满足要求的端点定位服务器。
连接一旦被成功构造,对于TCP意味着连接已经建立,对于UDP意味着会话套接字创建完成。
Ice中通过引用获得连接的方式为负载平衡和容错提供了基础。(多台服务器可提供相同的服务,客户随机的连接其中一台请求服务,假如有的服务器出了故障无法接受连接,亦可尝试同其它的服务器建立连接。)(括号里的话作为讲述,可不写在PPT中)
PPT3 线程模块
Ice是多线程的。在服务器端,一个线程池使用领导者一跟随者模式来分派到来的操作调用。(线程池的尺寸是可以配置的;把线程池尺寸设成1,就可以进行单线程服务器操作)
领导者—跟随者模型是典型的线程池模型所使用的模式。每次允许一个线程1eader等待在事件源集合上。同时其他线程follower排队等候成为领导者的机会。leader检测到事件后,马上转入follower并提升一个follower为leader,然后直接处理事件,这时处于processer角色,处理完成后成为follower。
(是否需要随后的5张图,需要讨论)
PPT4 对象适配器模块
当服务器端收到请求信息时,要将请求分派给合适的senvant,对象适配器就负责由请求信息至请求的对象之间的适配工作。对象适配子系统主要是应用于Ice的服务器端。
图 servant对象被查找的映射示意图
PPT5 调用分派模块
Ice支持同步调用、异步调用、单向调用、数据报调用和批调用,但特定的传输机制只支持特定的调用类型。
(同步调用:提供“最多一次”语义,往常需要进行非常保守的错误恢复,ICE中进行了改进,可以从有些网络故障中透明地恢复)
(异步调用:客户提供回调对象,由服务器用于递送调用的结果)
(单向调用:于任何没有返回值、out参数或异常的操作,Ice能让客户发出单向调用)
(数据报调用:数据报调用可用在需要通过局域网分发大量事件的情况下)
(批调用:Ice允许你成批发出单向和数据报调用。Icc 会把批调用放在客户端的
缓冲区中,而不是立刻发送它们)
ICE为服务器端提供了同步调用分派模式和异步调用分派模式。
PPT6 桩和骨架模块
对中间件而言,当接口定义编译时,为客户端所生成的是桩,为服务器端生成的是骨架,桩和骨架都是把接口的操作定义映射到Icc核心模块调用的一些辅助类。
(桩:需要进一步查找相关资料)
(骨架:服务器端骨架与客户端存根对应,客户端存根用于编组参数、向下调用、解组返回值,服务器端骨架用于解组参数、向上调用、编组返回值。)
PPT7 插件模块
插件是Ice为了扩展Ice通信器特性所专门使用的机制。
(插件是一段可执行程序,可以单独编译和测试,但不能单独执行,它由主程序根据功能需要“既插既用”的调用。插件与主程序相对独立,只要保证一致的接口,双方内部的改动互不影响。)