文章分类 - 工具文章
摘要:、前言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
阅读全文
摘要:在大型web应用中,缓存可算是当今的一个标准开发配置了。在大规模的缓存应用中,应运而生了分布式缓存系统。分布式缓存系统的基本原理,大家也有所耳 闻。key-value如何均匀的分散到集群中?说到此,最常规的方式莫过于hash取模的方式。比如集群中可用机器适量为N,那么key值为K的的数据 请求很简单的应该路由到hash(K) mod N对应的机器。的确,这种结构是简单的,也是实用的。但是在一些高速发展的web系统中,这样的解决方案仍有些缺陷。随着系统访问压力的增长,缓存系统不 得不通过增加机器节点的方式提高集群的相应速度和数据承载量。增加机器意味着按照hash取模的方式,在增加机器节点的这一.
阅读全文
摘要:基本概念kafka的工作方式和其他MQ基本相同,只是在一些名词命名上有些不同。为了更好的讨论,这里对这些名词做简单解释。通过这些解释应该可以大致了解kafka MQ的工作方式。Producer (P):就是网kafka发消息的客户端Consumer (C):从kafka取消息的客户端Topic (T):可以理解为一个队列Consumer Group (CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个 topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个CG只会把消息
阅读全文
摘要:例子一单个源文件 main.c例子二==>分解成多个 main.c hello.h hello.c例子三==>先生成一个静态库,链接该库例子四==>将源文件放置到不同的目录例子五==>控制生成的程序和库所在的目录例子六==>使用动态库而不是静态库例子一一个经典的C程序,如何用cmake来进行构建程序呢?//main.c#include <stdio.h>int main(){ printf("Hello World!/n"); return 0;}编写一个 CMakeList.txt 文件(可看做cmake的工程文件):projec
阅读全文
摘要:1 // 工程名 2 PROJECT (HELLO) 3 4 // 设置变量 5 SET(SRC_LIST main.c) 6 7 // 打印变量 8 MESSAGE(STATUS "This is BINARY dir " ${PROJECT_BINARY_DIR}) 9 MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})10 11 // 生成可执行程序 12 ADD_EXECUTABLE(hello SRC_LIST)13 // 生成库14 add_library(hello static
阅读全文
摘要: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
阅读全文
摘要:配置文件格式,比如 # 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
阅读全文
摘要:熟练使用gdb是一个linux下开发人员必备的一项技能,我们由浅入深的学习一下gdb的强大功能。一.gdb简单介绍名称gdb - GNU 调试器提要gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps][-tty=dev] [-s symfile] [-e prog] [-se prog] [-ccore] [-x cmds] [-d dir] [prog[core|procID]]描述 调试器(如GDB)的目的是允许你在程序运行时进入到某个程序内部去看看该程序在做什么,或者在该程序崩溃时它在做什么。GDB主要可以做4大类事(加上一些其他
阅读全文
摘要:http://www.cppprog.com/2009/0612/125.html第17章《异步程序设计》网上摘录比较清晰的解释:“AMI是客户端的功能,I = Invoke,客户端调用完后马上返回,保证客户端不阻塞。 AMD是服务器端功能,D= Dispatch, 服务器端相应客户调用过程中,使用AMD可以在处理还没有完成时就提前返回结果,就像在函数中间加个return语句一样,不同的是这个return下面 的语句会接着执行。 还有一点很有特色的是,AMI和AMD是完全互相独立的,也就是说对于同一个interface,客户端不会知道服务器是否用AMD方式相应请求,服务器 端也不会知道客户端是
阅读全文
摘要:Ice 提供了一个简单的线程抽象层,用以编写可移植的多线程程序。通过同步原语可以实现不同粒度的并发控制。 1、互斥体 IceUtil::Mutex类和IceUtil::StaticMutex提供了简单的非递归互斥机制。两者完全类似,只是StaticMutex可以静态声明,如下所示: static IceUtil::StaticMutex myStaticMutex =ICE_STATIC_MUTEX_INITIALIZER; 成员函数: • lock:尝试锁定互斥体。如果已锁定,就会挂起直到获得互斥体。 • tryLock:尝试锁定互斥体。如果已被当前线程锁定就返回true,否则返回fa...
阅读全文
摘要:程池模式一般分为两种:L/F领导者与跟随者模式、HS/HA半同步/半异步模式。 HS/HA 半同步/ 半异步模式 :分为三层,同步层、队列层、异步层,又称为生产者消费者模式,主线程处理I/O事件并解析然后再往队列丢数据,然后消费者读出数据进行应用逻辑处理; 优点:简化编程将低层的异步I/O和高层同步应用服务分离,且没有降低低层服务性能。集中层间通信。 缺点:需要线程间传输数据,因此而带来的动态内存分配,数据拷贝,语境切换带来开销。高层服务不可能从底层异步服务效率中获益。 L/F 领导者跟随者模式 :在LF线程池中,线程可处在3种线程状态之一: leader、follower或proce...
阅读全文

浙公网安备 33010602011771号