应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

性能工具之Jmeter压测ThriftRPC服务

  概述
  Thrift是一个可互操作和可伸缩服务的框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在C,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C,Cocoa,JavaScript,Node。js,Smalltalk,andOCaml等等编程语言间无缝结合的、高效的服务。
  Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器。thrift允许你定义一个简单的定义文件中的数据类型和服务接口(IDL)。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。
  其传输数据采用二进制格式,相对于XML和JSON等序列化方式体积更小,对于高并发、大数据量和多语言的环境更有优势。Thrift它含有三个主要的组件:protocol,transport和server,其中,protocol定义了消息是怎样序列化的,transport定义了消息是怎样在客户端和服务器端之间通信的,server用于从transport接收序列化的消息,根据protocol反序列化之,调用用户定义的消息处理器,并序列化消息处理器的响应,然后再将它们写回transport。
  官网地址:thrift。apache。org基本概念架构图
  堆栈的顶部是从Thrift定义文件生成的代码。Thrift服务生成的客户端和处理器代码。这些由图中的棕色框表示。红色框为发送的数据结构(内置类型除外)也会生成代码。协议和传输是Thrift运行时库的一部分。因此使用Thrift可以定义服务,并且可以自由更改协议和传输,而无需重新生成代码。Thrift还包括一个服务器基础结构,用于将协议和传输绑定在一起。有可用的阻塞,非阻塞,单线程和多线程服务器。堆栈的底层IO部分根据所开发语言而有所不同。对于Java和Python网络IO,Thrift库利用内置库,而C实现使用自己的自定义实现。数据类型:基本类型:bool:布尔值,true或false,对应Java的booleanbyte:8位有符号整数,对应Java的bytei16:16位有符号整数,对应Java的shorti32:32位有符号整数,对应Java的inti64:64位有符号整数,对应Java的longdouble:64位浮点数,对应Java的doublestring:未知编码文本或二进制字符串,对应Java的String结构体类型:struct:定义公共的对象,类似于C语言中的结构体定义,在Java中是一个JavaBean集合类型:list:对应Java的ArrayListset:对应Java的HashSetmap:对应Java的HashMap异常类型:exception:对应Java的Exception服务类型:service:对应服务的类数据传输层TransportTSocket使用阻塞式IO进行传输,是最常见的模式TFramedTransport使用非阻塞方式,按块的大小进行传输,类似于Java中的NIO,若使用TFramedTransport传输层,其服务器必须修改为非阻塞的服务类型TNonblockingTransport使用非阻塞方式,用于构建异步客户端数据传输协议Protocol
  Thrift可以让用户选择客户端与服务端之间传输通信协议的类别,在传输协议上总体划分为文本(text)和二进制(binary)传输协议,为节约带宽,提高传输效率,一般情况下使用二进制类型的传输协议为多数,有时还会使用基于文本类型的协议,这需要根据项目产品中的实际需求。常用协议有以下几种:TBinaryProtocol:二进制格式。TCompactProtocol:高效率的、密集的二进制压缩格式TJSONProtocol:JSON格式TSimpleJSONProtocol:提供JSON只写协议,生成的文件很容易通过脚本语言解析
  注意:客户端和服务端的协议要一致。服务器类型ServerTSimpleServer单线程服务器端使用标准的阻塞式IO,一般用于测试。TThreadPoolServer多线程服务器端使用标准的阻塞式IO,预先创建一组线程处理请求。TNonblockingServer多线程服务器端使用非阻塞式IO,服务端和客户端需要指定TFramedTransport数据传输的方式。THsHaServer半同步半异步的服务端模型,需要指定为:TFramedTransport数据传输的方式。它使用一个单独的线程来处理网络IO,一个独立的worker线程池来处理消息。这样,只要有空闲的worker线程,消息就会被立即处理,因此多条消息能被并行处理。TThreadedSelectorServerTThreadedSelectorServer允许你用多个线程来处理网络IO。它维护了两个线程池,一个用来处理网络IO,另一个用来进行请求的处理。当网络IO是瓶颈的时候,TThreadedSelectorServer比THsHaServer的表现要好。实现逻辑服务端
  实现服务处理接口impl
  创建TProcessor创建TServerTransport创建TProtocol创建TServer启动Server客户端
  创建Transport创建TProtocol基于TTransport和TProtocol创建Client调用Client的相应方法ThriftServerDemo实例
  新建Maven项目,并且添加thrift依赖包dependenciesdependencygroupIdorg。apache。thriftgroupIdlibthriftartifactIdversion0。9。3versiondependencydependencygroupIdorg。slf4jgroupIdslf4jlog4j12artifactIdversion1。7。12versiondependencydependencygroupIdorg。apache。logging。log4jgroupIdlog4japiartifactIdversion2。7versiondependencydependencygroupIdorg。apache。logging。log4jgroupIdlog4jcoreartifactIdversion2。7versiondependencydependenciesbuildpluginsplugingroupIdorg。apache。maven。pluginsgroupIdmavencompilerpluginartifactIdversion3。3versionconfigurationsource1。8sourcetarget1。8targetencodingutf8encodingconfigurationpluginpluginsbuild
  编写IDL接口并生成接口文件namespacejavathrift。service
  计算类型仅限整数四则运算enumComputeType{ADD0;SUB1;MUL2;DIV3;}
  服务请求structComputeRequest{1:requiredi64x;2:requiredi64y;3:requiredComputeTypecomputeType;}
  服务响应structComputeResponse{1:requiredi32errorNo;2:optionalstringerrorMsg;3:requiredi64computeRet;}
  serviceComputeServer{ComputeResponsegetComputeResult(1:ComputeRequestrequest);}
  执行编译命令:thrift0。11。0。exergenjavacomputeServer。thrift
  拷贝生成的Service类文件到IDEA
  服务端接口实现publicclassThriftTestImplimplementsComputeServer。Iface{privatestaticfinalLoggerloggerLogManager。getLogger(ThriftTestImpl。class);publicComputeResponsegetComputeResult(ComputeRequestrequest){ComputeTypecomputeTyperequest。getComputeType();longxrequest。getX();longyrequest。getY();logger。info(getcomputeresultbegin。〔x:{}〕〔y:{}〕〔type:{}〕,x,y,computeType。toString());longbeginSystem。currentTimeMillis();ComputeResponseresponsenewComputeResponse();response。setErrorNo(0);try{longret;if(computeTypeComputeType。ADD){retadd(x,y);response。setComputeRet(ret);}elseif(computeTypeComputeType。SUB){retsub(x,y);response。setComputeRet(ret);}elseif(computeTypeComputeType。MUL){retmul(x,y);response。setComputeRet(ret);}else{retp(x,y);response。setComputeRet(ret);}}catch(Exceptione){response。setErrorNo(1001);response。setErrorMsg(e。getMessage());logger。error(exception:,e);}longendSystem。currentTimeMillis();logger。info(getcomputeresultend。〔errno:{}〕cost:〔{}ms〕,response。getErrorNo(),(endbegin));returnresponse;}privatelongadd(longx,longy){returnxy;}privatelongsub(longx,longy){returnxy;}privatelongmul(longx,longy){returnxy;}privatelongp(longx,longy){returnxy;}}
  服务端实现publicclassServerMain{privatestaticfinalLoggerloggerLogManager。getLogger(ServerMain。class);
  publicstaticvoidmain(String〔〕args){try{实现服务处理接口implThriftTestImplworkImplnewThriftTestImpl();创建TProcessorTProcessortProcessornewComputeServer。ProcessorComputeServer。Iface(workImpl);创建TServerTransport,非阻塞式IO,服务端和客户端需要指定TFramedTransport数据传输的方式finalTNonblockingServerTransporttransportnewTNonblockingServerSocket(9999);创建TProtocolTThreadedSelectorServer。ArgsttpsArgsnewTThreadedSelectorServer。Args(transport);ttpsArgs。transportFactory(newTFramedTransport。Factory());二进制格式反序列化ttpsArgs。protocolFactory(newTBinaryProtocol。Factory());ttpsArgs。processor(tProcessor);ttpsArgs。selectorThreads(16);ttpsArgs。workerThreads(32);logger。info(computeserviceserveronport:9999);创建TServerTServerservernewTThreadedSelectorServer(ttpsArgs);启动Serverserver。serve();}catch(Exceptione){logger。error(e);}}}
  服务端整体代码结构
  log4j2。xml配置文件lt;?xmlversion1。0encodingUTF8?console
  PoliciesRollingFile
  FiltersPoliciesRollingFile
  appenders

我再也不会去情侣主题的电影酒店了,到底有多脏乱差?导语:现如今往往男生和女生谈恋爱,外出旅游时会选择情侣酒店入住,由于男女处于热恋期间,所以说只有情侣酒店更贴合两人之间的感情,而且情侣酒店也能带给自己不一样的体验。但是在……C语言代码优化11种实用方法1、选择合适的算法和数据结构选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来……星汉灿烂她凭什么赢了所有的女人?头条创作挑战赛文殷桑求玉文中图片来源于星汉灿烂月升沧海电视剧片段,侵权联系必删《星汉灿烂月升沧海》播完了,剧中少商最喜欢两种母亲:一位是温柔和善的宣皇后,另一……NBA早报史蒂文斯无意湖人帅位,西蒙斯恐G4复出,贝弗利被罚关注NBA的朋友们,大家早上好!本赛季附加赛首轮已经结束,篮网队和森林狼队晋级附加赛。明日附加赛次轮开打,分别是老鹰对阵骑士以及鹈鹕对阵快船,这2场比赛将决出晋级季后赛的最后2……徐静蕾素颜合影,脸上黄斑颈纹都不遮掩了,老态相跟妈妈一模一样徐静蕾现在确实老了,很明显她现在素颜和妈妈一起合影的时候。脸上的黄斑结果都不选择遮掩,直接老态呈现在大家面前。看得出来徐静蕾真的非常坦诚。而且徐静蕾年龄其实也不小了,现在说她老……瑞思拜!保罗致敬小威终极斗士!祝你有个影响深远的职业生涯北京时间8月10日,据美媒报道,由于美国网球名将塞蕾娜威廉姆斯在社交媒体上透露自己将会在今年的美网结束之后退役,与她关系不错的NBA球员克里斯保罗也是在社交媒体上致敬小威。……中国男篮被骂上热搜第一,但你不知道球队究竟有多难澎湃新闻记者蒲垚磊在12日的亚洲杯首战,中国男篮8193遗憾不敌韩国后,球队遭到了舆论的指摘。胡明轩、翟晓川等球员因为表现问题迅速登上热搜,胡明轩还被网友称为胡一分……IQOO10系列即将发布,骁龙8处理器,双5000W像素主摄IQOO10系列官方正在预热,IQOO5以后,每代几乎都与宝马汽车合作,推出宝马汽车限定配色,这两周又一款新的骁龙8机器来了,下周是realmeGT2大师探索版,下下周是IQO……李易峰塌房事件后,女网红湾湾被扒出,曾为见54先生吃美白丸近日,想必不少网友都吃到了李某某这个大瓜了,估计不想吃都不行。连着几天各大软件不停地弹窗推送,各种热搜霸榜,就算是漠不关心估计也对此事略知一二了。这些年,在互联网众目睽睽……46岁舒淇最新大片造型封神!穿少女粉一点不媚俗,气质高级太少今年46岁的舒淇,凭借独一份的气质吸粉无数,明明已经是快50岁的人了,但是却一点也不显老,甚至整个人的状态,比年轻时候还要好,脸部紧致,线条流畅,可以说是逆生长的典范,再加上绝……压抑文案到哭的文案1。可惜我们没有机会能喝醉一场我也不知道你爱着谁。2。不甘心的人得熬过多少夜才能放得下。3。如果你开心的话忘了我也没关系。4。我们都不善于表达我们都各自藏着真……神舟十四号航天员乘组第二次出舱活动全纪录央视网消息:星空浩瀚无比,探索永无止境。古人手可摘星辰的梦想,如今在中国航天人求索太空路上变得不再遥不可及。放眼太空外,星河入梦来。目前,神舟十四号航天员乘组已经在中国空间站在……
深圳野生动物园天鹅冬日暖阳秀舞姿来源:【读特】连日来,深圳市天气晴好,阳光明媚。12月26日,在深圳野生动物园天鹅湖,成群结队的黑天鹅在水面快速扇动翅膀,双脚不断划水,水花四溅,随着逐渐加速,其身体瞬间……沉默,是一个人最深的境界!俗话说得好:水深无声,人稳。静水流深,越是胸中有沟壑的人,越是低调不张扬。沉默是一个人最深层的状态,是他智慧的体现。沉默是看透后的沉默,是悲观后的争执,是做人……转会期倒计时2天!究竟谁是本次冬转的憋气冠军S12落幕至今为止也有一段时间了,相信LPL的粉丝除了目睹飞行员Deft十年一舞终夺冠留下的感概,剩下的目光全投放在了各支队伍转会期的动态上,到底谁才是本次转会期的憋气冠军,让……苹果要用中国芯片?美国反华议员果然气炸来源:环球时报环球网【环球时报环球网报道】美国共和党议员近日警告苹果,如果该公司从一家中国半导体制造商那里为新款iPhone14采购存储芯片,它将面临国会的严格审查。……CBA三消息辽宁外援踏上归途,丁彦雨航仅砍3分,付豪缺席热身爱国篮,爱CBA,我是洛姐,小伙伴们看完记得点赞!辽宁队下个赛季还是以CBA联赛的总冠军作为球队的最高目标,说实话现在辽宁队的整体球员阵容确实是非常强的,球迷们应该都很清……突发!美登月火箭发射台遭雷击美国新一代登月火箭太空发射系统拟于29日首次发射升空,却在发射前48小时倒计时开始后遭遇雷雨天气,发射台3次遭雷击。环球网制作:环视频何卓谦威力不大美国……高血压高血脂糖尿病的9大谣言,不靠谱在哪?高血压、高血脂、糖尿病是不能再常见的慢性病了,但依旧存在不少谣言和误区,很多人还在信!这些谣言和误区不靠谱的地方在哪?一起来看看!关于高血压的谣言平时没有不舒服不需……近50投资者更偏好养老储蓄,利率会是多少?投教12121世纪经济报道记者李愿综合报道投资走正道,安全有保障,欢迎来到《投教121》。我是养老愿,让大家养老生活更安心。上一期讲到养老理财,不少读者表示看完养老愿的介绍后……你好,李少莉实话说,自媒体时代,对于李少莉来说,出现这种口诛笔伐的现象,一点也不奇怪,因为人们已经习惯了在网络中表达自己的情感。都有表达自己情感的意愿。只不过李同志只是做了一个焦点而已。少……这4个时刻,千万不能多喝水平时,我们总是强调多喝水的好处,但事实上,有些时刻,我们千万不能多喝!4种情况先放下水杯01感冒时感冒了,大多数人都认为要多喝水才能好得快。但这不意味着……世界杯巡礼之凯恩大英队长争生涯首冠,历史地位迎来质的飞跃?大英队长哈里凯恩绝对算是当今足坛经历最为悲壮的球星之一,作为足坛顶级前锋的凯恩,在众星云集的英格兰国家队担任领袖,然而迄今为止凯恩在俱乐部和国家队都仍未收获任何一个冠军。对于已……珲春丝绸之路渤海古镇开建打造旅游夜经济新亮点近日,在位于珲春市站前街北侧的珲春丝绸之路渤海古镇旅游基础设施建设项目(一期)施工现场,工人们正在不停地忙碌着,呈现出一派热火朝天的施工景象。记者从该项目承办单位珲春防川……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网