SpringCloudプロジェクトの構築方法を教えます (6) Eurekaでサービスディスカバリを実現

マイクロサービスとは何ですか? シリーズが一目でわかる!

1. SpringCloudプロジェクトのビルド方法を教えます (1) 写真とテキストで詳しく説明、アホのような操作

2. SpringCloud プロジェクトの構築方法を教える (2) プロデューサーとコンシューマー

3. SpringCloudプロジェクトの構築方法を教えます (3) Eurekaサービス登録センターの統合

4. SpringCloudプロジェクトの構築方法を教えます (4) Eurekaクラスタのバージョン構築

5. SpringCloudプロジェクトのビルド方法を教えます (5) プロデューサークラスターバージョンをビルドします

6. SpringCloudプロジェクトの構築方法を教えます (6) Eurekaはサービスディスカバリを実現します

7. SpringCloudプロジェクトの構築方法を教える (7) Consulサービス登録センターを統合する

8. SpringCloudプロジェクトの構築方法を教えます (8) 統合リボンロードバランサ

9. SpringCloud プロジェクトの構築方法を説明します (9) OpenFeign サービス インターフェイス呼び出しの統合

10. SpringCloud プロジェクトの構築方法を教えます (10) Hystrix サービスのダウングレードの統合

11. SpringCloud プロジェクトの構築を教える (11) Hystrix のサービス ヒューズの統合

12. SpringCloud プロジェクトの構築方法を教える (12) Hystrix のグラフィカル ダッシュボードのリアルタイム モニタリングを統合する

13. SpringCloud プロジェクトの構築方法を教える (13) 新世代のゲートウェイを統合する

14. SpringCloudプロジェクトの構築方法を教えます (14) Integrated Config Distributed Configuration Center

15. SpringCloudプロジェクトの構築方法を教えます (15) Integrated Busメッセージバス

16. SpringCloud プロジェクトの構築方法を説明します (16) 統合された Stream メッセージ ドライバー

17. SpringCloud プロジェクトの構築方法を説明します (17) Sleuth 分散リンク追跡の統合

これからも更新していきますので、いいねやフォロー大歓迎です!

1. サービスディスカバリの概要

   各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件上(eureka,zookeeper,Consul),服务发现组件会存储这些信息。服务消费者会从服务发现组件查询服务提供者的网络地址,然后根据该地址调用服务提供者的接口。各个微服务与服务发现组件使用一定的机制来维持心跳,服务发现组件若发现有服务没有提供心跳,那么服务发现组件会将该服务剔除。微服务网络地址发生变更(例如实例增减或者IP端口发生变化等),会重新注册到服务发现组件上,使用这种方式,可以避免因网络变化导致服务之间的通讯停止,服务消费者也无须人工的修改网络地址。简单的说就是对于注册到Eureka中的微服务,可以通过服务发现来获得该服务的信息。

2. サービスディスカバリのコード例

以下の図に示すように、cloud-provide-payment プロバイダー サービスのコントローラーでこれを変更する必要があります。

//注入服务发现的注解
@Autowired
private DiscoveryClient discoveryClient;
 
 //获取服务信息
GetMapping("/payment/discovery")
public  Object discovery(){
    
    
   List<String> services = discoveryClient.getServices();
        for (String s : services){
    
    
            log.info("********注册到eureka中的服务中有:"+services);
        }
    List <ServiceInstance> instances = discoveryClient.getInstances("MCROSERVICE-PAYMENT");
        for (ServiceInstance s: instances) {
    
    
            log.info("当前服务的实例有"+s.getServiceId()+"\t"+s.getHost()+"\t"+s.getPort()+"\t"+s.getUri());
        }
    return this.discoveryClient;
}

以下に示すように、アノテーション @EnableDiscoveryClient をスタートアップ クラスに追加します。

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PayMentMain {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(PayMentMain.class,args);
    }
}

次に、サービスを開始し、http://localhost:8001/payment/discovery次の図に示すように、現在の登録センターのサービス情報を取得するためにアクセスします。

クライアントとサーバーの両方に、mcroservice-order と mcroservice-payment の 2 つのサービスがあることがわかります。
ここに画像の説明を挿入

ログを通じて情報をコンソールに出力しました。次に、次の図に示すように、コンソールによって出力された情報を確認します。
ここに画像の説明を挿入

現在の登録センターには、mcroservice-order と mcroservice-payment という 2 つのサービスがあることがわかります。また、mcroservice-payment サービスでインスタンスの IP、ポート、URI も確認できます。これにより、多くのサービス情報を取得できます。自分で調べて、ニーズに応じて入手できます。以下に示すように:

ここに画像の説明を挿入

そんなに簡単ですか?
ここに画像の説明を挿入

次の記事では、Consul のサービスの登録と発見について学び、引き続き注目し、気に入ってもらいましょう。引き続き更新していきます。

おすすめ

転載: blog.csdn.net/weixin_39570655/article/details/131784991