`
zhengdl126
  • 浏览: 2538720 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

ICE-高效的中间件平台

    博客分类:
  • php
阅读更多

http://zhidao.baidu.com/question/88682549.html
http://blog.chinaunix.net/u/29960/showart_262895.html  推荐
http://blog.chaoskey.com/2008/08/23/126/   推荐
http://blog.csdn.net/stopname/archive/2007/07/05/1680068.aspx
http://bbs.yybug.com/read-htm-tid-16264.html

 

 

 

ICE支持分布式的部署管理,消息中间件,以及网格计算等等。

中间件工作模式基本上都是:用户Clinet逻辑功能快--->中间件Clinet模块 ----网络-----> 中间件Server模块 ----->用户Server逻辑功能块。由此可见中间件完成了最繁杂的部分,在使用中间件的时候,开发者只需要专注于业务功能逻辑的实现就可以了,大大缩短了开发时间。




最近育儿网新增了不少新服务,服务间经常会需要相互调用数据,例如用户中心要取博客系统里的文章啊,论坛里发文后要在积分系统里增加用户积分啊。由于设计时这些服务仅仅基于统一的用户中心,服务间基本是独立的,所以要实现这些调用只能在每个服务上新增为其它服务提供服务的服务-_-!。这个时候有几个可选方案,我们开始选择了xml-rpc,基于http和xml的选程调用,用了一段时间,发现维护成本和访问性能都存在问题。


 

由于这些中间服务部署的时候是和各自所属的服务部署在一起的,对这些服务做整体的改动就非常困难,要维护起来就比较麻烦。另外由于是什么http和xml 作为通信协议,由php实现业务逻辑,性能问题也很明显,而且这些http请求都会在http日志留下足迹,导致我们的日志分析很不精确。这个问题不是太大,但很郁闷,所以我们考虑使用ICE来解决这个问题,至于SOAP什么的就不考虑了,同样效率低下。

 

 

 

实现的过程还是比较顺利,花了三天的时间用c++实现了大部分常用的接口,服务端采用deamon的方式运行 ,错误日志记在syslog里(/var /log/messages),客户端PHP,编译进去了IcePHP,调用的方法很简单 。现在还存在一些问题,运行的时候会异常退出,还需要一段时间来解决,暂时加了只狗看着,一旦进程里没了就重新启动。

 

 

--------------------ICE与PHP
    ICE(Internet Communications Engine 网络通讯引擎),是由Corba原核心成员开发的一个开源中间件,据称其各种性能完全优于Corba。除此之外,我们第一次见到了直接支持PHP的中间件。
    ICE的安装,去http://www.zeroc.com/download.html 下载一个Ice针对PHP的安装包,按照说明安装上。
    ICE的使用:使用Slice(ICE的一种简单语法脚本),编写一个xx.ice文件。可以使用slice2cpp或slice2java等生成一个cpp或java的ICE框架程序,然后在这个框架程序中进行代码编写。ICE在PHP的应用继承了PHP的一贯传统——简单,只需要在php.ini中加载该xx.ice,在PHP中就可以使用了。
    ICE在PHP应用中的缺点,无法使用PHP编写Server端,其实这也是PHP的一个缺陷——没有完善的多进程和多线程管理机制。因此,Server端可以采用ICE所支持的其它语言进行编写,比如JAVA/C++/VB/PYTHON等。

 

 

 

 

 

 

 

 

 

 

 


--------------------------------------首先 安装第三方包:  ThirdParty-Sources-3.3.0.tar.gz

http://www.zeroc.com/download/Ice/3.3/ThirdParty-Sources-3.3.0.tar.gz
    解压 ThirdParty-Sources-3.3.0.tar.gz

 

1)mcpp  is a C/C++ preprocessor

—-
解压 mcpp-2.7.tar.gz
$ cd mcpp-2.7
$ patch -p0 < ../mcpp/mcpp-2.7.patch
$ patch -p0 < ../mcpp/mcpp-2.7.patch2

./configure CFLAGS=-fPIC -enable-mcpplib -disable-shared
make
make install

2)Berkeley DB  是一个高性能的,嵌入数据库编程库,和C语言, C++, Java, Perl, Python, Tcl以及其他很多语言都有绑定。
—–
解压 db-4.6.21.NC.tar.gz
$ cd db-4.6.21.NC
$ cd build_unix
$ ../dist/configure -enable-cxx -enable-java
--------------error:
error: no acceptable Java compiler found in $PATH

所以换成../dist/configure
--------------

$ make
$ make install

 


3)bzip2 是 Julian Seward 开发并按照自由软件/开源软件协议发布的数据压缩算法及程序
——
解压 bzip2-1.0.5.tar.gz
$ cd bzip2-1.0.5
$ make -f Makefile-libbz2_so
$ make install


4) expat 是一个 XML parsing C library
——
解压 expat-2.0.1.tar.gz
$ cd expat-2.0.1
$ ./configure
$ make
$ make install

5) openssl 是 Secure Socket Layer (SSL) binary and related cryptographic tools
——–
解压 openssl-0.9.8g.tar.gz
$ cd openssl-0.9.8g
$ ./config
$ make
$ make install

 


//*****************************

--------------------------------------现在正式安装 Ice-3.3.0.tar.gz   附下载

http://www.zeroc.com/download/Ice/3.3/Ice-3.3.0.tar.gz


解压 Ice-3.3.0.tar.gz

???????????????????????????????????? 编译 cpp版本:
$ cd Ice-3.3.0/cpp
$ make
$ make install
特别注意: 如果编译不通过 ,请修改 cpp/config/Make.rules的相关报错第三方库的路径 ,重新编译。还要注意设置ICE的安装目录,比如: prefix = /opt/ICE
修改文件vim cpp/config/Make.rules如下
        DB_HOME        ?= /usr/local/BerkeleyDB.4.3

 

 

 

???????????????????????????????????????????  安装 Ice
cd Ice-3.3.0
# cd config
安装ice3.0.1,有DB_HOME的一行改为
DB_HOME         ?= <Berkley DB的安装目录>
修改文件vim config/Make.rules第76行如下(注意去掉前面的“#”注释):
        DB_HOME        ?= /usr/local/BerkeleyDB.4.3

配一下就开始make吧,有出错信息的话注意看一下lib或是include的地方
make install

 

*******************************//

 

--------------------------------------IcePHP-3.1.1.tar.gz   附下载


----------------?????????????方法一:重新编译PHP
tar xzvf IcePHP-3.1.1.tar.gz

cd IcePHP-3.1.1

cp –r src/ice /home/gaolimin/php-5.2.0/ext    //php的解压位置

cd /home/gaolimin/php-5.2.0

rm-rf configure autom4te.cache //删除php的configure

./buildconf –force //创建支持ice的configure

下面编译php

./configure --prefix=/usr/local/php5.2.0 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-gd --with-zlib --with-png --with-jpeg=/usr/local/lib --with-freetype-

dir=/usr/local/lib --enable-sockets --with-curl --enable-gd-imgstrttf --enable-gb-native-ttf --with-fft --with-sqlite --with-iconv --with-mbstring –with-ice=share,/opt/Ice-

3.1.1 //php支持ice动态共享
make
make install
cp modules/ice.so /usr/local/php5.2.0/include/php/include/

在/usr/local/php5.2.0/lib/php.ini中添加
extension_dir=/usr/local/php5.2.0/include/php/include
extension=ice.so

 

----------------方法二:把icePHP装成php的ext模块

目前ice3.0.1支持php只到5.1.2,这里的配置是把icePHP装成php的ext模块,装的是php 的cgi模式
[安装IcePHP3.0.1]
1  cd /root/software/php-5.1.2
2  cp /root/ice/IcePHP-3.0.1/src/ice/ ext/ -R
3  cp /root/ice/IcePHP-3.0.1/configure-5.1.2.gz configure.gz
4  gunzip configure.gz
5  ./configure --with-mysql=/usr/local/mysql --with-openssl --enable-discard-path --enable-pcntl --enable-sysvmsg --enable-sysvsem  --enable-sysvshm --with-expat-dir=/usr  --

enable-ftp --with-iconv --with-ice=/usr/local/Ice-3.0.1/
6  make;make install

这时在IcePHP-3.0.1目录下有很多test 可惜我没试出,python的东西看不懂,但实际上应该已经通了。
在/usr/local/lib/php.ini 里的[php]下配好ice.options 和ice.slice,这两个选项需要手工加的,ice的中文手册上没有讲的很清,总的来说实际环境时还是可能会有很多乱七八糟的问题。不过配通

以后用c ++和php通过ice通信还是蛮好玩的。

 

 

 

 

rpm -q nginx  查看是否已经安装
查询软件的安装路径:rpm -ql ice-php
rpm -qa|grep ice-php  查看已安装的RMP包


执行php -m 命令查看IcePHP模块有没有被php加载
    在PHP的安装目录下建立如下文件和目录
    /opt/php/etc/ice.slices/    这个目录下存放.ice文件
    /opt/php/etc/ice.profiles    这个文件是.ice文件的配置文件


-------------------------------------- 一个测试的例子
    在安装Ice的时候有一个hello demo把它编译好了执行server文件
    把Hello.ice拷贝到/opt/php/etc/ice.slices/下
    在/opt/php/etc/ice.profiles中添加内容:
    [Profile1]
    ice.slice=/opt/php/etc/ice.slices/Hello.ice
    执行IcePHP中的hello demo

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Ice-3.5.1.zip

    Ice是一款强大的分布式对象中间件,它由ZeroC公司开发,旨在提供一种高效、安全、跨语言的通信机制。Ice-3.5.1是其在201X年发布的一个稳定版本,包含了丰富的功能和改进,对于学习和应用分布式系统开发具有重要的...

    Ice-3.4.2安装包

    Ice-3.4.2安装包是Zeroc公司提供的最新版本的Ice中间件,它是一种高性能、跨平台的通信框架,专为构建分布式应用程序而设计。Ice支持多种编程语言,包括C++、Java、Python、C#等,使得开发者可以方便地在不同语言...

    Ice-3.5.1-4-ThirdParty.7z

    Ice,全称为ZeroC Ice,是一款高性能、跨平台的中间件通信框架,它提供了丰富的语言支持,包括C++、Java、Python等,广泛应用于分布式系统中的服务间通信。在Windows平台上,为了便于开发者快速构建开发环境,ZeroC...

    Ice-3.5.1-demos.tar.gz

    《Ice-3.5.1 Demos:探索高效面向对象中间件的魅力》 在IT行业中,中间件扮演着至关重要的角色,它连接着各种应用程序,使得数据能够在不同的系统间顺畅流动。今天我们要聚焦的是名为Ice的中间件,一个现代、面向...

    Python库 | zeroc_ice-3.7.0-cp36-cp36m-win_amd64.whl

    ICE是附带的接口,使得跨语言和跨平台的分布式计算变得简单。 在Python生态系统中,whl文件是一种预编译的二进制包格式,用于方便安装Python库。这个文件名的结构包含了关于库的信息,如zeroc_ice是库的名称,3.7.0...

    ice-builder-eclipse

    使用ice-builder-eclipse插件,开发人员能够更高效地利用ICE进行分布式系统开发,尤其是在大型、复杂的跨平台项目中,它能够显著提高生产力。此外,由于Eclipse本身拥有丰富的插件生态系统,ice-builder-eclipse还能...

    Ice-3.5.1-third-party-solaris.tar.gz

    Ice,全称为ZeroC Ice,是一款强大的面向对象的中间件,旨在简化分布式系统开发,提供高效的网络通信服务。它不仅具备跨平台特性,允许在多种操作系统环境下运行,而且支持多语言互操作,使得不同编程语言之间的通信...

    linux平台下的ice通信中间件

    Linux平台下的ICE(Internet Communication Engine)通信中间件是一款高效、灵活且可扩展的软件框架,专为构建分布式系统而设计。ICE支持多种编程语言,包括C++、Java、Python、Ruby等,使得开发者可以根据项目需求...

    Ice-3.6.0 (tar.gz)

    Ice-3.6.0是ZeroC公司开发的一款高效、灵活的中间件,用于构建分布式系统。它提供了一种简单而强大的方式来连接跨平台的应用程序,支持多种编程语言,如C++、Java、Python等,使得开发人员可以在不同系统间进行无缝...

    ACE和ICE-高效的网络编程中间平台简介[参照].pdf

    ACE(Adaptive Communication Environment)和ICE(Internet Communications Engine)是两种高效、可移植的网络编程中间平台,常用于构建分布式计算系统。它们旨在解决传统中间件如DCOM(分布式组件对象模型)和...

    Ice-3.3.1 依赖

    其中,Ice(即ZeroC Ice)是一款高效、跨平台的分布式对象中间件,广泛应用于分布式系统开发。本文将深入探讨Ice-3.3.1版本的编译依赖,以帮助开发者顺利安装和使用这一强大的工具。 首先,我们来看到“db-4.6.21....

    Ice-1.3.0_分布式应用(中文版)

    ZeroC ICE 是一款强大的中间件,它提供了一种高效的、类型安全的、跨平台的RPC机制。ICE支持多种编程语言,包括C++、Java、Python等,这使得基于不同语言的系统能够无缝交互。其核心特点包括: 1. **类型安全**:...

    Ice-3.3.1 pdf

    Ice(Internet Communications Engine)是一个强大的跨平台中间件,用于开发分布式系统。它支持多种编程语言,如C++、Java和Python等,并且能够在不同的操作系统之间进行通信。Ice的设计旨在简化复杂系统的构建过程...

    Ice-3.5.0-el6-x86_64-rpm.tar.gz

    Ice 3.5.0 是一款强大的分布式中间件,由 ZeroC 公司开发,用于构建跨语言、跨平台的分布式应用程序。这个版本的 Ice 针对 CentOS 6 系统进行了优化,支持 x86_64 架构,并提供了多种 RPM 包,以满足不同开发需求。 ...

    ice中间件平台_中文教程

    在深入探讨文档内容前,让我们先了解标题中的“ICE中间件平台”,以及它的中文教程。 ICE(Internet Communications Engine)是由ZeroC公司开发的一种面向对象的中间件平台,用于构建分布式应用程序。它提供了一套...

    Ice-3.6.4.zip

    ICE(Internet Communication Engine)是一种高性能、跨平台的分布式中间件,它主要用于构建可扩展的、高并发的应用系统。ICE 3.6.4是该中间件的一个特定版本,提供了C++、C#和Java等多种语言的API,方便开发者在...

    ice源码(Ice-3.4.1.tar.gz)

    ICE提供了一种中间件解决方案,支持C++、Java、Python等多种语言,并且通过其“ Slice”接口定义语言,实现跨语言的序列化和通信。ICE 3.4.1是其稳定的一个版本,包含了大量的优化和改进,为开发者提供了更高效、...

    ice-3.7.3.tar.gz

    Ice,全称为“Integration and Communication Environment”,是由ZeroC公司开发的一种分布式对象中间件,它提供了高效的、跨平台的、面向服务的通信框架。Ice 3.7.3是这个系列的一个版本,其源码的开放对于开发者来...

    Ice-3.6.1的英文版

    Ice-3.6.1是一款由ZeroC公司开发的面向对象中间件平台,提供了一套用于构建分布式应用程序的工具和服务。Ice的英文全称是Internet Communications Engine,直译为“互联网通信引擎”。它支持多种编程语言,并允许...

    ice-3.7.zip 源码

    Ice,全称为ZeroC Ice,是一款跨平台、高性能的分布式对象中间件,它提供了一种轻量级的、面向服务架构(SOA)的解决方案。这个名为“ice-3.7.zip”的压缩包包含了Ice框架的3.7版本源码,对于理解和开发基于Ice的...

Global site tag (gtag.js) - Google Analytics