ZeroC ICE(一) ZeroC ICE入门学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuan_xw/article/details/78906990

ZeroC ICE入门学习

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等来开发。

  1. 关键特性:

  2. 支持多语言之间的RPC互通。

  3. 高性能的RPC调用。

  4. 支持传统的RPC调用、异步调用、One-Way调用、批量发起请求,支持TCP通信、UDP通信等。

  5. 多平台支持。

  6. 不断更新,与时俱进。

ZeroC ICE原理图

这里写图片描述

  1. ZeroC ICE通讯原理图

这里写图片描述

  1. Ice RPC架构图

RPC框架的性能对比

下面是各个主流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框架的开发是需要依赖如下的环境。

环境安装参考资料:

  1. 安装《VMware安装Linux教程》地址:http://blog.csdn.net/yuan_xw/article/details/49827477

  2. 安装《Linux网络配置与远程连接》地址:http://blog.csdn.net/yuan_xw/article/details/49945007

  3. 安装《Linux安装JDK及环境变量配置》地址:http://blog.csdn.net/yuan_xw/article/details/49948285

  4. 所使用到的技术/环境版本:

环境 名称 版本
操作系统 CentOS 7.x
运行环境 JDK 1.8+
分布式框架 ZeroC ICE 3.7.0
开发框架 Spring 4.3.9

ZeroC ICE 安装

  1. 关闭防火墙:

执行命令:

systemctl stop firewalld.service

systemctl disable firewalld.service

  1. 安装wget命令:

执行命令:yum install -y wget

  1. 安装ZerocIce:

执行命令:

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

修改注册中心配置

  1. 修改注册中心配置文件:/etc/icegridregistry.conf

这里写图片描述

  1. 测试安装是否成功:

执行命令:

cd /etc

icegridregistry –Ice.Config=icegridregistry.conf&

这里写图片描述

修改node节点配置

  1. 修改node节点配置icegridnode.conf,将node注册到注册中心上:
    /etc/icegridnode.conf

执行命令:

vim /etc/icegridnode.conf

这里写图片描述

  1. 创建数据目录:

mkdir -p /var/lib/ice/icegrid/node1

  1. 测试安装是否成功:

执行命令:

cd /etc

icegridnode –Ice.Config=icegridnode.conf&

Windows客户端安装

  1. 进入 ZeroC Ice 官网下载
    这里写图片描述
  2. 双击进入安装,点击Next
    这里写图片描述
  3. 点击Install,进行下一步
    这里写图片描述
  4. 点击Finish安装完成
    这里写图片描述

  5. 配置环境变量

安装完Ice-3.7.0.msi后开始配置机器环境变量:

—-在我的电脑点击右键,选择属性

—-在高级里面选择环境变量

—-在系统变量里选择Path

–双击Path

在计算机的的环境变量的路径Path中添加:D:\Program
Files\ZeroC\Ice-3.7.0\bin

这里写图片描述

  1. 打开Ice
    执行命令:
    这里写图片描述

连接Ice

  1. 依照下图进行连接:
    这里写图片描述
  2. 安装步骤,选择Manual Endpoint选择,进行下一步:
    这里写图片描述
  3. 选择IP地址、端口号进行连接
    这里写图片描述
  4. 输入IP地址、端口号,选择协议:TCP,点击下一步:Next选项
    这里写图片描述
  5. 自定义登录的用户名、密码
    这里写图片描述
  6. 使用客户端连接成后,可以显示已经有node1节点了
    这里写图片描述

学习ZeroC ICE推荐书籍:

  1. 《ZeroC Ice权威指南》
阅读更多
换一批

没有更多推荐了,返回首页