- 浏览: 2538720 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
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
- IcePHP-3.1.1.tar.gz (411 KB)
- 下载次数: 7
- Ice-3.3.0.tar.gz (4.1 MB)
- 下载次数: 7
发表评论
-
wamp 升级php apache mysql
2014-02-18 14:30 1187wamp对于日常开发来说会增添非常大的方便 但是对于集成 ... -
[被震撼到了]我的2009年自我反省【也名10问PHP程序员】php程序员进阶篇
2012-10-29 11:22 10061.首先看了PHP的源码API函数 ,对于许多口水仗的争论一 ... -
五种常见的PHP设计模式
2012-08-15 13:37 1097原文地址:http://www.ibm.com/develop ... -
PHP的Realpath Cache
2012-07-03 09:53 3756PHP的缓存有很多种,包括输出缓冲(ob系列函数),opcod ... -
nginx+php-fmp 内存不释放
2012-06-20 11:01 5231由于服务器只有600M的内 ... -
[转]探究php底层运行机制
2012-04-17 14:36 2095http://www.myext.cn/Article/921 ... -
APC 缓存
2012-04-16 16:22 6111APC主要有两个作用,一是将php的编译缓存保存在共享内存中, ... -
【汇总】PHP-FPM 配置优化
2012-02-25 11:41 17345http://www.linuxidc.com/Linux/2 ... -
【推荐转载】谁贪占了我的系统资源 php-fpm
2012-02-16 14:12 1368测试人员向我们反映:在Facebook平台的游戏比其它平台 ... -
php代码性能分析工具:XHProf
2012-01-30 15:11 4887http://www.ooso.net/archives/52 ... -
神奇的Fastcgi_Finish_Request
2012-01-17 10:52 1251当PHP运行在FastCGI模式时,PHP FPM提供了一个名 ... -
PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0 解决办法
2011-11-07 17:18 3390;extension=php_xdebug.dll z ... -
【转】php 程序员
2011-11-05 12:01 947http://www.blags.org/php-pro ... -
cookies之PHPSESSID
2011-10-24 21:52 2950// 设置str function get_cooki ... -
并发同步
2011-10-11 14:26 1450============================= ... -
PHP核心编译配置选项列表
2011-09-15 11:21 1227PHP 的编译配置详细选项 ... -
Hudson_CI:PHP持续集成
2011-09-09 16:29 3095一、持续集成的概念 概念网上很多了,这里就不再详细说了。 ... -
try{}catch{}
2011-07-22 15:13 1217<?php /* 检测(try)、抛出(th ... -
PHP内存溢出Allowed memory size of 解决办法
2011-07-01 12:57 20595============================All ... -
?php消息队列
2011-06-22 09:45 2425php-通过共享内存实现消息队列和进程通信的两个类 h ...
相关推荐
Ice是一款强大的分布式对象中间件,它由ZeroC公司开发,旨在提供一种高效、安全、跨语言的通信机制。Ice-3.5.1是其在201X年发布的一个稳定版本,包含了丰富的功能和改进,对于学习和应用分布式系统开发具有重要的...
Ice-3.4.2安装包是Zeroc公司提供的最新版本的Ice中间件,它是一种高性能、跨平台的通信框架,专为构建分布式应用程序而设计。Ice支持多种编程语言,包括C++、Java、Python、C#等,使得开发者可以方便地在不同语言...
Ice,全称为ZeroC Ice,是一款高性能、跨平台的中间件通信框架,它提供了丰富的语言支持,包括C++、Java、Python等,广泛应用于分布式系统中的服务间通信。在Windows平台上,为了便于开发者快速构建开发环境,ZeroC...
《Ice-3.5.1 Demos:探索高效面向对象中间件的魅力》 在IT行业中,中间件扮演着至关重要的角色,它连接着各种应用程序,使得数据能够在不同的系统间顺畅流动。今天我们要聚焦的是名为Ice的中间件,一个现代、面向...
ICE是附带的接口,使得跨语言和跨平台的分布式计算变得简单。 在Python生态系统中,whl文件是一种预编译的二进制包格式,用于方便安装Python库。这个文件名的结构包含了关于库的信息,如zeroc_ice是库的名称,3.7.0...
使用ice-builder-eclipse插件,开发人员能够更高效地利用ICE进行分布式系统开发,尤其是在大型、复杂的跨平台项目中,它能够显著提高生产力。此外,由于Eclipse本身拥有丰富的插件生态系统,ice-builder-eclipse还能...
Ice,全称为ZeroC Ice,是一款强大的面向对象的中间件,旨在简化分布式系统开发,提供高效的网络通信服务。它不仅具备跨平台特性,允许在多种操作系统环境下运行,而且支持多语言互操作,使得不同编程语言之间的通信...
Linux平台下的ICE(Internet Communication Engine)通信中间件是一款高效、灵活且可扩展的软件框架,专为构建分布式系统而设计。ICE支持多种编程语言,包括C++、Java、Python、Ruby等,使得开发者可以根据项目需求...
Ice-3.6.0是ZeroC公司开发的一款高效、灵活的中间件,用于构建分布式系统。它提供了一种简单而强大的方式来连接跨平台的应用程序,支持多种编程语言,如C++、Java、Python等,使得开发人员可以在不同系统间进行无缝...
ACE(Adaptive Communication Environment)和ICE(Internet Communications Engine)是两种高效、可移植的网络编程中间平台,常用于构建分布式计算系统。它们旨在解决传统中间件如DCOM(分布式组件对象模型)和...
其中,Ice(即ZeroC Ice)是一款高效、跨平台的分布式对象中间件,广泛应用于分布式系统开发。本文将深入探讨Ice-3.3.1版本的编译依赖,以帮助开发者顺利安装和使用这一强大的工具。 首先,我们来看到“db-4.6.21....
ZeroC ICE 是一款强大的中间件,它提供了一种高效的、类型安全的、跨平台的RPC机制。ICE支持多种编程语言,包括C++、Java、Python等,这使得基于不同语言的系统能够无缝交互。其核心特点包括: 1. **类型安全**:...
Ice(Internet Communications Engine)是一个强大的跨平台中间件,用于开发分布式系统。它支持多种编程语言,如C++、Java和Python等,并且能够在不同的操作系统之间进行通信。Ice的设计旨在简化复杂系统的构建过程...
Ice 3.5.0 是一款强大的分布式中间件,由 ZeroC 公司开发,用于构建跨语言、跨平台的分布式应用程序。这个版本的 Ice 针对 CentOS 6 系统进行了优化,支持 x86_64 架构,并提供了多种 RPM 包,以满足不同开发需求。 ...
在深入探讨文档内容前,让我们先了解标题中的“ICE中间件平台”,以及它的中文教程。 ICE(Internet Communications Engine)是由ZeroC公司开发的一种面向对象的中间件平台,用于构建分布式应用程序。它提供了一套...
ICE(Internet Communication Engine)是一种高性能、跨平台的分布式中间件,它主要用于构建可扩展的、高并发的应用系统。ICE 3.6.4是该中间件的一个特定版本,提供了C++、C#和Java等多种语言的API,方便开发者在...
ICE提供了一种中间件解决方案,支持C++、Java、Python等多种语言,并且通过其“ Slice”接口定义语言,实现跨语言的序列化和通信。ICE 3.4.1是其稳定的一个版本,包含了大量的优化和改进,为开发者提供了更高效、...
Ice,全称为“Integration and Communication Environment”,是由ZeroC公司开发的一种分布式对象中间件,它提供了高效的、跨平台的、面向服务的通信框架。Ice 3.7.3是这个系列的一个版本,其源码的开放对于开发者来...
Ice-3.6.1是一款由ZeroC公司开发的面向对象中间件平台,提供了一套用于构建分布式应用程序的工具和服务。Ice的英文全称是Internet Communications Engine,直译为“互联网通信引擎”。它支持多种编程语言,并允许...
Ice,全称为ZeroC Ice,是一款跨平台、高性能的分布式对象中间件,它提供了一种轻量级的、面向服务架构(SOA)的解决方案。这个名为“ice-3.7.zip”的压缩包包含了Ice框架的3.7版本源码,对于理解和开发基于Ice的...