dubbo使用


dubbo使用
  • コンセプト:
  • dubboとは何ですか.Dubboは分散型サービスフレームワークであり、高性能と透明化されたRPCリモートサービスコールスキーム、およびSOAサービスガバナンススキームの提供に力を入れています.その機能は主に:高性能NIO通信とマルチプロトコル集積、サービス動態アドレスとルーティング、ソフト負荷均衡と許容誤差、依存分析と劣化などを含む.
  • dubboの発生の背景インターネットの発展に従って、ウェブサイトの応用規模は絶えず拡大して、通常の垂直応用アーキテクチャはすでに対応することができなくて、分布式サービスアーキテクチャと流動計算アーキテクチャは必ず行わなければならなくて、急いで1つのガバナンスシステムがアーキテクチャの秩序ある発展を確保する必要があります.dubboはこのような大規模なインターネットの下で需要によって生み出された産物である.
  • dubboは何ができますか?実は上の概念からdubboがやっている仕事を見ることができます.ここで簡単に紹介します.
  • 透明化されたリモートメソッド呼び出しは、ローカルメソッドを呼び出すようにリモートメソッドを呼び出し、簡単な構成でAPI侵入はありません.
  • ソフト負荷等化及びフォールトトレランス機構は、F 5などのハードウェア負荷等化器の代わりにイントラネットで代替でき、コストを低減し、単点を低減できる.
  • サービス自動登録と発見は、サービスプロバイダアドレスを書き込む必要がなくなり、登録センターはインタフェース名に基づいてサービスプロバイダのIPアドレスを照会し、サービスプロバイダの追加または削除をスムーズにすることができる.
  • Dubboは全Spring配置方式を採用し、アクセスアプリケーションを透明化し、アプリケーションにAPI侵入がなく、SpringでDubboの配置をロードするだけでよい.DubboはSpringのSchema拡張に基づいてロードする.


  • アーキテクチャ:dubboを使用する前にdubboのノードプロパティを簡単に理解する必要があります.
          :
    Provider:           。
    Consumer:             。
    Registry:             。
    Monitor:                    。
    Container:       。  
    
    の詳細については、リンクを参照してください.
  • 結合項目紹介:
  • クイック起動:次の例ではmavenを使用して構築されます.
  • 最初のステップ:依存jarパッケージの追加dubbo依存説明
  • を参照してください.
  • 第2歩:インストール登録センターzookeeperを登録センターとして使用する場合は、関連ドキュメントを参照してインストール構成を行ってください.zookeeperのインストール構成は簡単です.ここでは説明しません.
  • ステップ3:サービスプロバイダ
  • サービスインタフェースを定義します:(このインタフェースは、サービスプロバイダと消費者が共有する個別にパッケージ化する必要があります)DemoServices.java
    package com.alibaba.dubbo.demo; public interface DemoService{ String sayHello(String name); }
  • サービスプロバイダでサービスインタフェースを実装する:(サービス消費者に対して実装を隠す)
    package com.alibaba.dubbo.demo.provider; import com.alibaba.dubbo.demo.DemoService; public class DemoServiceImpl implements DemoService { public String sayHello(String name) { return “Hello ” + name; } }
  • Spring構成宣言暴露サービス:provider.xml




  • 問題にぶつかる
    1.イベント処理デッドサイクル
    **問題の説明:**dubboはより低いバージョンのspringをサポートし、より低いバージョンのspringにはbugが存在します.すなわち、beanにサイクル依存性があり、springコンテナが起動するとデッドサイクルが発生します.これはdubboのbugではありません.**ソリューション:*springアップグレード
    2.異常処理
    **問題説明:*dubboには異常フィルタクラスがあり、以下の異常であれば直接投げ出す:1.checked異常、2.メソッド署名に声明があり、3.異常クラスとインタフェースクラスは同じjarパッケージにあり、4.JDKが持参した異常、5、Dubbo自体の異常である.そうでない場合、WrapレイヤRuntimeExceptionは異常に放出されます.私たちのシステムでカスタマイズされた例外は、放出された例外情報フォーマットに一定の要件(例外コードを含む)があるため、ocean.core.exception.ExceptionInfoGetterインタフェースを実現する必要があります.WrapのRuntimeExceptionが異常であれば、異常情報の友好性に影響します.ソリューション:dubbo異常フィルタクラスを変更し、ocean.core.exception.ExceptionInfoGetterインタフェースが実装されているかどうかを判断します.
    3.zkclient例外を明示的に参照
    **問題の説明:*dubboはzokeeperのクライアントを2つサポートしています.1つはzkclientで、もう1つはcuratorです.dubboはZookeeperRegistryクラスでzkclientパッケージの異常クラスを明示的にimportし、zookeeperクライアントをcurator時報ClassNotFoundException異常に変換した.ソリューション:ソリューション1、curatorを使用するときにzkclientjarパッケージも追加します.シナリオ2では、ZookeeperRegistryを修正し、明示的な参照を削除します.
    4.curatorクライアントバージョンの問題
    問題の説明:dubbo依存のcuratorバージョンはNetflix/curatorで、このバージョンは1年前に更新が停止し、現在curatorはapache/curatorでメンテナンスされています.現在、curatorクライアントのアプリケーションはzkclientよりも多く、使用の見通しが良いため、dubboのzookeeperクライアントをcuratorに変更するつもりです.ocean.config依存のcuratorバージョンと一致するように、dubbo依存のcuratorバージョンを変更するだけです.解決策:dubbo依存のcuratorをNetflix/curatorからapache/curatorに変更し、CuratorZookeeperClientを変更し、Netflix/curatorのimportをapache/curatorのimportに変更する.
           dubbo         ,          "dubbo    "    ;
             dubbo         ,          "dubbo     ";  
           "dubbo     "。
    

    評価
  • 自身の利点:強力なポリシーの成熟度と機能の成熟度、ユーザーのカスタム機能の拡張をサポートし、メカニズムを自動的に発見し、クラスタの許容誤差、ソフト負荷の均衡など.具体的には、dubboユーザーガイドに関する章を参照してください.
  • タオバオHSFと比較:
  • DubboはHSFの配置方式より軽量で、HSFは指定されたJBossなどの容器を使用することを要求し、JBossなどの容器にsarパッケージ拡張を加える必要があり、ユーザーの運行環境への侵入性が大きく、WeblogicやWebsphereなどの他の容器で運行する場合は、HSFのClassLoaderロードに対応するために容器を自分で拡張する必要があるが、Dubboには何の要求もない.任意のJava環境で実行できます.
  • DubboはHSFよりも拡張性が高く、二次開発が容易であり、一つのフレームワークがすべてのニーズをカバーすることは不可能であり、Dubboは常に第三者の理念に平等に対応している.すなわち、すべての機能は、Dubboのオリジナルコードを修正することなく、周辺拡張、Dubbo自身が内蔵した機能を含め、第三者と同様に拡張に実現することができる.HSFは、もしあなたが機能を追加したり、一部を交換したりするのは難しいです.例えば、支付宝と淘宝は異なるHSF分岐を使用しています.機能を追加するときにコアコードを変更したので、分岐をコピーして単独で発展しなければなりません.HSFは現在、オープンソースが出ても、アーキテクチャを書き直さない限り、多重化しにくいです.
  • HSFは多くの内部システムに依存している.例えば、配置センター、通知センター、監視センター、単点登録など、オープンソースには多くの剥離作業が必要であるが、Dubboは各システムの統合に拡張点を残し、すべての依存を整理し、同時にオープンソースコミュニティに代替案を提供し、ユーザーは直接使用することができる.
  • DubboはHSFより機能が多く、ClassLoader隔離のほか、Dubboは基本的にHSFのスーパーセットであり、Dubboもより多くのプロトコルをサポートし、より多くの登録センターの統合をサポートし、より多くのウェブサイトアーキテクチャに適応する.
  • 瑕疵
  • dubboの安全メカニズムは比較的に弱くて、原因:dubboはアリババの1つのオープンソースの枠組みに属して、アリババはオープンプラットフォームがあって安全とフローコントロールを処理して、だからDubboは安全の面で実現する機能は比較的に少なくて、基本的に君子が小人を防がないことを防いで、ただ誤調用を防止します.補償:トークン検証
  • は分散をサポートしていませんが、分散トランザクションの拡張実装をサポートしています.dubbo責任者の梁飛氏の観点によると、これは瑕疵ではありません.彼のブログを参照してください.
  • 多言語サポートは弱く、Javaとc++(c++オープンソース検証が不十分)
  • をサポートしています.



    参考資料
    dubboユーザーガイド
    dubbo開発者ガイド
    dubbo管理者ガイド
    ネットがXdubboをオープンソースにする時、restなどの新しい特性を支持して、後で研究します
    その他
    現在dubboの最新バージョンは2.5.3で、dubboの公式バージョンは更新メンテナンスを停止し、dubboの開発チームはすでに解散している.しかし、これはdubboの使用と普及に影響を与えず、dubboはユーザーがカスタマイズした業務拡張をサポートし、ユーザーは実際のプロジェクトの需要と結びつけてdubboを改造し、拡張して使用することができる.