ZeroC ICE 是指ZeroC公司的ICE(Internet Communications
Engine)中间件平台。对于客户端和服务端程序的开发提供了很大的便利。
目前ICE平台中包括Ice,Ice-E,Ice Touch。
Ice为主流平台设计,包括Windows和Linux,支持广泛的语
言,包括C++,Java,C#(和其他.Net的语言,例如Visual
Basic),Python,Ruby,PHP和ActionScript。也包括所有的ICE服务,例如Ice
Grid,IceStorm等。
Ice-E是Ice在资源受限的平台上的一个实现,支持C++和嵌入式操作系统,例如Windows
CE,Linux。Ice-E本身不包含任何服务,但是可以利用在Ice上提供的各种服务。因此,通过Ice-E,移动设备也能无缝的集成到分布式系统中。
Ice Touch是为iphone和ipod touch开发的版本,包括Object-C映射,支持Iphone
OS,并为MAC OS X开发图形界面应用程序提供完整的Cocoa框架的访问。
RPC(Remote Procedure Call Protocol
远程过程调用协议),是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC假定某些传输协议的存在,如TCP或UDP,为通讯程序之间携带信息数据;在OSI网络通讯模型中,RPC跨越了传输层和应用层。
Ice通过与编程语言无关的中立语言Slice(Specification Language fro
Ice)来描述服务的接口,从而达到对象接口与其实现想分离的目的。
目前Ice平台支持客户端API的语言有C++、.NET、Java、Python、Object-C、Ruby、PHP、JavaScript等。在服务器可以使用C、.NET、Java、Python等来开发。
关键特性:
支持多语言之间的RPC互通。
高性能的RPC调用。
支持传统的RPC调用、异步调用、One-Way调用、批量发起请求,支持TCP通信、UDP通信等。
多平台支持。
不断更新,与时俱进。
下面是各个主流rpc框架(ice、dubbo、thrift、grpc)的性能对比,请自己观看:
对比总结:
从测试结果可以看出ice的tps遥遥领先,而且并发越高tps比其他越高,其次thrift,dubbo和grpc则差了很多。Grpc最差估计跟用了HTTP2有关。
另外dubbox还支持rest,官方测试rest比kyro要慢1.5倍,本次未对rest测试。
从功能完备性来说ice和dubbo都算比较完备,都有大型生产案例,thrift的服务化功能比较缺失,grpc可能还不够成熟。
Dubbo的插件化机制的确不错,ice初次接触有些概念比较晦涩,经过封装和有详细的资料后要好上许多。
另外《Zeroc Ice权威指南》作者Leader-us对ice的测试结果如下:
Leader-us测试结果Ice则是2.5万,性能差不多是Avro的一倍,综合起来看Avro和thrift的性能应该差不多。
1.Apache
Avro框架简单,非接口编译的模式灵活度很高,用Json定义的RPC消息结构和方法简单并容易理解
2.Http协议的编码和传输机制效率远远低于长连接的Socket模式,本机对比了Avro的Http协议与Netty实现的Socket协议,请求应答消息相同的情况下,HTTP的TPS是500左右,而Netty
Socket模式则是1.5万左右,相差很悬殊
3.多语言客户端支持并不是那么容易的事情,Avro的Python客户端目前只实现了基本的Http协议,(Java的同时实现了Netty客户端协议),这种情况下,服务端只能也采用Http协议,从而导致并发性能问题
ZeroC ICE框架的开发是需要依赖如下的环境。
环境安装参考资料:
安装《VMware安装Linux教程》地址:http://blog.csdn.net/yuan_xw/article/details/49827477
安装《Linux网络配置与远程连接》地址:http://blog.csdn.net/yuan_xw/article/details/49945007
安装《Linux安装JDK及环境变量配置》地址:http://blog.csdn.net/yuan_xw/article/details/49948285
所使用到的技术/环境版本:
环境 | 名称 | 版本 |
---|---|---|
操作系统 | CentOS | 7.x |
运行环境 | JDK | 1.8+ |
分布式框架 | ZeroC ICE | 3.7.0 |
开发框架 | Spring | 4.3.9 |
执行命令:
systemctl stop firewalld.service
systemctl disable firewalld.service
执行命令:yum install -y wget
执行命令:
cd /etc/yum.repos.d
wget https://zeroc.com/download/Ice/3.7/el7/zeroc-ice3.7.repo
yum install ice-all-runtime ice-all-devel -y
yum install libfreeze-c++-devel freeze-utils -y
执行命令:
cd /etc
icegridregistry –Ice.Config=icegridregistry.conf&
执行命令:
vim /etc/icegridnode.conf
mkdir -p /var/lib/ice/icegrid/node1
执行命令:
cd /etc
icegridnode –Ice.Config=icegridnode.conf&
安装完Ice-3.7.0.msi后开始配置机器环境变量:
—-在我的电脑点击右键,选择属性
—-在高级里面选择环境变量
—-在系统变量里选择Path
–双击Path
在计算机的的环境变量的路径Path中添加:D:\Program
Files\ZeroC\Ice-3.7.0\bin