dubbo使用
5172 ワード
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のノードプロパティを簡単に理解する必要があります. 結合項目紹介: クイック起動:次の例では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ユーザーガイドに関する章を参照してください. タオバオ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を改造し、拡張して使用することができる.
:
Provider: 。
Consumer: 。
Registry: 。
Monitor: 。
Container: 。
の詳細については、リンクを参照してください.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; } }
問題にぶつかる
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ユーザーガイド
dubbo開発者ガイド
dubbo管理者ガイド
ネットがXdubboをオープンソースにする時、restなどの新しい特性を支持して、後で研究します
その他
現在dubboの最新バージョンは2.5.3で、dubboの公式バージョンは更新メンテナンスを停止し、dubboの開発チームはすでに解散している.しかし、これはdubboの使用と普及に影響を与えず、dubboはユーザーがカスタマイズした業務拡張をサポートし、ユーザーは実際のプロジェクトの需要と結びつけてdubboを改造し、拡張して使用することができる.