ダボについて:
分散リモート・サービス・コールのためのフレームワークは、コール転送プロトコルと契約は、典型的には、プロトコルのシーケンスを含みます。ダボ自体は、ダボRPC(バイナリシリアライゼーション+ TCPプロトコル)、HTTP呼び出し(バイナリシリアライゼーション+ HTTPプロトコル)、ヘッシアン(バイナリシリアライゼーション+ HTTPプロトコル)、Webサービス(テキストシリアライゼーション+ httpプロトコルとして、リモート呼び出しの様々なサポート)というように。
ノードロールの説明
ノード | ロール説明 |
---|---|
Provider |
サービスプロバイダのサービスを公開 |
Consumer |
リモートサービスコンシューマサービスを呼び出します |
Registry |
サービスの登録と発見レジストリ |
Monitor |
通話統計の数は、監視センターサービスおよび通話時間 |
Container |
コンテナサービスを実行します |
コール関係の説明
- サービスコンテナ、ロード、実行するサービスプロバイダを開始するための責任。
- サービスプロバイダは、あなたは、彼らがレジストリに提供する登録サービスを起動したとき。
- 起動時に消費者のサービスは、あなたがサービスレジストリに登録する必要があります。
- レジストリリターンアドレスリストサービスプロバイダの消費者に変更がある場合、レジストリは、消費者へのデータ接続を変更するには長押しに基づいて行われます。
- サービスの消費者は、アドレスのリスト、ソフトの負荷分散アルゴリズムのプロバイダは、呼び出しが失敗した場合、その後、別のコールを選択し、プロバイダのコールを選択してください。
- サービスコンシューマとプロバイダは、通話の累積数のメモリと時間を呼び出し、時間が監視センターに1分ごとに統計データを送りました。
どのようにダボインタフェースをテストするには:
Pythonのヘッセ+ HTTPウェイ・コール:
1、ダボのプロジェクトは、ヘッセ道のシリアライズ、およびその依存関係を高めます。次の図は、XML構成の例を示しています。
前記基準方法およびアプローチに、(監視と管理中心に見ることができる)インタフェースのアドレスを取得します。
図3に示すように、実装のpython-ヘッセ
python -mピップのpython-ヘッセ行列をインストール
4、Pythonスクリプト呼び出しインタフェース
1 # coding=utf-8 2 from pyhessian.client import HessianProxy 3 url = "http://169.254.210.145:1234/com.ymxdclass.user.service.UserService" 4 params = u"什么我调用成功了吗"
# 创建连接对象 5 service = HessianProxy(full_url)
# 调用方法(重载方法__main__()里发送二进制数据请求,进行调用) 6 res = service.sayHello(params) 7 print(res)
java调用脚本
1 import com.ymxdclass.user.service.UserService; 2 import org.junit.BeforeClass; 3 import org.junit.Test; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 public class ConsumerTest { 7 static ClassPathXmlApplicationContext context; 8 static UserService userService; 9 @BeforeClass 10 public static void beforeClass(){ 11 if(context==null) { 12 // 默认从类路径中加载配置文件 13 context = new ClassPathXmlApplicationContext("consumer.xml"); 14 System.out.println("load"); 15 // 在Spring中还提供了Lifecycle接口,Lifecycle中包含start/stop方法,实现此接口后Spring保证在启动的时候调用其start方法开始生命周期,主要用于控制异步处理过程 16 context.start(); 17 // System.out.println("start"); 18 }
// 创建接口实例(定义接口的引用变量,再引用实现了该接口的实例) 19 userService=(UserService) context.getBean("userService"); 20 21 } 22 @Test 23 public void consumerTestCase1(){
// 调用方法 24 String hello = userService.sayHello("world"); 25 System.out.println("result: " ); 26 System.out.println(userService.sayHello("yummy ")); 27 } 28 29 }