最初からdubbo+zookeeperプラットフォームを構築

5232 ワード

  • まず、一般的なウェブサイトアーキテクチャが業務の発展に伴い、論理がますます複雑になり、データ量がますます大きくなり、インタラクションがますます多くなった後の通常の方案の進化過程を見てみましょう.

  •       
  • 次に、サービスがますます多くなった後、私たちはどのようなサービスガバナンスをする必要がありますか?

  •        
  • 最後にdubboのアーキテクチャ図
  • 登録センターの選択
    dubboは、さまざまなタイプの登録センターをサポートしています.
  • Multicast登録センター
  • Zookeeper登録センター
  • Redis登録センター
  • Simple登録センター
  • ここではzookeeperを選択しますが、実際のタイプの長所と短所はドキュメントを詳しく見ることができます.
    1:zookeeeperのインストールか、dockerという珍しいrunコマンドでzookeeeperをインストールするか
    docker run -dit --name zookeeper  --hostname  zookeeper-host  -v /data:/data -p 2181:2181 jplock/zookeeper:latest

    2:zkuiをインストールし、zkuiのプロジェクトアドレスを参照してインストールすることができます.zookeeprのノード値に対してCRUD操作を行う管理インタフェースを提供し、セキュリティ認証も提供し、以下の手順でインストールを完了することができます.
  • mvn clean install、実行前にjava環境、maven環境をインストールする必要があります.実行に成功するとjarファイルが生成されます.
  • config.cfgは、前に生成したjarファイルが存在するディレクトリにコピーし、プロファイルのzookeeperアドレスを変更します.
  • 実行jar.(nohup java-jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar&)、後の&に注意して、退出しないという意味です.
  • テスト、http://localhost:9090次のページが表示されると、zookeeperのインストールが正常に動作していることを示します.

  •           
             
    次はdubboサービスを作成し、dubboサービスを使用するプロセスです.dubboプロバイダはjavaプロジェクトを作成します.以下の点に注意してください.
  • パケット依存は,spring,dubboおよびzkclient
  • の3つの主要なパケットを導入すればよい.
    
                org.springframework
                spring-context
                ${spring-framework.version}
            
    
            
                com.alibaba
                dubbo
                2.4.10
                
                    
                        spring
                        org.springframework
                    
                
            
    
            
                com.101tec
                zkclient
                0.3
            
  • インタフェースを定義します.ここでは、プレゼンテーションのために、製品名を返すインタフェースを簡単に定義します.
  • public interface IProduct {
        String getProductName();
    
    }
  • インタフェース実装
  • @Servicepublic class ProductService implements IProduct{    public String getProductName() {       
            return "jim";
        }
    }
  • サービス起動関数
  • プロファイル
  • をロード
  • はcontextを呼び出す.start()
  • は、プログラムを終了しない操作を実行します.ここには多くの方法があります.

  • public class App {    private final static Logger logger = LoggerFactory.getLogger(App.class);    public static void main(String[] args) {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(                "classpath*:applicationContext.xml");
            context.start();
    
            logger.info("dubbo service begin to start");        try {
                System.in.read();
            } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();
            }
        }
    }
  • サービスプロファイル:
  • dubbo:serviceの定義はdubbo:annotation,ref=「productService」と合わせて指定されたidであり、実際の実装クラスは注釈スキャンによって完了し、プロファイルに実装クラスを指定していないが、後の消費者プロファイルに反映される.
  • dubbo:アプリケーションでは、loggerの実装インタフェースを指定できます.
  • dubbo:protocolでは、アクセスログを起動するかどうかを指定できます.これは、オンラインの問題をチェックするのに役立つ場合があります.

  •  
        
        
    
        
    
        
    
        
    
        
    
        
        

    dubbo消費者
         
  • 消費者プロファイルは、プロバイダに比べて簡単です.
  • 消費者の名前を指定します.これは任意で、プロバイダのタスクに関連するマッチングを必要としません.
  • 協定タイプ、zookeeperアドレスを指定します.
  • は、参照されるサービスインタフェースを指定し、ここでidは、サービスプロバイダが定義したref値と同じであることに注意する.

  • 
    
        
    
        
    
        
  • インタフェース注記定義およびインタフェース呼び出し
  • @Controllerpublic class HomeController {    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
        @Autowired    private IProduct productService;
        @RequestMapping(value = "/", method = RequestMethod.GET)    public String home(Locale locale, Model model) {
            logger.info("Welcome home! The client locale is {}.", locale);       
            String productName=this.productService.getProductName();
            model.addAttribute("name", productName);        return "home";
        }
    
    }

      dubbo admin
    dubboサービスを管理するUIツールがありますが、残念ながら公式ドキュメントで提供されたリンクでダウンロードに成功しませんでした.その後、他の場所からダウンロードが完了しましたが、インストールの導入において一時的に問題が発生し、手続きの検討が必要です.
         
    通常、次のインタフェースが表示されます.
  • 管理プロバイダ
  • 管理消費者
  •     
    サービスガバナンス
    上記の手順に従って、サービス側およびクライアントを起動して検証できます.上は単純にdubbo環境を構築し、hello worldのサービスインタフェースを実現しただけで、dubboをうまく使用するには、サービスガバナンスなど、多くの提供のベストプラクティスがあります.
  • ローカルルート
  • ローカル偽装
  • 結果キャッシュ
  • マルチバージョン
  • サービスダウングレード
  • ......