SpringCloudはConsulをサービスガバナンスセンターとして使用しています

SpringCloudはConsulをサービスガバナンスセンターとして使用しています

序文

分散アーキテクチャシステムを開発する場合、サービスガバナンスコンポーネントである不可欠なツールがあります。これを使用して、サービスの登録、公開、および呼び出しを行うことができます。これは、すべてのサービスの名簿を維持していると理解できます。 。現在の主流のサービス管理センターZookeeperEurekaなどNacosですが、ここでは、別のサービスガバナンスコンポーネントについて説明しますConsul

Nacosの使用については、私のブログを参照してくださいNacos Service Management Center and Configuration Center

テキスト

領事

Consulは、Spring Cloud統合されたオープンソースの分散サービス登録検出センターです。言語
によってGo書かれましたヘルスチェックをサポートし、マルチデータセンターはkvストレージもサポートし、Raft一貫性アルゴリズムを採用して強力な一貫性と可用性を確保します。そしてそれはdocker完全に互換性があります。

領事自体は、以下とは対照的に、サービスガバナンスセンターでもありますEureka

  • Consul強力なサービスの一貫性を確保するために、パフォーマンスの一部が犠牲になっています。
  • Eurekaサービスがマスターノードに登録されている限り、他のノードを正常に呼び出すことができるかどうかに関係なく、サービスの登録は成功したと見なされます。

領事vsユーレカvs動物園管理人

ここに写真の説明を挿入

CAP原則は、データの整合性、データの可用性、および分割耐性を参照してくださいそれぞれ。ここAPCPを参照してください。

  • AP模式:強い一貫性を犠牲にして、一部のノードがダウンし、通常の動作ノードは影響を受けません。
  • CP模式:データの可用性を犠牲にして、データの一貫性を確保するために、マシンに障害が発生した場合、すべてのノードのデータを使用することはできません。

コンセンサスアルゴリズムにより、サーバーのグループが値について合意するため、アクティブな機能は、各サーバーが最終的に値を決定できることです。同じデータ要求が同じサーバーによって処理されることにより、同じ値を達成できます。Paxosそして、マルチノードの実装Raftされたmaster整合性値によって選択されます。

領事のインストールと起動

ステップ1:ダウンロードconsul
ご使用のシステムに応じて、公式Webサイトから適切なバージョン選択してくださいここで使用しているのはMac、直接brewダウンロードできることです
。Macを使用している友人も、私のブログを参照できます。JavaプログラミングにMacシステムを使用する

brew install consul

ステップ2:開始consul

./consul agent -dev -ui -client 0.0.0.0

起動コマンドのパラメータの説明:

  • agentConsulコアコマンドである主な機能は、メンバー情報の維持、ステータス検出の実行、サービスの宣言、要求の処理などです。
  • -server:代表的なserverモードです
  • -uiwebコントロールパネルに代わって
  • -bootstrap-expect:作成するクラスターの数を表します。公式の推奨値は3または5です。
  • -data-dir:データストレージディレクトリ
  • -node:現在のnode名前を表します
  • -client:クライアントサービスによって登録されたアドレスである必要があります。これはserver現在のホストアドレスまたは別のホストアドレスと同じにすることができます。システムのデフォルトは127.0.0.1です。
  • -bind:クラスター通信アドレス
  • -join:参加したクラスターのアドレス

ステップ3:http:// localhost:8500 / ui / dc1 / servicesと入力して、ConsulUIインターフェイス入ります
ここに写真の説明を挿入

SpringCloudはConsulをサービスガバナンスセンターとして使用しています

Mavenの依存関係

  • Consulそこ一定の要件ですためSpringBootSpringCloudバージョンは、それほどdemoの比較的完全な依存関係の例をされているここに示します
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.2.RELEASE</version>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <lombok-version>1.18.2</lombok-version>
</properties>

<dependencies>
<!--actuator用于检查节点健康-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<!--Spring Cloud Consul-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

<!--spring boot-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${
    
    lombok-version}</version>
    <optional>true</optional>
</dependency>

</dependencies>

<!--加入Spring Cloud 的Dalston版本的配置依赖-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

application.properties:構成クラス

server.port=8080
spring.application.name=springcloud-demo-producer

#consul
spring.cloud.consul.host=127.0.0.1
spring.cloud.consul.port=8500
#健康检查路径
spring.cloud.consul.discovery.health-check-path=/actuator/health
spring.cloud.consul.discovery.health-check-interval=15s
spring.cloud.consul.discovery.hostname=127.0.0.1
spring.cloud.consul.discovery.register=true
spring.cloud.consul.discovery.port=${
    
    server.port}


#consul service name
spring.cloud.consul.discovery.serviceName=springcloud-demo-producer
spring.cloud.consul.discovery.heartbeat.enabled=true

SpringCloudProducerApp:スタートアップクラス

  • @EnableDiscoveryClient登録センターへの、consulまたはzookeeper登録センターとしての登録サービスの提供に使用されます
@Slf4j
@SpringBootApplication(exclude = {
    
    DataSourceAutoConfiguration.class})
@EnableDiscoveryClient
public class SpringCloudProducerApp extends SpringBootServletInitializer {
    
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    
    
        return application.sources(SpringCloudProducerApp.class);
    }
    /**
     * 项目的启动方法
     *
     * @param args
     */
    public static void main(String[] args) {
    
    
        SpringApplication.run(SpringCloudProducerApp.class, args);
        log.info("======服务已经启动========");
    }
}

検証

プロジェクトを開始し、http:// localhost:8500 / ui / dc1 / servicesConsul UIインターフェイスと入力して、新しく登録されたサービスを表示します
ここに写真の説明を挿入

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_40990818/article/details/108878497