分类分类
大小:4.1 MB 更新:2024/05/27
类别:其他软件系统:WinAll
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 MB7.5 简体中文版
详情CKplayer网页播放器 其他软件336 KB6.6 免费版
详情WordPress 其他软件6.7 MB4.1 英文版
详情Discuz论坛 其他软件4.05 MB官方版
详情Guns后台管理系统 其他软件12.5 MBv7.0.3 官方版
详情狂雨小说cms 其他软件7.8 MBv1.3.2 官方版
详情Slidev(开发幻灯片展示) 其他软件8.52 MBv0.10.2 官方版
详情魔众短链接系统 其他软件27.5 MBv2.0.0 官方版
详情易语言资源网源码下载工具 其他软件1.51 MBv1.0 免费版
详情W5 SOAR(自动化响应平台) 其他软件6.8 MBv0.4 官方版
详情魔众文档管理系统 其他软件28.8 MBv3.0.0 官方版
详情Milvus(矢量数据库) 其他软件6.0 MBv1.1.0 官方版
详情FlatBuffers(序列化库) 其他软件1.95 MBv2.0.0 官方版
详情Wendasns(问答社区系统) 其他软件7.8 MBv1.1.5 官方版
详情DM企业建站系统 其他软件14.0 MBv2021.5a 官方版
详情Ember.js(JavaScript框架) 其他软件1.66 MBv3.27.0 官方版
详情Exifr(EXIF读取库) 其他软件42.1 MBv7.0.0 官方版
详情RavenDB数据库 其他软件64.5 MBv5.1.7 官方版
详情iWebShop(开源商城系统) 其他软件11.5 MBv5.9.210101 官方版
详情OElove(婚恋交友系统) 其他软件28.7 MBv8.1 官方版
详情点击查看更多
ThinkSNS 其他软件20 MB4.6.1 免费版
详情CKplayer网页播放器 其他软件336 KB6.6 免费版
详情vqqq.com带20000数据库的笑话程序 其他软件300 KB2.0 官方版
详情EXE文件加口令源代码 其他软件799 KB3.0 官方版
详情PPTV网络电视系统 其他软件1.27 MB4.0.1.0 官方版
详情建站专家网站建设系统 其他软件20.02 MB1.0.4.1819 官方版
详情Turbo C 2.0库函数速查 其他软件71 KB1.0 官方版
详情中国联通SGIP1.2短消息网关客户端程序 其他软件54 KB1.37 官方版
详情伤感文学CMS文章发布系统 其他软件4.11 MB2.0 官方版
详情娱乐先锋论坛 其他软件1.31 MB5.3 官方版
详情笔试考试源代码 其他软件1.17 MB1.0.0 官方版
详情Deluge For Linux 其他软件2.79 MB1.0.0 官方版
详情幻影留言版(ASP多用户版) 其他软件567 KB5.30 官方版
详情GeniusBBS 其他软件475 KB1.1 官方版
详情上机考试源代码 其他软件1.01 MB1.0.0 官方版
详情vqqq.com在线网页编辑asp源码 其他软件22 KB1.0.0 官方版
详情CIMCO Edit 其他软件276.25 MB7.5 简体中文版
详情狐狗网页源代码显示器 其他软件434 KBBuild1214 官方版
详情农业企业网站模板中英繁企业网站管理系统源码 其他软件2.18 MB2010 官方版
详情vqqq.com多用户ip统计asp源码 其他软件134 KB1.0.0 官方版
详情点击查看更多
ky棋牌网站大全98 休闲益智61.5MBv7.2.0
详情ky棋牌苹果版本 休闲益智61.5MBv7.2.0
详情开元棋脾595cc 休闲益智61.5MBv7.2.0
详情琼崖海南麻将15app下载 休闲益智61.5MBv7.2.0
详情老式水果机下载手机版 休闲益智0MBv1.0
详情狂暴捕鱼官网504.1 休闲益智61.5MBv7.2.0
详情777水果机免费单机版 休闲益智0MBv1.0
详情彩民之家44666 生活服务68.2MBv1.7.1
详情老式水果机下载 休闲益智0MBv1.0
详情狂暴捕鱼官网504.1版 休闲益智61.5MBv7.2.0
详情贪玩娱乐苹果官方下载 休闲益智0MBv7.2.0
详情王者棋牌cc老版本 休闲益智61.5MBv7.2.0
详情888彩票网 生活服务33.2MBv9.9.9
详情彩虹多多专享版 生活服务33.2MBv9.9.9
详情一木棋牌蓝色旧版老版本2017年 休闲益智61.5MBv7.2.0
详情角落棋牌官方网站 休闲益智61.5MBv7.2.0
详情森林舞会飞禽走兽 休闲益智0MBv1.0
详情老式水果机游戏 休闲益智0MBv1.0
详情波克城市棋牌 休闲益智61.5MBv7.2.0
详情老式水果机 休闲益智0MBv1.0
详情点击查看更多