• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SpringCloud學習筆記-Eureka

    標簽: java

    注冊中心-Eureka

    Spring Cloud 封裝了 Netflix 公司開發的 Eureka 模塊來實現服務注冊和發現。Eureka 采用了 C-S 的設計架構。Eureka Server 作為服務注冊功能的服務器,它是服務注冊中心。而系統中的其他微服務,使用 Eureka 的客戶端連接到 Eureka Server,并維持心跳連接。這樣系統的維護人員就可以通過 Eureka Server 來監控系統中各個微服務是否正常運行。Spring Cloud 的一些其他模塊(比如Zuul)就可以通過 Eureka Server 來發現系統中的其他微服務,并執行相關的邏輯。

     

    它主要包括兩個組件:Eureka Server 和 Eureka Client

    • Eureka Client:一個Java客戶端,用于簡化與 Eureka Server 的交互(通常就是微服務中的客戶端和服務端)
    • Eureka Server:提供服務注冊和發現的能力(通常就是微服務中的注冊中心)

    Eureka自我保護模式

    如果 Eureka 服務器檢測到超過預期數量的注冊客戶端以一種不優雅的方式終止了連接,并且同時正在等待被驅逐,那么它們將進入自我保護模式。這樣做是為了確保災難性網絡事件不會擦除eureka注冊表數據,并將其向下傳播到所有客戶端。

    任何客戶端,如果連續3次心跳更新失敗,那么它將被視為非正常終止,病句將被剔除。當超過當前注冊實例15%的客戶端都處于這種狀態,那么自我保護將被開啟。

    當自我保護開啟以后,eureka服務器將停止剔除所有實例,直到:

    它看到的心跳續借的數量回到了預期的閾值之上,或者

    自我保護被禁用

    默認情況下,自我保護是啟用的,并且,默認的閾值是要大于當前注冊數量的15%
     

     

    如何使用?

    導入依賴

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

    主啟動類添加注解

    @EnableEurekaServer

     

    服務器端的配置

    server:
      port: 7001
    
    eureka:
      instance:
        hostname: localhost #eureka服務端的實例名稱
      client:
        #false表示不向注冊中心注冊自己
        register-with-eureka: false
        #false表示自己就是注冊中心。職責是維護服務實例,并不需要去檢索服務
        fetch-registry: false
        service-url:
          #設置與eureka server交互的地址 ,查詢服務和注冊服務都需要依賴于這個地址
          defaultZone: http://localhost:${server.port}/eureka/
            # localhost:7001
    

     

     

    客戶端的配置

    創建提供服務的客戶端,并向服務注冊中心注冊自己。

    實現一個RESTful API,通過傳入兩個參數a和b,最后返回a + b的結果

    這個依賴是專屬于客戶端的

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>

    yml配置 

    eureka:
      client:
        #表示向注冊中心注冊自己,如果false則不會再網頁上看到自己的項目spring.application.name
        register-with-eureka: true
        #是否從EurekaServer抓取已有的注冊信息,默認為true。單節點無所謂,集群必須配置了true才能配合ribbon使用負載均衡
        fetch-registry: true
        service-url:
          #設置與eureka server交互的地址 ,查詢服務和注冊服務都需要依賴于這個地址
          defaultZone: http://localhost:7001/eureka/
      instance:
        instance-id: payment8001
        prefer-ip-address: true

     

    @RestController
    public class ComputeController {
    
        private final Logger logger = Logger.getLogger(getClass());
    
        @Autowired
        private DiscoveryClient client;
    
        @RequestMapping(value = "/add" ,method = RequestMethod.GET)
        public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
            ServiceInstance instance = client.getLocalServiceInstance();
            Integer r = a + b;
            logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
            return r;
        }
    
    }

     

    啟動類中添加注解,是用于表明是個EurekaClient

    @EnableEurekaClient

     

    啟動工程后,再次訪問:http://localhost:7001/,可以看到定義的服務被注冊了。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    版權聲明:本文為weixin_42313246原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_42313246/article/details/106833815

    智能推薦

    SpringCloud Alibaba學習筆記-Eureka(二)

    SpringCloud Alibaba學習筆記-Eureka(二) B站視頻地址 一,搭建cloud-eureka-server-7001模塊 1,pom.xml 2, application.yml 3,EurekaMain7001 二,搭建cloud-provider-payment-8001 pom.xml application.yml PaymentMapper.xml 1,Paymen...

    springCloud - eureka(筆記)

    1. eureka是做什么的?        Eureka就好比是滴滴,負責管理、記錄服務提供者的信息。服務調用者無需自己尋找服務,而是把自己的需求告訴Eureka,然后Eureka會把符合你需求的服務告訴你。 同時,服務提供方與Eureka之間通過“心跳”機制進行監控,當某個服務提供方出現問題,Eure...

    SpringCloud學習1 Eureka

    SpringCloud 介紹 官網地址: https://spring.io/projects/spring-cloud Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration manageme...

    SpringCloud學習之Eureka

    文章目錄 Eureka 什么是Eureka Eureka能做什么 原理講解 Eureka Server示例 Eureka Client示例 actuator完善監控信息 服務發現Discovery 集群 問題記錄 安全驗證 擴展 CAP原則 參考文獻 Eureka 什么是Eureka Eureka 是一個基于 REST(Representational State Transfer)的服務,主要用...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    猜你喜歡

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    精品国产乱码久久久久久蜜桃不卡