SpringBoot-配布済み

1つ、配布

1.分散の基本概念

分散システムは、ネットワークを介して通信し、一般的なタスクを完了するために作業を調整するコンピューターノードのグループで構成されるシステムです。目的は、より多くのマシンを使用してより多くのデータを処理することです。

分散システムでは、zookeeper + dubboの組み合わせが中国で一般的に使用されており、Spring Bootは、フルスタックのSpring、Spring Boot + SpringCloudの使用を推奨しています。

2.アプリケーションアーキテクチャの開発

ここに画像の説明を挿入
(1)単一アプリケーションアーキテクチャ
Webサイトのトラフィックが非常に少ない場合、必要なアプリケーションは1つだけであり、すべての機能が一緒に展開されて、展開ノードとコストが削減されます。現時点では、追加、削除、変更、チェックの作業負荷を簡素化するために使用されるデータアクセスフレームワーク(ORM)が重要です。
ここに画像の説明を挿入

(2)垂直アプリケーションアーキテクチャ
訪問数が徐々に増加すると、マシンに単一のアプリケーションを追加することによる加速はますます小さくなり、アプリケーションは効率を向上させるためにいくつかの無関係なアプリケーションに分割されます。現時点では、フロントエンドページの開発を加速するために使用されるWebフレームワーク(MVC)が重要です。
ここに画像の説明を挿入

(3)分散サービスアーキテクチャ
垂直アプリケーションが増えると、アプリケーション間の相互作用が避けられなくなり、コアビジネスが独立したサービスとして抽出され、安定したサービスセンターが徐々に形成され、フロントエンドアプリケーションがより迅速に対応できるようになります。変化へ。市場の需要。現時点では、ビジネスの再利用と統合を改善するための分散サービスフレームワーク(RPC)が重要です。
ここに画像の説明を挿入

(4)モバイルコンピューティングアーキテクチャ
サービスが増えると、容量評価や小さなサービスリソースの浪費などの問題が徐々に発生しますが、このとき、アクセスプレッシャーに基づいてクラスター容量をリアルタイムで管理するディスパッチセンターを追加する必要があります。クラスターの使用率を向上させるため。現時点では、マシンの使用率を向上させるために使用されるリソーススケジューリングおよびガバナンスセンター(SOA)が重要です。
ここに画像の説明を挿入

二、ダボ-動物飼育係

1. ZooKeeper(登録センター)

ZooKeeperは、分散型のオープンソース分散型アプリケーション調整サービスです。分散アプリケーションに一貫したサービスを提供するソフトウェアです。提供される機能には、構成の保守、ドメイン名サービス、分散同期、グループサービスなどがあります。

2、ダボ

(1)Dubboの概念
Apache Dubboは、高性能で軽量なオープンソースのJava RPCフレームワークであり、インターフェイス指向のリモートメソッド呼び出し、インテリジェントなフォールトトレランスと負荷分散、および自動サービス登録と検出の3つのコア機能を提供します。サービスモデルの観点から、Dubboは、プロバイダーがサービスを提供するか、コンシューマーがサービスを消費するという非常に単純なモデルを採用しているため、これに基づいて、サービスプロバイダーとサービスコンシューマーを抽象化できます(コンシューマー)。

(2)RPC:
RPC(Remote Procedure Call)は、プロセス間の通信方法であるリモートプロシージャコールを指します。これは技術的な考え方であり、仕様ではありません。これにより、プログラムは別のアドレス空間(通常はネットワークを共有する別のマシン)で関数を呼び出すことができます。メモリ空間にないため、直接呼び出すことはできません。呼び出しのセマンティクスを表現するには、ネットワークを使用する必要があります。呼び出されたデータを伝達し、ローカルを呼び出します。メソッドの構文は同じですが、ネットワーク送信が必要です。

注:
RPCには、通信とシリアル化の2つのコアモジュールがあります。

(3)ダボのコアコンポーネント
ここに画像の説明を挿入

  • サービスプロバイダー(プロバイダー):サービスを公開するサービスプロバイダー。サービスプロバイダーが起動すると、提供するサービスをレジストリに登録します。
  • サービスコンシューマー(コンシューマー):リモートサービスを呼び出すサービスコンシューマー。サービスコンシューマーが開始すると、必要なサービスのレジストリにサブスクライブします。サービスコンシューマーは、ソフトロードバランシングアルゴリズムに基づいてプロバイダーアドレスリストから選択します。1つプロバイダーが呼び出しを行い、呼び出しが失敗した場合は、別の呼び出しが選択されます。
  • レジストリ:レジストリは、サービスプロバイダーのアドレスのリストをコンシューマーに返します。変更がある場合、レジストリは、長い接続に基づいて、変更されたデータをコンシューマーにプッシュします。
  • 監視:サービスの利用者とプロバイダーは、呼び出し回数と呼び出し時間をメモリに蓄積し、統計データを1分ごとに監視センターに送信します。

3.テスト

(1)登録センターとしてzookeeperをインストールします

Dobboのzookeeperインストールヘルプドキュメント:https//registry.hub.docker.com/_/zookeeper

1)動物園の飼育係を引く

docker pull ezsfsfyys.mirror.aliyuncs.com/library/zookeeper

2)zookeeperを実行する

docker run --name ZK01 -p 2181:2181 --restart always -d e1763fd3a0e3

この画像には、EXPOSE 2181 2888 3888 8080(それぞれ、zookeeperクライアントポート、フォロワーポート、選択ポート、AdminServerポート)が含まれています。ここでは、クラスターと選択は行わず、ポート2181を公開するだけです。

(2)サービスプロバイダーを書く

dubbo-SpringBootの公式:https//github.com/apache/dubbo-spring-boot-project

1)依存関係を導入します。

 <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

        <!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

注:
ここにはログの競合があります。slf4j-log4j12を除外する必要があります。

2)application.propertiesを構成します

dubbo.application.name=provider-ticket
dubbo.registry.address=zookeeper://44.92.240.49:2181
dubbo.scan.base-packages=com.glp.service

dubbo.config-center.timeout=10000

dubbo.registry.address:登録センターのアドレスを構成します
dubbo.scan.base-packages = com.glp.service:スキャンパッケージを構成します
dubbo.config-center.timeout:接続タイムアウトを構成します

3)出版サービス:
ここに画像の説明を挿入

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

@Component
@Service //将服务发布出去
public class TicketServiceImpl implements TicketService {
    
    
    @Override
    public String getTicket() {
    
    
        return "《我爱我的祖国》";
    }
}

@Service:サービスを公開する

(3)サービス消費者を書く

1)依存関係を導入する:プロバイダーと同じ

2)登録センターのアドレスを構成します

dubbo.application.name=consumer-user
dubbo.registry.address=zookeeper://46.78.236.59 

3)サービス
ここに画像の説明を挿入
参照する通常の手順は、サービスプロバイダーのインターフェイスをパッケージ化し、pomファイルと一緒にインポートすることです。ここでは、簡単な方法を使用してサービスのインターフェイスを直接取得します。パスは正しい必要があります。サービスプロバイダーと同じ。

import com.glp.service.TicketService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    
    

    @Reference
    TicketService ticketService;
    public void getTicket(){
    
    
        System.out.println("买到票:"+ticketService.getTicket());
    }
}

(4)テスト

 @Autowired
    UserService userService;
    @Test
    void contextLoads() {
    
    
        userService.getTicket();
    }

ようやくチケットを購入しましたが、主にpomのバージョンの問題が原因で、早い段階でエラーを報告し続けました。
ここに画像の説明を挿入

このテストの完全なコード:dubbo——zookeeper

三、春の雲

この例のソースコード:SpringCloud演習

1. SpringCloudの基本概念

Spring Cloudは、分散型の全体的なソリューションです。Spring Cloudは、分散システム(構成管理、サービス検出、ヒューズ、ルーティング、マイクロエージェント、コントロールバス、ワンタイムトークン、グローバルトリビア、リーダー選出、分散セッション、クラスターステータス)をすばやく組み込むためのツールを開発者に提供します。 Spring Cloudを使用すると、サービスをすばやく開始したり、アプリケーションを構築したり、クラウドプラットフォームリソースにすばやく接続したりできます。

SpringCloud分散開発の5つの一般的なコンポーネント

  • サービスディスカバリ-NetflixEureka
  • クライアントの負荷分散-Netflixリボン
  • サーキットブレーカー-NetflixHystrix
  • サービスゲートウェイ-NetflixZuul
  • 分散構成-SpringCloud Config

2.登録センター

(1)配置eureka

server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server
  client:
    register-with-eureka: false  #不将自己注册到eureka上
    fetch-registry: false  #不从eureka上获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/

(2)@EnableEurekaServer
ここに画像の説明を挿入

(3)http:// localhost:8761 /にアクセスします
ここに画像の説明を挿入

3.サービスプロバイダー

(1)配置eureka

server:
  port: 8001
spring:
  application:
    name: provider-ticket
eureka:
  instance:
    prefer-ip-address: true  #注册服务的时候使用服务的ip地址进行注册
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

(2)書き込みサービス
ここに画像の説明を挿入
(3)jarパッケージでサービスを実行します。このサービス
は、ポート番号の異なる複数のjarパッケージにパッケージ化して、同時に実行できます。
ここに画像の説明を挿入

4.サービス消費者

(1)配置eureka

spring:
  application:
    name: consumer-user
server:
  port: 8200

eureka:
  instance:
    prefer-ip-address: true  #注册服务的时候使用服务的ip地址进行注册
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

(2)@EnableDiscoveryClientはサービス検出機能を開きます
ここに画像の説明を挿入
(3)RestTemplateを構成します
ここに画像の説明を挿入
(4)サービスを取得します
ここに画像の説明を挿入

ここに画像の説明を挿入
(5)アクセステスト
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/glpghz/article/details/112552961