序文
インターネットの開発により、Webサイトアプリケーションの規模は継続的に拡張されており、従来の垂直アプリケーションアーキテクチャはもはやそれに対処できません。分散サービスアーキテクチャとモバイルコンピューティングアーキテクチャが不可欠です。 Dubboは分散サービスフレームワークであり、この場合に生まれました。現在、コアビジネスは独立したサービスとして抽出されているため、フロントエンドアプリケーションがより迅速かつ安定して対応できるようになりました。
ダボとは
Dubboは、Alibabaのオープンソース分散サービスフレームワークです。その最大の特徴は、階層化された方法で構成されていることです。この方法は、レイヤー間で切り離す(またはゆるい結合を最大化する)ことができます。サービスモデルの観点から見ると、Dubboは非常にシンプルなモデルを採用しています。プロバイダーがサービスを提供するか、消費者がサービスを消費します。したがって、この点に基づいて、サービスプロバイダーとサービス消費者の2つの役割を抽象化できます。登録センター、契約サポート、サービス監視およびその他のコンテンツについて
Dubboは何ができますか
ウェブサイトが大きくなると、開発効率を改善し、パフォーマンスを最適化し、主要な競争力のあるリソースを節約するために、アプリケーションが分割され、サービス(マイクロサービス)が必要になることは避けられません。
より多くのサービスがますます多くのサービスが爆発し、構成管理が非常に困難になり、F5ハードウェアロードバランサーの単一ポイント圧力が大きくなっています。
さらなる開発の場合、サービス間依存関係は複雑になり、どのアプリケーションがどのアプリケーションの前に開始されるかを知ることさえできません。アーキテクトはアプリケーションのアーキテクチャ関係を完全に説明できません。
その後、サービスの呼び出しの数が大きくなり、より大きくなり、サービス容量の問題が公開されます。このサービスにはどのくらいのマシンサポートが必要ですか?いつマシンを追加すればよいですか?等……
これらの問題に遭遇した場合、Dubboを使用してそれらを解決できます。
今回私があなたと共有するのは、Dubbo Frameworkアプリケーションの初期構成とZookeeper登録センターの使用です。登録センターに関しては、私が使用したものには2種類しかありません:ZookeeperとEureka。私はdubboでZKを使用し、EurekaはSpringcloudで使用します。したがって、私はあなたにそれがあなたに役立つことを望んで、後でマイクロサービスに関するいくつかの章をあなたと共有します。
登録センターZookeeperをインストールします
Dubbo Frameworkプロバイダーと消費者
Dubbo-Adminの展開
登録センターZookeeperをインストールします
まず、Zookeeperのダウンロードアドレスをオンラインで検索する必要があります。私はLinuxシステムを使用しているので、Zookeeper-3.3.6.tar.gzパッケージをダウンロードし、tar -ZXVF Zookeeper-3.3.6.tar.gzを介してそれを解凍しました。一般的なパッケージの構成ファイルはデフォルトのサンプルバージョンであり、Zookeeperのデフォルトの構成ファイル名はZoo.cfgのみであることに注意してください。毎回ファイル名を指定しないために、confディレクトリにzoo.cfgという名前の構成ファイルを作成する必要があります。ファイルのコンテンツは、zoo_sample.cfgからコピーするか、ファイルの名前を変更できます。コンテンツは次のとおりですvim zoo.cfg:
#各Tickticktime = 2000 #heartBeat頻度の数百万秒#初期#同期フェーズが取得できるダニの数= 10 #Restrict接続クライアントがConnectClientPort = 2081 #ZooKeeper外部ポートをConnectConnectConnectCluent
ここではパラメーター情報を変更し、デフォルトを使用しません。 Linuxでファイルコンテンツを編集する方法について、一般的に使用されているいくつかのコマンドを簡単に紹介します。
Vim Zoo.cfg:ファイルコンテンツを表示します
挿入:挿入コマンドを実行します
ESC:コマンドをキャンセルしてから押します:Q:exit、:wq:保存と終了
Zoo.cfgを持っている場合、zkserver.shファイルを見つけるためにBinディレクトリを入力し、./zkserver.sh startコマンドを実行してZookeeper登録センターを開始するだけです。通常の起動プロンプトは次のとおりです。
通常、Zookeeperは登録センターとして別のサーバーにあり、プログラム(ここでは私のローカルを参照)は別の登録センターに電話する必要があります。さらに、登録センターは、Zookeeperのオープンポートを接続できるかどうかを確認する必要があります。私のローカルはWindows 10なので、Zookeeperクライアントを介してポートを確認する必要はありません。 Telnet IP 2081を使用して、ポートが開いているかどうかを検出する必要があります。
Dubboフレームワークプロバイダーと消費者
まず第一に、便利なため、ビジネスによって抽出されたパブリックインターフェイスである統一インターフェイスを定義する必要があります。このインターフェイスをモジュールに個別にパッケージ化します。こちらがdubbo_apiです。このモジュールで次のインターフェイスを定義します。
パブリックインターフェイスuserservice {list <mouser> getusers(); }次に、Dubbo_APIモジュールに依存し、Userserviceインターフェイスを実装するプロバイダーモジュールを作成します。コードは次のとおりです。
パブリッククラスuserserviceimpl explence userservice {@value( "$ {server.port}")private int port; / ** * @return */ @Override public List <Mouser> getUsers(){list <Mouser> list = new ArrayList <>(); for(int i = 0; i <5; i ++){mouser user = new Mouser(); user.setUsername( "shenniu" + i); user.setuserpwd( "port:" + port); list.add(user); }返品リスト。 }}サービスプロバイダーとして、Dubboフレームワークを使用するには、最初にDubboを導入してから構成を行う必要があります。まず、Dubbo_ProviderモジュールでMavenを通じてDubboの依存関係を導入する必要があります。 Zookeeperは登録センターで使用されているため、Mavenを介して対応する依存関係も導入する必要があります。
<依存関係> groupId> org.apache.zookeeper </groupid> <artifactid> zookeeper </artifactid> <version> 3.4.8 </version> </dependency> <dependency> <groupid> com.101tec </groupId> <artifactid> zkclient < <GroupId> com.Alibaba </groupId> <artifactid> dubbo </artifactid> <バージョン> 2.5.3 </version> <exclusions> <exprusion> org.springframework </groupid> <artifactid> spring </artifactid> </exprusion> <artifactid> dubbo_api </artifactid> <バージョン> 0.0.1-snapshot </version> </dependency>
依存関係を完了した後、残りはDubboのプロバイダーを構成し、Resources/Dubbo-Conf/Server.xmlの構成ファイルとファイルコンテンツを作成することです。
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:dubbo = "http://code.alibabatech.com/schema/dubbo" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/bean/beans. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <! - > <dubbo:dubbo:application name =" demo-provider "/> <! protocol = "zookeeper" address = "192.168.168.168:2081" /> <! - dubboプロトコルを使用してポート20880でサービスを公開します。 ref = "userservice"/> <! - ユーザーサービスインターフェイスの実装 - > <bean id = "userservice"/> </beans>
dubboproviderApplicationポータルにリソースインポート@Importresource( "classpath:dubbo-conf/*。xml")を追加し、当社のサービスプロバイダーがここに記入されています。スタートアップログを確認してください:
サービスプロバイダーがいつ開始されるか例外はありません。発信者を見て、dubbo_consumerのモジュールを作成し、dubbo_apiパブリックインターフェイスのモジュール依存関係を導入し、usercontrollerを作成し、Getユーザーインターフェイスを公開します。
@RestControllerPublic Class UserController {@Autowired Private Userservice userservice; @getMapping( "/users")public list <mouser> getusers(){return userservice.getusers(); }}ここのユーザーサービスは、パブリックインターフェイスの注入です。エンコーディングが完了した後、消費者側はDubboとZookeeperの依存関係を導入します。
<依存関係> groupId> org.apache.zookeeper </groupid> <artifactid> zookeeper </artifactid> <version> 3.4.8 </version> </dependency> <dependency> <groupid> com.101tec </groupId> <artifactid> zkclient < <GroupId> com.alibaba </groupid> <artifactid> dubbo </artifactid> <version> 2.5.3 </version> <explusions> <explusion> org.springframework </groupid> <artifactid> spring </artifactid> </exprusion>
また、名前リソース/dubbo-conf/client.xmlという名前の構成ファイルを作成し、アプリケーションエントリにこのリソースを紹介します。
@importresource( "classpath:dubbo-conf/*。xml")@springbootapplication class dubboconsumerapplication {public static void main(string [] args){springapplication.run(dubboconsumerapplication.class、args); }}client.xmlの構成コンテンツは次のとおりです。
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:dubbo = "http://code.alibabatech.com/schema/dubbo" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/bean/beans. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <! - service name-> <dubbo:application name =" demo-consumer "/> <! protocol = "zookeeper" address = "192.168.168.168:2081" /> <! - ユーザーサービスインターフェイス - > <dubbo:参照id = "userservice" interface = "service.userservice" /> < /beans>
現時点では、シンプルなサービスプロバイダー、サービス発信者の構成、エンコードが完了し、3つのモジュールが次のとおりです。
その後、プロバイダーと消費者をそれぞれ開始します。次に、消費者によって公開されたコントローラーインターフェイスを介してインターフェイスをリクエストします。ここの私の住所はhttp:// localhost:8082/users:
効果は、消費者が挿入されたuserserviceインターフェイスコールgetUsers()を介してプロバイダーによって結果を返した結果です。これは、ダボフレームワークの単純な使用が成功したと見なされていることも意味します。
Dubbo-Adminの展開
人気のあるRPCフレームワークとして、Dubboにはこのオープンソース監視ツールDubbo-Adminがあります。インターネット上で既製のdubbo-admin.warパッケージは、今すぐ使用できないか、ダウンロードするためにcssdnポイントが必要だと言わざるを得ません。多くのバージョンがあり、少し難しいです。 gitに移動してソースコードをプルし、自分でパッケージ化します。 gitアドレスは、https://github.com/apache/incubator-dubbo-opsです。それを引き下げた後、私たちはダッボ・アドミンプロジェクトに注意を払う必要があり、他のことは当面を無視することができます。プロジェクトを開いた後、次のスクリーンショット構成を変更する必要があります(パッケージ化された構成ファイルを変更することもできます)。
#ZooKeeper Configuration AddressおよびPort Dubbo.Registry.Address = ZooKeeper://127.0.0.1:2081#バックエンドログインパスワードdubbo.admin.root.password = rootdubbo.admin.guest.password = guest
パッケージを実行した後、Dubbo-Admin-2.0.0.warパッケージを取得し、Tomcatに入れて、ブラウザを閲覧します。アカウントとパスワードはどちらもルートです。ログインした後、以前に始めたプロバイダーと消費者を見ることができます。これは、Dubbo-Admin Monitoring Registration Center Serviceのインターフェイスです。これらのサービスを直接クリックできます。あまり言わない場合は、自分で試してみてください。
gitアドレス:https://github.com/shenniuboxing3 nugetパブリッシングパッケージ:https://www.nuget.org/profiles/shenniuboxing3
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。