文章分类 - ICE
摘要:新鲜事服务相关知识学习服务部署方式icegrid学习(registry>>node>>icebox>>service>>*.so)新鲜事服务处理流程(feedassistant完成数据的前期处理,feedassistantN再次处理,然后dispatch,存入feedcache,由feednews取出cache中的数据,交给feedview处理)日报2011-11-151.学习了feedview下的代码,重要内容(feedviewI.cc;expandfeed.cc;body.inc;storage.inc;typetable.inc)渲染工作就
阅读全文
摘要:张铁安:我今天跟大家分享这个内容是人人网系统架构,里面我们会讲到跟新鲜事相关的一些技术和开源一些项目,希望对大家今后工作有一些帮助。首先我要讲我 们新鲜事系统在SNS的主要功能。我要在人人网发一个日志,可以很及时高效迅速的在我朋友圈、粉丝圈子里面可以看到,我朋友可以很快回复跟我进行一个很快 的交互。我必须保证系统高效运转,同时要稳定。对于我们这样一个SNS网站来说,包括SNS还有微博这样一些系统,很重要一点是当发生特殊事件时会有一个 爆发效应。前两天世界杯,我不是一个足球迷,那天晚上我就睡了。两点我手机不停的响,我说怎么回事,我以为同事更新服务,想了想可能今天晚上是什么比赛比 较火,第二天早上
阅读全文
摘要:Feed架构的两种设计模式Push(推)和Pull(拉),其中Push优点是实现简单,缺点在于分发量,而Pull优点是节约存储,缺点是计算量大和峰值挑战。1.推模式,feeds的存储可以根据用户uid进行数据的sharding,并不是存储在一张表。事实上,推模式的查询只需要SELECT id from feeds_X wheres uid=myuid ORDER BY id DESC LIMIT n 而上面拉模式的sql语句比这个要消耗更多的资源。2. 正是我说的时间分区拉模式。 目前更多的网站都倾向于推模式,人人网的新鲜事完全是推模式,新浪微博据说是推拉模式,不过感觉也是推为主的。 ...
阅读全文
摘要:、前言Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中 间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由生成的代码负责RPC协议层和传输层的实现。本文组织结构如下:1)引言 2)架构3)支持的数据传输格式、数据传输方式和服务模型 4)Thrift安装 5)利用Thift部署服务关于th
阅读全文
摘要:linux中.o,.a,.o,.so文件的意义和编程实现 linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为静态库,是好多个.o合在一起,用于静态连接 .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la*.la: ASCII English text所以可以用vi来查看其内容。@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@创建.a库..
阅读全文
摘要:1ICE中间件简介2平台核心功能2.1接口描述语言(Slice)2.2ICE运行时2.2.1通信器2.2.2对象适配器2.2.3位置透明性2.3异步编程模型2.3.1异步方法调用2.3.2异步方法分派2.4订阅/发布编程模型2.5动态服务管理(IceBox)2.6ICE网格计算2.6.1分布式部署2.6.2负载均衡2.6.3注册中心集群2.7IceSSL应用2.8持久化存储(IceFreeze)3ICE平台功能研究小结1ICE中间件简介Ice是Internet Communications Engine的简称,是一种面向对象的中间件平台,支持面向对象的RPC编程,其最初的目的是为了提供类似CO
阅读全文
摘要:作为一个技术人员,你是否在为不断增长的数据量和日益复杂的业务逻辑而头疼不已,杂乱堆砌在一起的庞大业务让系统越来越脆弱,于是你想到了网格,想到了利用分布式来重组一个健壮的系统架构。 随 后,RMI,EJB, WebService,Hessian,http invoke…..一堆名词铺天盖地的向你袭来。面对这么多的技术实现,我们似乎有点难以抉择。EJB太过笨重,webservice的性能似乎有待商 榷。http invoker似乎还不如webservice,Hession的功能似乎又太过简单…. 一个面向对象的,性能极高的,平台和语言无关的分布式应用中间件平台,ICE就是这么一个应该被收入我们技.
阅读全文
摘要:ice是一个对象中间件,可用多系统间通信。1. 它提供了slice语言机制,将x.ice映射成各种语言,以消除各编辑语言之间的差别。多语言系统可用。2. 提供了rpc远程调用机制。3. 组件化, 提供了icegrid, icebox, icepack等更为方便 。机制与原理 一、communicator连接器。是ice run time最为主要的, 它包含了一些主要信息: a. 线程池(server, client) b. 日志记录(Ice.Logger) c. 统计(Ice.Stats) d. 对象适配器(Ice.Adapter) e. Ice.Router f. Ice.ServantLo
阅读全文
摘要:这一篇我们试试IceBox的简单使用。那先介绍一下 IceBox,IceBox 是一种简单的应用服务器,可用于协调许多应用组件的启动和停止。应用组件可以作为动态库、而不是进程进行部署。例如,你可以在单个Java 虚拟机中运行若干应用组件,而无需使用多个拥有自己的虚拟机的进程,从而减轻整个系统的负担。具体应用可以参考官方文档。首先,我们要改造一样Server类,以实现让IceBox服务接管你的应用。文件名:ServerByBox.javapublic class ServerByBox implements IceBox.Service { private Ice.ObjectAdapter _
阅读全文
摘要:配置文件格式,比如 # Example config file for IceIce.MessageSizeMax = 2048# Largest message size is 2MB Ice.Trace.Network=3 # Highest level of tracing for network Ice.Trace.Protocol= # Disable protocol tracing加载配置方式一: ./server --Ice.Config=/opt/Ice/default_config 这种需要带命令行参数 ./server --Ice.UDP.SndSize = 65535
阅读全文
摘要:PPT1 运行时环境Ice作为一个中间件产品,其使用过程中,有运行时(也称mn time)环境和开发环境两部分。图 Ice核心功能的模块组成图可见,Ice核心功能实际上由六大子系统模块共同分担,分别是通信模块、对象适配模块、线程模块、调用/分派模块、桩和框架模块和插件模块。PPT2 通信模块Icc的通信子系统主要负责对网络连接的管理,涉及范围包括端点、引用、连接及它们的相互关系。利用端点信息可寻址一台主机,端点信息包括协议类型、寻址信息等。引用包含了servant的标识:Identity+facet。一个引用包含一个Identity,但可包含多个端点,这意味着,可以选择任意一个满足要求的端点定
阅读全文
摘要:http://blog.csdn.net/moxiaomomo/article/details/67641801.Ice Run Time 概述 按照个人暂时的理解,Icerun Time具体是指Ice封装好了大部分的API,通过这些API实现分布式应用程序运行时的各种功能。 首先,其中一个重要的部分是通信器,它是Ice run time的主句柄,也是Ice run time的主进入点。另外Ice一个重要的机制是servant定位器,用于控制性能和内存消耗之间的平衡。其他一些同样不可缺少的组成部分接下来将会进行介绍。2.通信器 Icerun time 的主进入点由本地接口Ice::Commun
阅读全文
摘要:http://www.cppprog.com/2009/0612/125.html第17章《异步程序设计》网上摘录比较清晰的解释:“AMI是客户端的功能,I = Invoke,客户端调用完后马上返回,保证客户端不阻塞。 AMD是服务器端功能,D= Dispatch, 服务器端相应客户调用过程中,使用AMD可以在处理还没有完成时就提前返回结果,就像在函数中间加个return语句一样,不同的是这个return下面 的语句会接着执行。 还有一点很有特色的是,AMI和AMD是完全互相独立的,也就是说对于同一个interface,客户端不会知道服务器是否用AMD方式相应请求,服务器 端也不会知道客户端是
阅读全文
摘要:服务器端:服务器端通常只有一个通信器(Ice::Communicator),通信器包含了一系列的资源:如线程池、配置属性、对象工厂、日志记录、统计对象、路由器、定位器、插件管理器、对象适配器在通信器内,包含有一个或更多的对象适配器(Ice::ObjectAdapter),对象适配器负责提供一个或多个传输端点,并且把进入的请求分派到对应的servant中去执行。具体实现的部分称为servant,它们为客户端发来的调用提供服务。servant向对象适配器注册以后,由对象适配器依据客户请求调用相应方法。客户端:客户端直接通过代理进行远程调用,就象本地调用一样简单。 通信器Ice::Communica
阅读全文
摘要:2009-07-12 13:53:30 作者:毛毛 来源:www.cppprog.com =本文介绍了如何通过命令行参数或配置文件设置ICE的行为在前一篇文章中,大家可能都注意到了一个细节,Ice的初始化函数initialize的输入参数正好是主函数的输入参数,也就是命令行参数(注:辅助类Ice::Application也调用了initialize函数)。Ice的初始化函数得到命令行参数后,抽取出Ice专有参数,并把分析后的配置存入到Ice的属性表中。假设命令行为:MyProg.exe --myoption --Ice.Config=config\ -x a --Ice.Trace.N...
阅读全文
摘要:解释: 注册器是指运行注册器的主机,可以是主/从模式的容灾系统;节点1,节点2是指服务器主机,注册器记录和管理多台节点;每个节点上可以运行多个服务器软件Server<xx>这样构成了整个ICEGrid。1. IceGrid的优势: a. Location Service b. On-demand Server activation 按需启动,对于配置的节点(node)无需启动,在客户端向icegrid请求一个服务代理时,icegrid发现这个服务存在但没有被启动,会激活这个adapter所属的server或者让这个apapter向其注册。 c. Application distri
阅读全文
摘要:Ice 提供了一个简单的线程抽象层,用以编写可移植的多线程程序。通过同步原语可以实现不同粒度的并发控制。 1、互斥体 IceUtil::Mutex类和IceUtil::StaticMutex提供了简单的非递归互斥机制。两者完全类似,只是StaticMutex可以静态声明,如下所示: static IceUtil::StaticMutex myStaticMutex =ICE_STATIC_MUTEX_INITIALIZER; 成员函数: • lock:尝试锁定互斥体。如果已锁定,就会挂起直到获得互斥体。 • tryLock:尝试锁定互斥体。如果已被当前线程锁定就返回true,否则返回fa...
阅读全文
摘要:按:摘编自DPWI第30章 通过配置文件可以设置Ice应用程序的各个方面,Ice运行时能够识别配置文件中规定的属性集。Ice只会在创建通信器时读入属性配置。也就是说,若要设置属性的话,必须在创建通讯器以前设置,否则不起作用。 1、配置文件: 以#开头部分为注释。属性单词之间可以有空格。属性前、后空格自动清除,中间的空格会保留。 属性格式:<应用程序名>.<类别名>[.<子类别名>]。 以Ice,IceBox,IceGrid,IcePatch2,IceSSL,IceStorm,Freeze,Glacier2 为前缀的属性专用于Ice运行时,不能用于用户程序和配
阅读全文
摘要:本文介绍了比较完整的Ice应用程序,它实现了简单文件系统。本程序位于ICE发布的$ICE_HOME/demo/book /simple_filesystem目录。本文内容涉及DPWI第5,7,9章。通过这个程序的学习,读者应该掌握了Ice应用程序开发的基本方法、步 骤。此后要通过深入学习Ice知识来提高Ice应用程序的开发水平。到本文为止,Ice for C++ 应用程序开发的基础部分就介绍完了。 1、系统需求 该系统为层次结构,由目录和文件组成。目录是子目录、文件的容器,顶层为根目录。同级各个目录、文件不能同名。 该系统包含固定数目的目录、文件。不能创建、销毁目录、文件。只能一次读写文件..
阅读全文
摘要:本文将介绍服务器端的Slice到C++ 映射。客户端Slice到C++映射的内容也适用于服务器端。 1、服务器端的主要流程 从ICE的Hello World应用程序中可以看到,Ice运行时的主入口点为Ice::Communicator。程序必须首先调用Ice::initialize,对 Ice运行时进行初始化。Ice::initialize 返回一个指向Ice::Communicator实例的智能指针。根据该指针调用Ice提供的各种服务,实现各项功能。 当关闭Ice程序时,必须调用Communicator::destroy。destroy会确保还在执行的操作完成调用,收回操作系统资源,如...
阅读全文