SpringCloud-サービス登録センター

6774 ワード

1、Eureka
1、サービスガバナンスとは
SpringCloudはNetflix社が開発したEurekaモジュールをカプセル化し、サービスガバナンスを実現
従来のRPCリモートコールフレームワークでは、各サービスとサービス間の依存関係を管理するのが複雑で、管理が複雑であるため、サービスガバナンス、サービスとサービス間の依存関係を管理する必要があり、サービスコール、負荷均衡、許容誤差などを実現し、サービス発見と登録を実現することができる.
2、サービス登録とは
EurekaはC/Sの設計アーキテクチャを採用し、Eureka Serverはサービス登録機能のサーバーとして、サービス登録センターであり、システム内の他のマイクロサービスは、Eurekaのクライアントを使用してEureka Serverに接続し、心拍接続を維持する.これにより、システムの保守担当者は、Eureka Serverを使用して、システム内の各マイクロサービスが正常に稼働しているかどうかを監視できます.
サービス登録と発見には、サーバが起動すると、現在の自分のサーバの情報、例えばサービスアドレス、通信アドレスなどを別名で登録センターに登録する登録センターがあります.もう一方(消費者|サービスプロバイダ)は、この別名で登録センターに実際のサービス通信アドレスを取得し、ローカルRPC呼び出しRPCリモートコールフレームワークコア設計思想を実現する.登録センターは、登録センターを使用して各サービスとサービス間の依存関係を管理するためである.どのRPCリモートフレームワークにも、登録センターがある(サービスアドレスに関する情報、例えばインタフェースアドレス等)
3、Eurekaコンポーネント
Eurekaには、Eureka ServerとEureka Clientのコンポーネントが含まれています.
Eureka Serverはサービス登録サービスを提供しています
各マイクロ・サービス・ノードは、構成を開始すると、Eureka Serverに登録されます.これにより、Eureka Serverのサービス・レジストリに使用可能なサービス・ノード情報が格納され、サービス・ノードの情報はインタフェースで直感的に表示されます.
Eureka Clientは登録センターを通じてアクセスします
Javaクライアントであり、Eureka Serverのインタラクションを簡略化するために使用され、クライアントは同時に内蔵された、ポーリング(round-robin)ロードアルゴリズムを使用するロード・イコライザ.アプリケーションが起動すると、Eureka Serverにハートビートが送信されます(デフォルトでは30秒に1回).Eureka Serverが複数のハートビート・サイクルでノードのハートビートを受信しない場合、Eureka Serverはサービス・レジストリからノードを除去します(デフォルトでは90秒).
4、Eureka単機版
1、  Eureka-Server,  pom  
    dependency>
      org.springframework.cloud
      spring-cloud-starter-netflix-eureka-server
    /

2、      
server:
  port: 7001
eureka:
  instance:
    hostname: localhost #eureka       
  client:
    #       
    register-with-eureka: false
    #         
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

3、    
@EnableEurekaServer

1、  Eureka   Eureka-Provider, pom  
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

2、      
server:
  port: 8001
eureka:
  client:
    #          
    register-with-eureka: true
    #   Eureka Server         ,   true,      ,       true    ribbon      
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

3、    
@EnableEurekaClient
1、     Eureka-Customer,  pom  
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

2、      

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka/

3、    
@EnableEurekaClient

4、  RestTemplate
@Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

5、  restTemplate         
 public static final String PAYMENT_URL = "http://localhost:8001/payment";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/payment/get/{id}")
    public CommonResult getPaymentByID(@PathVariable("id") Long id){
        return restTemplate.getForObject(PAYMENT_URL + "/get/" + id, CommonResult.class);
    }

5、Eurekaクラスタ版
1、  Eureka-Server7001 7002,      
Eureka-7001    
server:
  port: 7001
eureka:
  instance:
    hostname: eureka7001.com #   
    #hostname: localhost #eureka           
  client:
    #       
    register-with-eureka: false
    #         
    fetch-registry: false
    service-url:
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #   
      defaultZone: http://eureka7002.com:7002/eureka/

Eureka-7002    
server:
  port: 7002
eureka:
  instance:
    hostname: eureka7002.com
  #hostname: localhost #   
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #   
      defaultZone: http://eureka7001.com:7001/eureka/ #   

2、         ,             ,        spring.application.name   。
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

3、     80,
 restTemplate Bean   @LoadBalanced        ,     。
  restTemplate   URL,              
public static final String PAYMENT_URL = "http://PROVIDER-PAYMENT-SERVICE"


6、ActuatorとDiscoverClient
1、      
eureka:
   instance:
    instance-id: payment-8002 #  id
    prefer-ip-address: true   #  ip  

2、    DiscoverClient                 。
           @EnableDiscoveryClient

7、自己保護と心拍数時間と待ち時間の変更を禁止する
1、  Eureka 90                  ,               , CAP      AP  ,   (Availability)、     (Partition tolerance)。
                  
    eureka.server.enable-self-preservation=false

2、            
Eureka     30      ,        
    eureka.instance.lease-renewal-interval-in-seconds=10 #  10      

3、  Eureka                    ,  90 ,             
    eureka.instance.lease-expiration-duration-in-seconds=20 #  20 

2、Zookeeper
1、DockerでZookeeperを引く
引き出しが完了したらzookeeeperを起動しdocker exec-it xxx bash/binを使用してコンテナに入り、binディレクトリに入ってから./zkCli.shはサービス側の表示に入り、
    
    ls /
    get /zookeeper
    get /service
    get /service/xxx
    get /dubbo

2、提供者
1、    ,  pom  
 
    org.springframework.cloud
    spring-cloud-starter-zookeeper-discovery
 

2、      
spring:
  application:
    name: provider-payment-service
  cloud:
    zookeeper:
      connect-string: xxx.xxx.xxx.xxx:2181

3、      @EnableDiscoveryClient      ,  zookeeper  

3、消費者
1、      ,  pom  
2、      ,     
3、      @EnableDiscoverClient
4、     ,  RestTemplate,  @Balanced
5、  restTemplate       

4、Zookeeperの特徴
Zookeeper     ,          ,   id      。

3、Consul
1、dockerでconsulを引く
1、  consul
docker search consul
2、  consul
docker pull consul:x.x.x
3、    
docker run -d -p 8500:8500 --name consul consul:1.6.1

2、提供者と消費者の配置
1、   zookeeper     ,  pom  
 
      org.springframework.cloud
      spring-cloud-starter-consul-discovery


2、             ,    ,      
server:
  port: 8006
spring:
  application:
    name: provider-payment-8006
  cloud:
    consul:
      host: xxx.xxx.xxx.xxx
      port: 8500
      discovery:
        #    ip    
        prefer-ip-address: true

3、  consul 8500          

4、                 ,      , consul       actuator/health       ,      X,           ,     。