問題タブ [thrift]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
12772 参照

c++ - Thrift と Protocol バッファ

かなり長い間 PB を使用していますが、Thrift は常に頭の片隅にありました。

私が考える倹約の主な利点は次のとおりです。

  1. ネイティブ コレクション (つまり、ベクトル、セットなど) と PB の繰り返しは、類似しているがまったく似ていない機能を提供します (ドキュメントに「ほとんどの場合必要ではない」と記載されている RepeatedField を掘り下げない限り、反復子はありません)。
  2. 独自のフックをプラグインするだけでなく、適切な RPC 実装が提供されます。
  3. より公式にサポートされている言語 (PB は、Java、C++、Python の「公式」サポートを提供しています)

スリフトの短所:

  1. RPC 実装は、独自の (たとえば) 暗号化/認証レイヤーを一番上にプラグインできないことを意味します。
  2. Windows のサポートはあまり良くないようです。
  3. PB には、より良いとまではいかなくても、よりアクセスしやすいドキュメントがあるようです。

中性:

  • Windows (Thrift) での .lib/.dll の不明なサイズ。
  • Windows での .lib のサイズが大きい (PB ですが、大幅に小さい -lite を提供します)。
  • 速度に関しては、どちらも似ているようです。

まだ思い切って Thrift に切り替える準備ができていません。長所/短所、またはいずれかの方法を選択する理由を誰か教えてもらえますか?

ありがとう!

0 投票する
1 に答える
460 参照

range - Cassandra で range_slices をロードする際の問題

Cassandra からデータを取得するのに少し問題があります。主な問題は次の例外です。

それで、私は何をしますか?ネットワークのトポロジを取得するために使用describe_ringし、ネットワーク内の各ノードに問い合わせてdescribe_splits、範囲をフェッチするために使用する必要があるトークンを取得しstart_tokenますend_token。キーレンジ。

何か案は?

0 投票する
2 に答える
147 参照

web-services - 「do_GET」と本格的な Rails スタイルのルーティングの間に中間点がないのはなぜですか?

いくつかのサービスを Web に公開しようとしています。これらのサービスにアクセスする jQuery ベースの JavaScript コードを含む静的な Web ページがあり、これらのサービスにアクセスする可能性のあるあらゆる種類のアプリケーションもあります。(または、誰も気にしません。それもかなり可能です:-)

各サービスは、いくつかの入力パラメーターに作用し、いくつかの出力パラメーターを返すメソッドのコレクションとして適切に定義されます。「ID」の概念を除いて、そのほとんどは REST です。これらのサービスにはログインが必要であり、ログインすると、どのサービスでどのメソッドを使用できるか、およびどの特定のエンティティを使用できるかについてのアクセス許可が設定されます。これらの方法を使用して対処することが許可されています。

理想的には、JSONP を使用してサービスを公開し、サービスをサイト間で簡単に利用できるようにしたいと考えています。これらの静的 Web アプリケーションは、すべてアプリケーション サーバーのドメインから提供される必要はありません。

データ型のセットはかなり基本的です -- varchar (255 文字)、text (8191 文字)、id (32 文字、C スタイルの識別子制約)、double、long (JavaScript では難しい)、bool、datetime、email (reges に一致する varchar) と url (regex に一致する varchar) は、非常に長い間、おそらく十分でしょう。

可能であれば、マルチスレッド コアでスケーリングできるアプリケーション サービス テクノロジを使用してこれらのサービスを実装したいと考えています。最近のプレーン ミッドレンジ サーバーでは 24 スレッドが標準です。Python や Node.js に固​​執すると、スレッド化がサポートされていないため不安になります。また、静的型付けは、Python、Node.js、PHP、および Ruby にも影響する特定のクラスのバグを防ぐと信じているため、型付けを静的にしたいと考えています。

また、Linux でもサービスを提供したいと考えています。それはかなり難しい要件です:-)

静的言語の世界では、サーバー フレームワークまたはフレームワーク アプローチは実際にはわずかしかありません。Mono には HttpListener があります。Java を使用した Jetty があります。他にもいくつかあります。J2EE、ASP.NET など、私が望むよりも多くのオーバーヘッドを持つ、より深いフレームワークもいくつかあります (動的な世界では、Cake.PHP、Rails、Django などがあります)。

したがって、最高の世界では、GET URL /foo/bar?arg1=2&arg2=xyzzy を、int 型および string 型の引数 arg1 および arg2 を取る、foo 型、メソッド bar で記述したオブジェクトにマップすることを望みます。 (いう)。HTTP GET とオブジェクト メソッドの間にあるサーバー グルーに、次の 2 つのことを実行させたいと考えています。メソッドが 1 つ以上の値 (キーと値のペア) を返すと、接着剤は戻り値も仕様に従っていることを確認し、適切な JSON に変換し、返す処理を処理する必要があります。コード内で例外がスローされた場合、適切なエラー結果。

私はこの種の解決策を高くも低くも探してきましたが、私が見つけたすべての解決策はかなりかけ離れています。JSP と ASP はすべて、HTML の前提から始まります。私は通常、JSON を生成していますが、これは構文とうまく統合されません (控えめに言っても)。JSPX やその他の多くのテクノロジ (HttpListener、CGI、Python Twisted など) はすべて「do_GET」レベルで停止します。つまり、オブジェクトへのディスパッチも、パーミッション制御も、型チェックもありません。ただし、すべての上位レベルのフレームワークは、その上にさらに多くの機能を追加し、多くの場合、私が必要とするものではない複雑なルーティングを追加します。また、多くの場合、アクセス許可のチェックは行わず、代わりにそれをそのままにしておきます。各関数の実装で手動で記述する必要があります。

私が探しているものに最も近いのは Thrift だと思います。ただし、それはまだ許可チェックを行わず、「PHP サーバー」サポートは、Apache と統合するのではなく、ポート 80 でリッスンする愚かな PHP cli プロセスのようであり、JSONP をサポートするように設定されていません。

私は何かを逃しましたか?型チェックとパーミッションチェックと単純なオブジェクトメソッドのディスパッチを行い、邪魔になる他の多くの面倒な作業をせずに呼び出すことができる(できれば静的に型付けされ、マルチスレッドをサポートする)サーバーテクノロジーがありますか?に) JSONP? Thrift を拡張する必要がありますか? 各メソッドにアクセス許可の制約を追加することは、かなりの拡張になりますが、少なくとも、Thrift が持つその他のサポートを得ることができます。(そして、JSONP サポートを追加する必要があり、...)

0 投票する
1 に答える
1675 参照

java - Thriftバージョン間のデータ形式の互換性

通信にThrift0.2ライブラリを使用するシステムをアップグレードしようとしています。これはかなり古いバージョン(最新の安定版は0.5)であり、パフォーマンスが大幅に向上したと言われているため(0.4)、アップグレードしたいと思っていました。ただし、基になるデータ形式に互換性のない変更があったかどうかに関する情報は見つかりませんでした。バージョン管理スキームに基づいて、存在しないことを望みます。ただし、これらはまだ1.0より前のバージョンであるため、安定性への期待は低いかもしれません。

データ形式自体に下位互換性があることを知りたいのは、コンポーネントを1つずつアップグレードできるようにするためです。

とにかく:私は、より多くの情報を持っている誰かが私に正しい文書を教えてくれることを望んでいました。

0 投票する
3 に答える
7181 参照

authentication - 倹約で認証と承認を処理するには?

倹約を利用したシステムを開発しています。クライアントの ID を確認し、操作を ACL で処理したいと考えています。Thrift はそれらをサポートしていますか?

0 投票する
6 に答える
38608 参照

protocol-buffers - Apache Thrift、Google Protocol Buffers、MessagePack、ASN.1、Apache Avro の主な違いは何ですか?

これらはすべて、バイナリのシリアル化、RPC フレームワーク、および IDL を提供します。それらと特性 (パフォーマンス、使いやすさ、プログラミング言語のサポート) の主な違いに興味があります。

他の同様の技術を知っている場合は、回答に記載してください。

0 投票する
2 に答える
2805 参照

java - プログラムで Cassandra 0.7 にインデックスを追加する方法

http://www.riptano.com/blog/whats-new-cassandra-07-secondary-indexesでデモをプログラムで実行しようとしましたが、結果は CLI で実行した場合とは異なります。Cassandra は、インデックスが追加された後にのみ列にインデックスを付けることができるようです。以前のデータはすべて索引付けされていません。

完全なソース コードは次のとおりです。

結果は次のとおりです。

0 投票する
1 に答える
1592 参照

cassandra - Thrift API の使用に関する問題

Ubuntu VM に Cassandra をインストールし、ソースをビルドしました。Thrift API を使用しようとしていましたが、ビン内の libthrift-0.5.jar は、実行中の cassandra インスタンスとやり取りするために必要なファイルではないようです。

Thrift JAR をインストールする他の方法はありますか? 私は見つけた

/カサンドラ/インターフェース/倹約

Cassandra とのインターフェースに関連する Thrift ソースがあるフォルダー。コマンドラインから実行しようとするant gen-thrift-javaと、次のメッセージでビルドが失敗しました。

実行に失敗しました: java.io.IOException: プログラム "thrift" を実行できません (ディレクトリ "/home/user/cassandra/interface" 内): java.io.IOException: エラー = 2、そのようなファイルまたはディレクトリはありません

ここで Thrift を使用するために何をする必要があるかについて、誰かアイデアを教えてもらえますか?

ありがとう

0 投票する
4 に答える
2449 参照

interop - Erlangユニバーサルバイナリフォーマット? 使ってる人いますか?

私は最近、この 2002 年のカンファレンスペーパー( Joe Armstrong によるErlang を外部の世界と対話するようにする) に出くわしました。

プラットフォーム間通信のために Apache Thrift に集中する必要がありますか? (私が選択した解決策には、少なくとも Erlang が含まれます)

0 投票する
2 に答える
458 参照

cassandra - Cassandra アクセスに Thrift API を使用することが望ましくない理由は何ですか?

Cassandra に Thrift インターフェースを使用することが推奨されない理由を列挙してください。考えられるメリットとデメリットは?