インタビューの質問
ダボどの通信プロトコルをサポートしていますか?どのような直列化プロトコルをサポートしていますか?ヘッセのデータ構造についての話?PB知っていますか?なぜPB効率が最も高いのですか?
インタビュアー心理分析
質問では、基本的な動作原理ダボについての話、そしてそれはあなたが知っておくべき、少なくともあなたが分かれ、通常RPCリクエスト、登録、発見、アクセスを開始したか、その後、これらは基本的なもの何層ダボを知っています。
そして、あなたはそれが根本的なRPCのための通常の時間に行く方法で、本契約のシーケンスを依頼するだろうな最初のステップとして、深さを求めることができますか?
フェイス質問解析
シリアライゼーションは、データ構造またはオブジェクトの数は、バイナリ文字列プロセスに変換されるデシリアライゼーションは、データ構造やプロセスにオブジェクトで発生シリアライズバイナリ文字列中に変換されます。
ダボのサポート異なる通信プロトコル
- ダボ契約
デフォルトはダボプロトコル、単一の長い接続を取ることです、NIO非同期通信は、ヘッセとしてシーケンス契約に基づいて、行われます。シナリオが使用されている:(100キロバイト以内要求ごと)データ転送の少量が、高い並行性。
、同時実行性の高いシナリオをサポートするいくつかのマシン上で通常のサービスプロバイダが、サービスの消費者の何百もあるために、回日数百万に達し呼び出すことができます!長い接続は、各サービスで、最も適切であると、この時間は、100の接続の合計が、長い消費者が接続することができる維持することです。次いで直接長さベースの非同期通信の背後に接続されたNIOは、高い同時要求をサポートすることができます。
長い接続、接続を確立することである人気のポイントは、要求を送信した後、接続を確立する必要が持続しません。
短い接続を使用して、要求を送信する前にするたび、あなたは接続を再確立する必要があります。
- RMIプロトコル
状況のコンシューマとプロバイダの同様の数のために、Javaのバイナリシリアル、複数の短い接続を行く、通常より少ないと、ファイルを転送するために適用されます。
- ヘッセ合意
ヘッセ直列化プロトコル、ショート接続の複数を取り、さらに、通常あまり使用され、ファイル転送のためのケースの数より多くの消費者の数を提供するように適合されます。
- httpプロトコル
JSONシリアライズを移動します。
- webservice
走 SOAP 文本序列化。
dubbo 支持的序列化协议
dubbo 支持 hession、Java 二进制序列化、json、SOAP 文本序列化多种序列化协议。但是 hessian 是其默认的序列化协议。
说一下 Hessian 的数据结构
Hessian 的对象序列化机制有 8 种原始类型:
- 原始二进制数据
- boolean
- 64-bit date(64 位毫秒值的日期)
- 64-bit double
- 32-bit int
- 64-bit long
- null
- UTF-8 编码的 string
另外还包括 3 种递归类型:
- list for lists and arrays
- map for maps and dictionaries
- object for objects
还有一种特殊的类型:
- ref:用来表示对共享对象的引用。
为什么 PB 的效率是最高的?
可能有一些同学比较习惯于 JSON or XML 数据存储格式,对于 Protocol Buffer 还比较陌生。Protocol Buffer 其实是 Google 出品的一种轻量并且高效的结构化数据存储格式,性能比 JSON、XML 要高很多。
其实 PB 之所以性能如此好,主要得益于两个:第一,它使用 proto 编译器,自动进行序列化和反序列化,速度非常快,应该比 XML 和 JSON 快上了 20~100 倍;第二,它的数据压缩效果好,就是说它序列化后的数据量体积小。因为体积小,传输起来带宽和速度上会有优化。