高性能分布式应用开发中间件ICE简介
2014-06-16 20:27
246 查看
http://lanhy2000.blog.163.com/blog/static/436786082012327449775/
作为一个技术人员,你是否在为不断增长的数据量和日益复杂的业务逻辑而头疼不已,杂乱堆砌在一起的庞大业务让系统越来越脆弱,于是你想到了网格,想到了利用分布式来重组一个健壮的系统架构。
随后,RMI,EJB, WebService,Hessian,http invoke…..一堆名词铺天盖地的向你袭来。面对这么多的技术实现,我们似乎有点难以抉择。EJB太过笨重,webservice的性能似乎有待商榷。http invoker似乎还不如webservice,Hession的功能似乎又太过简单….
一个面向对象的,性能极高的,平台和语言无关的分布式应用中间件平台,ICE就是这么一个应该被收入我们技术人员工具箱的必备利器。
The Internet Communications Engine
分布式应用中间件平台 ICE
一.来源和定义
ICE是由一些前CORBA阵营中的领军人物创建的ZeroC公司推出的旗舰产品。ICE开放源码遵循GPL协议,目前已经有包括 Lockheed Martin , Skype , Hewlett-Packard , Naval
Undersea Warfare Center 以及国内的CCTVnet,Tencent 等等非常多的公司和机构采用其产品,并基于该产品构建自己的分布式应用系统。
那么,ICE是个什么东西呢?我们能用它做什么呢?
ICE的定义:Ice是一个支持多语言映射的,面向对象的用于构建分布式应用系统的中间件平台。
ICE目前支持到C++, Java, .NET, Python, PHP, Ruby, and Objective-C等多种语言的映射。同时他的分支Ice-E支持使用网络的智能手机,PDA甚至是嵌入式控制器等网络设备.
目前ICE的最新版本是3.4.1,因为目前我们仍然在使用3.3.1,所以之后的内容都会基于3.3.1版本。
二.ICE的特点
ICE相比较其他分布式中间件来讲,具有如下优点:
①提供适用于异种环境的面向对象中间件平台.
②提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现.
③提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。
④避免不必要的复杂性,使平台更易于学习和使用。
当然,ICE也有其自身的缺点:
①需要使用slice语言进行接口和对象设计.
②编译前确认,静态的接口。
③接口或对象更新需要重新生成映射并分发,部署更新.
三.ICE提供的功能
ICE提供了足够全面和完善的功能特性,使其能应用在各种实际的生产环境中. ICE包含的主要功能如下:
①IceRunTime内建提供的多线程处理。
②直接代理对象,组对象和动态代理对象(需要LocationService),组对象。
③异步接口回调和基于流的动态分发(支持防火墙穿透)。
④基于TCP/IP的高性能单路,批量单路调用 和 基于UDP的数据包,批量数据包调用。
此外,ICE还提供了多种服务,包括:
①Glacier2服务(Ice的防火墙解决方案,双向链接通讯,数据采用SSL加密)
②IceFreeze服务(默认基于Berkeley DB的对象持久化服务)
③IceStorm服务(Ice的消息服务,支持作为federated服务运行)
④IcePatch服务(Ice的补丁更新服务,一般采用Glacier2来保证不被非法下载)
⑤IceGrid服务(网格计算服务,包含了动态部署,自动更新,按需启动,负载均衡,状态监测和自我恢复)是旧版本中IcePack的增强版,整合了其他服务。
四.ICE的用途
尽管ICE提供了极为全面和完善的功能,使其能应用在各种实际的生产环境中. 但我个人认为其在如下场景中能最大化发挥其优点:
①整合业务线中的通用服务或核心服务(如用户积分系统)。
②流量极高的小数据消息服务(如统一的远程日志统计系统)。
③性能要求苛刻的对外系统服务(如提供给第三方的API接口)。
http://yangguo.iteye.com/blog/1096630
Ice 是一种面向对象的中间件平台。从根本上说,这意味着 Ice 为构建面向对象的客户-服务器应用提供了工具、 API 和库支持。 Ice 应用适合在异构环境中使用:客户和服务器可以用不同的编程语言编写,可以运行在不同的操作系统和机器架构上,并且可以使用多种网络技术进行通信。无论部署环境如何,这些应用的源码都是可移植的。
在介绍 Ice 工作原理之前,有必要来了解一下 Slice语言。
Slice( Specification Language for Ice )是一种用于使对象接口与其实现相分离的基础性抽象机制。 Slice 在客户与服务器之间建立合约,描述应用所使用的各种类型及对象接口。这种描述与实现语言无关,所以编写客户所用的语言是否与编写服务器所用的语言相同,这没有什么关系。 Slice 定义由编译器编译到特定的实现语言 。编译器把与语言无关的定义翻译成针对特定语言的类型定义和 API 。开发者使用这些类型和 API 来提供应用功能,并与 Ice 交互。用于各种实现语言的翻译算法称为语言映射( language mappings )。 Ice 目前定义了 C++, Java, C#, Python, Objective-C, Ruby, PHP. 的语言映射。 Slice 定义的文件扩展名为 .ice 。
以上是官方文档的表述,难以形成清晰的概念,如果用一种不太严谨但更容易理解的话来讲,
Slice是一种用于定义接口的中间语言。
Ice为每种其所支持的语言 ( 以下称宿主语言 ) 提供了相关编译器,假设语言为 XXX, 则编译命令一般为slice2XXX, 用于为 slice 文件生成相对应的用宿主语言定义的映射代码,以辅助服务端或客户端的开发。
有了Slice 语言的基本概念,理解 Ice 的工作原理变得容易,下图很好地呈现了 Ice 的工作原理及执行流程:
![](http://yangguo.iteye.com/upload/picture/pic/92522/37aa72d1-f13d-35f1-8821-bd5b994fb6dc.png)
1. 首先用slice 语言编写好“接口”
2. 接口编好后,自然要去实现它,这时可以选择任一种宿主语言去实现该接口。本图例用的是C++ 。用相应编译器生成辅助代码后,开发者在此基础上进行业务逻辑的开发。实现接口的一方通常作为服务端,可利用 Ice 提供的 api 发布服务。
3. 作为调用方,同样可以选择任一种宿主语言。本图例是用Java 。
4. 服务端运行后,客户端便可调用其提供的接口。Ice 为我们屏蔽了底层的通讯细节。
总结,以上两篇博文分别介绍了ICE中间件的用途和编写语言。下一篇博文中,我将以C#编程语言为例,编写一个ICE端、客户端、服务端的demo。
作为一个技术人员,你是否在为不断增长的数据量和日益复杂的业务逻辑而头疼不已,杂乱堆砌在一起的庞大业务让系统越来越脆弱,于是你想到了网格,想到了利用分布式来重组一个健壮的系统架构。
随后,RMI,EJB, WebService,Hessian,http invoke…..一堆名词铺天盖地的向你袭来。面对这么多的技术实现,我们似乎有点难以抉择。EJB太过笨重,webservice的性能似乎有待商榷。http invoker似乎还不如webservice,Hession的功能似乎又太过简单….
一个面向对象的,性能极高的,平台和语言无关的分布式应用中间件平台,ICE就是这么一个应该被收入我们技术人员工具箱的必备利器。
The Internet Communications Engine
分布式应用中间件平台 ICE
一.来源和定义
ICE是由一些前CORBA阵营中的领军人物创建的ZeroC公司推出的旗舰产品。ICE开放源码遵循GPL协议,目前已经有包括 Lockheed Martin , Skype , Hewlett-Packard , Naval
Undersea Warfare Center 以及国内的CCTVnet,Tencent 等等非常多的公司和机构采用其产品,并基于该产品构建自己的分布式应用系统。
那么,ICE是个什么东西呢?我们能用它做什么呢?
ICE的定义:Ice是一个支持多语言映射的,面向对象的用于构建分布式应用系统的中间件平台。
ICE目前支持到C++, Java, .NET, Python, PHP, Ruby, and Objective-C等多种语言的映射。同时他的分支Ice-E支持使用网络的智能手机,PDA甚至是嵌入式控制器等网络设备.
目前ICE的最新版本是3.4.1,因为目前我们仍然在使用3.3.1,所以之后的内容都会基于3.3.1版本。
二.ICE的特点
ICE相比较其他分布式中间件来讲,具有如下优点:
①提供适用于异种环境的面向对象中间件平台.
②提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现.
③提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。
④避免不必要的复杂性,使平台更易于学习和使用。
当然,ICE也有其自身的缺点:
①需要使用slice语言进行接口和对象设计.
②编译前确认,静态的接口。
③接口或对象更新需要重新生成映射并分发,部署更新.
三.ICE提供的功能
ICE提供了足够全面和完善的功能特性,使其能应用在各种实际的生产环境中. ICE包含的主要功能如下:
①IceRunTime内建提供的多线程处理。
②直接代理对象,组对象和动态代理对象(需要LocationService),组对象。
③异步接口回调和基于流的动态分发(支持防火墙穿透)。
④基于TCP/IP的高性能单路,批量单路调用 和 基于UDP的数据包,批量数据包调用。
此外,ICE还提供了多种服务,包括:
①Glacier2服务(Ice的防火墙解决方案,双向链接通讯,数据采用SSL加密)
②IceFreeze服务(默认基于Berkeley DB的对象持久化服务)
③IceStorm服务(Ice的消息服务,支持作为federated服务运行)
④IcePatch服务(Ice的补丁更新服务,一般采用Glacier2来保证不被非法下载)
⑤IceGrid服务(网格计算服务,包含了动态部署,自动更新,按需启动,负载均衡,状态监测和自我恢复)是旧版本中IcePack的增强版,整合了其他服务。
四.ICE的用途
尽管ICE提供了极为全面和完善的功能,使其能应用在各种实际的生产环境中. 但我个人认为其在如下场景中能最大化发挥其优点:
①整合业务线中的通用服务或核心服务(如用户积分系统)。
②流量极高的小数据消息服务(如统一的远程日志统计系统)。
③性能要求苛刻的对外系统服务(如提供给第三方的API接口)。
http://yangguo.iteye.com/blog/1096630
Ice 是一种面向对象的中间件平台。从根本上说,这意味着 Ice 为构建面向对象的客户-服务器应用提供了工具、 API 和库支持。 Ice 应用适合在异构环境中使用:客户和服务器可以用不同的编程语言编写,可以运行在不同的操作系统和机器架构上,并且可以使用多种网络技术进行通信。无论部署环境如何,这些应用的源码都是可移植的。
Slice语言
在介绍 Ice 工作原理之前,有必要来了解一下 Slice语言。Slice( Specification Language for Ice )是一种用于使对象接口与其实现相分离的基础性抽象机制。 Slice 在客户与服务器之间建立合约,描述应用所使用的各种类型及对象接口。这种描述与实现语言无关,所以编写客户所用的语言是否与编写服务器所用的语言相同,这没有什么关系。 Slice 定义由编译器编译到特定的实现语言 。编译器把与语言无关的定义翻译成针对特定语言的类型定义和 API 。开发者使用这些类型和 API 来提供应用功能,并与 Ice 交互。用于各种实现语言的翻译算法称为语言映射( language mappings )。 Ice 目前定义了 C++, Java, C#, Python, Objective-C, Ruby, PHP. 的语言映射。 Slice 定义的文件扩展名为 .ice 。
以上是官方文档的表述,难以形成清晰的概念,如果用一种不太严谨但更容易理解的话来讲,
Slice是一种用于定义接口的中间语言。
Slice语言编译
Ice为每种其所支持的语言 ( 以下称宿主语言 ) 提供了相关编译器,假设语言为 XXX, 则编译命令一般为slice2XXX, 用于为 slice 文件生成相对应的用宿主语言定义的映射代码,以辅助服务端或客户端的开发。
Ice基本原理
有了Slice 语言的基本概念,理解 Ice 的工作原理变得容易,下图很好地呈现了 Ice 的工作原理及执行流程:![](http://yangguo.iteye.com/upload/picture/pic/92522/37aa72d1-f13d-35f1-8821-bd5b994fb6dc.png)
1. 首先用slice 语言编写好“接口”
2. 接口编好后,自然要去实现它,这时可以选择任一种宿主语言去实现该接口。本图例用的是C++ 。用相应编译器生成辅助代码后,开发者在此基础上进行业务逻辑的开发。实现接口的一方通常作为服务端,可利用 Ice 提供的 api 发布服务。
3. 作为调用方,同样可以选择任一种宿主语言。本图例是用Java 。
4. 服务端运行后,客户端便可调用其提供的接口。Ice 为我们屏蔽了底层的通讯细节。
总结,以上两篇博文分别介绍了ICE中间件的用途和编写语言。下一篇博文中,我将以C#编程语言为例,编写一个ICE端、客户端、服务端的demo。
相关文章推荐
- 高性能Socket组件和RPC,让你像写本地代码一样开发网络应用和分布式程序
- ICE 分布式中间件开发VS 分布式开发之ACE
- ICE 分布式中间件开发VS 分布式开发之ACE
- [原创]分布式系统开发学习之CS模式(二) - CS模式的限制与应用及Scalability的补充讨论
- [ASP.NET学习笔记之六]开发高性能的ADO.NET应用
- 微软70-536考试教材:.net framework2.0 应用开发基础书籍简介.属于MCTS自学教材
- 基于ACIS/HOOPS的3D应用开发简介
- 开发第一个分布式的j2ee应用
- 分布式数据库应用开发正解[转载]
- 基于.Net Framework的N层分布式应用开发
- 第一节 分布式多层数据库开发简介
- Java.util包简介并教您如何开发应用
- [原创]分布式系统开发学习之CS模式(一) --- 简介
- Java.util包简介并教您如何开发应用之二 (3)
- Java.util包简介并教您如何开发应用之二 (2)
- 基于.Net Framework的N层分布式应用开发
- 中间件——构筑复杂分布式应用的关键技术
- Java.util包简介并教您如何开发应用之二 (1)
- NETCF开发之POOM应用开发——简介
- Maven 应用小简介 (注:maven2是指在maven1后重新开发的maven,如同java与java2)