Thrift是一款功能强大、简单易用的远程过程调用框架以及服务开发框架,专门用于可扩展且跨语言的服务的开发,通过该框架用户可以对文件中的数据类型和服务接口进行简单便捷的编辑和自定义,以便于后续对文件的输出,同时通过该框架的编译器生成代码可以和用来生成RPC客户端和服务器通信的编程语言无缝连接;Thrift结合了功能强大的软件堆栈和代码生成引擎,可在C++、Java、Python、PHP等多种编程语言间进行专业的无缝结合,为用户提供专业便捷、稳定高效的服务,可以说是一个非常好用的跨语言服务开发必备框架。
1、struct继承-改用struct组合
2、多态-由于没有继承,因此也不支持多态
3、重载-服务中的所有方法都必须唯一地命名
4、异构容器-容器中的所有物品都必须是同一类型
5、空返回-无法直接从函数返回空。使用包装器结构或标记值代替
6、Thrift编译器用于将Thrift文件生成为源代码,供不同的客户端库和所编写的服务器使用
名称空间-每个Thrift文件位于其自己的名称空间中,允许您在多个Thrift文件中使用相同的标识符
语言名称空间-每个Thrift文件,您可以指定每种编程语言应使用的名称空间
基本类型-Thrift有少量的基本类型。查看节俭类型
常量和枚举-可以为常量值分配逻辑名称
结构-使用结构对相关数据进行分组。结构可以具有任何类型的字段。查看节俭类型
稀疏结构-尚未设置的可选基本字段和为空的参考字段将不会通过电线发送
结构演化-通过使用字段的整数标识符来处理字段的添加和删除,而不会破坏现有的客户端
容器-您可以使用任何类型的集,列表和映射:基本类型,结构和其他容器。查看节俭类型
类型定义-可以给任何类型一个更好地描述它的名称
服务继承-子服务实现其基本服务的所有功能,并且可以具有其他功能
异步调用-可以异步调用不返回结果的函数,因此在服务器完成对请求的处理之前,不会阻塞客户端。服务器可以并行/无序执行同一客户端的异步调用
从源代码构建
首先确保您的系统符合所有必要的Apache Thrift要求
如果您是从源存储库中首次构建的,则需要生成configure脚本。(如果您下载了已发布的tarball,则不需要这样做。)从顶层目录中执行以下操作:
./bootstrap.sh
一旦生成了配置脚本,就可以配置节俭。在顶层目录中,执行以下操作:
./configure
禁用语言:
./configure --without-java
您可能需要明确指定增强文件的位置。如果在/ usr / local中安装了boost,则可以按以下方式运行configure:
./configure --with-boost=/usr/local
如果要覆盖Java SDK的检测逻辑,请使用JAVAC环境变量:
./configure JAVAC=/usb/bin/javac
请注意,默认情况下,节俭的C ++库通常使用调试符号来构建。如果要自定义这些选项,则应在configure中使用CXXFLAGS选项,例如:
./configure CXXFLAGS='-g -O2'
./configure CFLAGS='-g -O2'
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
要查看其他配置选项,请运行
./configure --help
运行configure之后,您可以通过make构建Thrift:
make
并运行测试套件:
make check
和跨语言测试套件:
sh test/test.sh
问题在编译
“ compiler / cpp / thriftl.cc:2190:对'yywrap'的未定义引用”
您需要安装Flex库(另请参阅Apache Thrift要求)并重新运行配置脚本。
mv:在构建Thrift运行时库时,无法状态“'.deps / TBinaryProtocol.Tpo':无此类文件或目录”
重新重新配置
--enable-libtool-lock
或通过将.NOTPARALLEL:放置在lib / cpp / Makefile或
make -j 1
尽管节俭的编译器构建似乎与没有libtool锁的并行make兼容,但节俭的运行时构建却不兼容。
安装
在顶层目录中,成为超级用户并执行以下操作:
make install
请注意,必须使用更适合那些语言的构建工具来手动安装某些语言包(这适用于Java,Ruby,PHP)。
在lib//文件夹中查找README文件,以获取有关每个语言库软件包安装的更多详细信息。
GitHub拉取请求
这是提交更改的首选方法。当您通过github提交拉取请求时,它会激活Appveyor和Travis的持续集成(CI)构建系统,以在各种Linux和Windows配置上构建您的changexi,并运行所有测试套件。请遵循以下要求,以成功完成拉取请求:
所有重大更改都需要Apache Jira THRIFT发行票证。诸如拼写错误或编译器警告之类的琐碎更改不会。
每个请求的所有拉取请求都应包含一个提交,否则我们将要求您压缩它。
如果拉取请求标题具有关联的票证,则必须以Jira THRIFT票证标识符开头,例如:
THRIFT-9999: an example pull request title
提交消息必须遵循以下模式进行代码更改(偏差不会合并):
THRIFT-9999: [summary of fix, one line if possible]
Client: [language(s) affected, comma separated, for example: "cpp,erl,perl"]
指示:
在您的GitHub帐户http://github.com/apache/thrift中创建一个fork
将分支克隆到您的开发系统。
为您的更改创建一个分支(最佳实践是作为分支名称发出,例如THRIFT-9999)。
修改源以包括改进/错误修正,并:
请记住要为所有提交的更改提供测试!
使用测试驱动的开发(TDD):添加一个测试,以隔离该错误,然后应用修正该错误的更改。
确认您遵守节俭编码标准(可以运行“ make style”,以确保某些语言的格式正确)。
[可选]通过向Travis CI和AppVeyor添加GitHub服务钩子,验证您的更改是否可在其他平台上使用。您可以使用此技术在帐户中运行Thrift CI作业以检查更改,然后再将其公开。每个到Thrift的GitHub拉取请求都将对您的更改运行完整的CI构建和测试套件。
将更改压入一次提交。这样可以保持干净的更改历史记录。
提交并推送对分支的更改(请使用发布名称和描述作为提交标题,例如“ THRIFT-9999:使其完美”),并在描述的下一行使用受影响的语言。
使用GitHub创建从分支到apache:master的拉取请求。确保Jira票证编号在您的拉取请求标题的开头,与提交标题相同。
等待其他贡献者或提交者查看您的新添加内容,并等待CI构建完成。
等待提交者提交补丁。如果需要,可以通过向Apache Thrift邮件列表发送消息来微调提交者。
如果您想在本地构建项目
对于Windows系统,请参阅CMake自述文件上的详细说明。
对于Windows Native C ++构建,请参阅WinCPP README上的详细说明。
对于unix系统,请参阅Docker README上的详细说明。
如果您想查看未解决的问题……
查看GitHub Pull Request Backlog。代码审查对所有人开放。
查看Jira问题跟踪器。您可以搜索与您感兴趣或当前使用的语言相关的票证,例如,通过Jira搜索(问题->搜索问题)查询project = THRIFT AND component in ("Erlang - Library") and status not in (resolved, closed)将找到所有未解决的Erlang库问题。
如果发现缺陷……
检查问题是否已经在Jira问题跟踪器中。
如果没有,请创建一个票证,描述您在Jira问题跟踪器中提出的更改。
使用GitHub pull request方法贡献代码更改:
通过补丁贡献
要根据本地目录中的更改创建补丁,请执行以下操作:
git diff > ../THRIFT-NNNN.patch
然后等待贡献者或提交者查看您的更改,然后等待提交者应用您的补丁。这不是提交更改的首选方法,并且对于必须随后为您创建拉取请求的提交者造成了额外的开销。
GitHub拉取请求的配方
有时候,通信者可能会要求您在请求请求中采取措施。这里有一些食谱,可以帮助您完成这些请求。这些示例假定您正在处理Jira问题THRIFT-9999。您还应该熟悉上游存储库的概念。
压缩您的更改
如果尚未提交请求请求,或者尚未重新建立现有请求请求的基础,则可以将所有提交压缩为单个提交。这使提交者的生活更加轻松。如果您在GitHub上的拉取请求具有多个提交,则应执行此操作。
使用该命令git log来确定自开始以来您进行了多少次提交。
使用命令git rebase -i HEAD~N,其中N是提交数。
在第一行中保留“ pull”。
将所有其他行从“拉”更改为“修正”。
现在,所有更改都在一个提交中。
如果您已经有一个未完成的拉取请求,则由于更改了提交历史记录,因此需要执行“强制推送”来覆盖它:
git push -u origin THRIFT-9999 --force
在Git Ready上可以找到壁球的详细介绍。
重新整理您的拉取请求
如果您的拉取请求与主请求有冲突,则需要重新设置其基础:
修复错误的合并
如果您的拉取请求包含的提交不属于您,那么您应该使用以下技术来修复分支中的错误合并:
此过程仅将您的提交应用于当前的提交,然后将它们压缩为单个提交,然后您将本地THRIFT-9999-take-2强制推送到代表您的拉取请求的远程THRIFT-9999中,所有与新提交的提交。
该页面是由Apache Thrift的源代码树文档生成的: CONTRIBUTING.md
节俭的网络堆栈
Apache Thrift网络堆栈的简单表示
运输
传输层为从网络读取/向网络写入提供了简单的抽象。这使Thrift可以将基础传输与系统的其余部分解耦(例如,序列化/反序列化)。
除了上面的传输接口之外,Thrift还使用ServerTransport接口来接受或创建原始传输对象。顾名思义,ServerTransport主要用于服务器端,为传入的连接创建新的传输对象。
以下是大多数Thrift支持的语言可用的传输方式:
文件:读/写磁盘上的文件/从磁盘上的文件读/写
http:顾名思义
协议
协议抽象定义了一种将内存中的数据结构映射为有线格式的机制。换句话说,协议指定数据类型如何使用基础传输来对其自身进行编码/解码。因此,协议实现控制编码方案,并负责(反序列化)。从这个意义上来说,协议的一些示例包括JSON,XML,纯文本,紧凑二进制等。
这是协议接口:
节俭协议通过设计面向流。不需要任何明确的框架。例如,在开始序列化字符串之前,不必知道字符串的长度或列表中的项目数。大多数受Thrift支持的语言可用的一些协议是:
二进制:非常简单的二进制编码–字段的长度和类型被编码为字节,然后是字段的实际值。
紧凑:描述于THRIFT-110
json
处理器
处理器封装了从输入流读取数据并写入输出流的功能。输入和输出流由协议对象表示。处理器界面非常简单
特定于服务的处理器实现由编译器生成。处理器本质上是从线路读取数据(使用输入协议),将处理委托给处理程序(由用户实现),并通过线路写入响应(使用输出协议)。
服务器
服务器将上述所有各种功能汇总在一起:
创建运输
创建用于传输的输入/输出协议
根据输入/输出协议创建处理器
等待传入的连接并将其交给处理器
CIMCO Edit
276.25 MB/2020-08-17CIMCOEditV5是CIMCO软件公司专为数控编程而设计的专业软件,该软件以其强大的功能、低廉的价格而风靡欧美,它有强大而实用的数控编辑功能、文件的智能比较、刀位轨迹的三维模拟、DNC传输等功能。其完全的Windows界面,一目了然的地址颜色,强大的在线帮助,会使您爱不释手。
CKplayer网页播放器
336 KB/2020-08-17ckplayer是一款在网页上播放视频的免费的网页播放器,功能强大,体积小巧,跨平台,使用起来随心所欲。CKplayer网页播放器主要以adobe的flash(所使用的版本是CS5)平台开发,ckplayer同时也支持html5的视频播放。
WordPress
6.7 MB/2020-08-17WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设自己的网志。也可以把WordPress当作一个内容管理系统(CMS)来使用。
Discuz论坛
4.05 MB/2020-08-17Discuz!Board(以下简称Discuz!,中国国家版权局著作权登记号2003SR6623)是一个通用的论坛软件系统,用户可以在不需要任何编程的基础上,Discuz论坛通过简单的设置和安装
Guns后台管理系统
12.5 MB/2020-08-17Guns后台管理系统是一款项目快速开发管理系统网站搭建模板,基于SpringBoot2开发,内置主控面板、组织架构、用户管理、机构管理、职位管理、权限管理、基础数据、系统功能
狂雨小说cms
7.8 MB/2020-08-17狂雨小说是一款体积轻量、简单易用的轻量级小说网站搭建模板,基于ThinkPHP5.1+MySQL的技术开发,网站搭建和部署便捷简单,通过该模板用户可以快速搭建一个属于自己的小说内
Slidev(开发幻灯片展示)
8.52 MB/2020-08-17Slidev是一款非常专业且优秀的开发幻灯片展示软件,作为基于Web的幻灯片制作和演示软件,非常适合开发人员使用,可帮助他们专注于在Markdown中编写内容,软件功能强大,拥有HTML
魔众短链接系统
27.5 MB/2020-08-17魔众短链接系统是一款绿色安全、免费开源的短链接生成网站搭建模板,基于PHP+Mysql开发,可帮助用户快速搭建属于自己的短链接生成网站,该网站界面简洁美观、对SEO非常友好,功
CIMCO Edit
建站专家网站建设系统
Turbo C 2.0库函数速查
PPTV网络电视系统
中英繁公司企业智能自助建站源码
宾馆酒店饭店网站建设模板ASP源码
XOOPS 简体中文版 2.0.3 for Unix
SaurusCMS
Deluge For Linux
云帆互娱棋牌最新
2025澳门六下彩
jj比赛大厅最新版
24棋牌vip贵宾官网版最新版
德州游戏官网
欢乐拼三张斗地主2025
炸金花官方版
震东济南棋牌2025
捕鱼大作战官方版本
您可能感兴趣的专题
男生必备
男生们看过来!
安卓装机必备
女生必备
女生必备app是拥有众多女性用户的手机软件,作为一个女生,生活中像淘宝、京东这类线上购物软件可以说是少不了的,小红书这种穿搭、化妆分享平台也很受欢迎,类似于西柚大姨妈、美柚这种专为女生打造的生理期app更是手机必备,还有大家用的最多拍照美颜app是绝对不能忘记的,除此之外对于一些追星女孩来说,微博也是一个必不可少的软件。超多女生必备软件尽在下载吧!
迅雷看看使用教程
迅雷看看播放器是一款多功能在线高清多媒体视频播放器,支持本地播放与在线视频点播,采用P2P点对点传输技术,可以在线流畅观看高清晰电影。不仅如此,迅雷看看不断完善用户交互和在线产品体验,让您的工作与生活充满乐趣。
驱动精灵
驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能,也是大家日常生活中经常用到的实用型软件之一了。
拼音输入法
对于电脑文字输入,拼音输入法是一种非常受欢迎的输入法,搜狗拼音输入法、百度拼音输入法、QQ拼音输入法、谷歌拼音输入法、紫光拼音输入法、智能拼音输入法等,你在用哪款呢?一款好用适合自己的拼音输入法一定对您平时帮助很大!下载吧收集了最热门国人最喜欢用的拼音输入法给大家。
b站哔哩哔哩怎么使用
很多人都喜欢在b站哔哩哔哩上观看视频,不单是因为可以提前看到一些视频资源,B站的一些弹幕、评论的玩法也是被网友们玩坏了!下面下载吧小编带来了b站哔哩哔哩怎么使用的教程合集!希望能帮到你啦!
抖音短视频app
抖音短视频app,这里汇聚全球潮流音乐,搭配舞蹈、表演等内容形式,还有超多原创特效、滤镜、场景切换帮你一秒变大片,为你打造刷爆朋友圈的魔性短视频。脑洞有多大,舞台就有多大!好玩的人都在这儿!