全python项目,使用protobufThrift适合吗?
我现在在做一个全python的集群项目,用的xmlrpc去做各服务通信。
但是xmlrpc的使用太恶心,而且异常全部转换成了xmlrpc的Fault类型。
很不好转换,所以想吧我们的通信库换一下。
但是其他人说,又不是跨语言,没必要用到这些东西,简单就行。
各位怎么看呢?
回复内容:
早些年仔细研究过protobuf和thrift,并分别分享过。ProtoBuf开发者指南:
http://gashero.yeax.com/?p=108
在较长时期都是国内最全的一份翻译。
thrift也做过一份1万来字的文档,但并没有公布。
这两种序列化技术我都在实际项目中用过,2010年前后。在这之后就没有再用。
从序列化的角度,两者相似程度很高,效率方面也都是顶级的水平,无论是存储效率还是压缩/解包效率。
至于RPC方面,截至到2010年,protobuf没有官方的方案,thrift的则是线程池实现,经常卡死,很烂。所以至少那个时代,两者用做RPC都不靠谱。
最关键的问题来自如下几点:
1、难于调试:都是二进制协议,序列化后的内容不可读
2、安装繁琐恶心:都要安装很久,编译一堆东西
3、对多语言支持有限:最近几年新语言出的太快了
4、对WEB不友好:js没有原生支持
所以,逐渐就不用了。现在遇到类似的需求都是用HTTP里面封装JSON的。所以调用的请求用form提交,这样用网页上的表单就能模拟。返回的是一个dict,其中errnum表示错误码,0为成功。errmsg为错误信息,方便客户端调试。result为实际返回的数据。
这样的方式调试方便,兼容性好。虽然慢了不少,但其实人的效率更重要。
另外,年轻人要小心overdesign,也许你的应用终生都不会有大的性能压力。 protobuf只是一种serialization的协议,thrift才是一个完整的服务级别的rpc协议(最近grpc也开源了,基本等于Google的thrift,最近准备在go里面玩玩儿)
其实用Thrift省事儿多了,thrift文件作为一个service model是语言无关的,而且可以同时生成server和client,还自带type check。定义好接口,就可以专心去实现业务逻辑了。 可以,厂里一部分用的 Thrift protobuf我没有用过,但是做过一些功课,它的python库质量不错,个人觉得如果不是很有针对性的,特别适合xml的,倒是真可以用它。 现在 RPC 通信框架里比较成熟的就是 Thrift 了,是用C++实现的,我呆了两家互联网公司,都用这个。最早是 Facebook 写的,国内的话规模比较大的据我所知百度也在用。有个传言的八卦是 protobuffer 是早期在 Google 内部流行的,后来有员工跳槽到了 Facebook 才有了 Thrift。
Thrift 的 RPC 框架中像 block, nonblock 的功能都有了,protobuf 好像一心一意做好自己的事情,只提供了序列化和反序列化的功能。 所以你说要我来做抉择,肯定是上 Thrift。
况且,Thrift 一点也不复杂,定义一个传输接口的配置文件就完事了,后面的事情 Thrift 一条龙服务。 最近被GRPC搞到瘋,我是不會告訴你GRPC不支持Python 3的,啊哈哈哈哈 你知道Thrift发布多少年了,至今版本号仍然只是 0.9.2 吗?
老夫作为国内第一批吃螃蟹的,有半年基本上天天在帮别人解决thrift bug问题...后来果断弃坑,加入微软WCF大军。 我想知道有人用这个吗?
Cap'n Proto: Introduction
PS:有Python实现
Welcome to pycapnp’s documentation! thrift 有RPC。 protobuf 就今年Google刚开源grpc只不过还在alpha Thrift是我来现在的这家互联网公司,开始接触的,2007年Facebook发起的项目。
主要是用在后端 internal services,所在互联网公司,thrift是后端服务RPC通信的基础。对题主所在的项目应该是足够的。
同样也是基于python构建的主要后端服务,框架组开源了下面的对thrift封装的库,比较方便的构建服务和客户端的接入。
eleme/thriftpy · GitHub
定义如下pingpong.thrift
service PingPong { string ping(), }

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

VSコードはMacで利用できます。強力な拡張機能、GIT統合、ターミナル、デバッガーがあり、豊富なセットアップオプションも提供しています。ただし、特に大規模なプロジェクトまたは非常に専門的な開発の場合、コードと機能的な制限がある場合があります。

VSコードでJupyterノートブックを実行するための鍵は、Python環境が適切に構成されていることを確認し、コードの実行順序がセルの順序と一致していることを理解し、パフォーマンスに影響を与える可能性のある大きなファイルまたは外部ライブラリに注意することです。 VSコードで提供されるコードの完了とデバッグ機能は、コーディング効率を大幅に改善し、エラーを減らすことができます。
