springcould 微服務 搭建


 摘自:https://www.cnblogs.com/lori/p/10615654.html    (完整)

springcloud~服務注冊與發現Eureka的使用

 

服務注冊與發現是微服務里的概念,也是一個基本的組件,負責服務組件的認證,即實現『你是誰』的功能,在服務注冊與發現里,存在兩種模式,即服務端發現和客戶端發現,咱們今天說的eureka屬於客戶端發現!

下面概念來自文章:https://blog.csdn.net/forezp/article/details/73017664

下面看幾個服務注冊與發現的基本概念:

  • Register:服務注冊 
    當Eureka客戶端向Eureka Server注冊時,它提供自身的元數據,比如IP地址、端口,運行狀況指示符URL,主頁等。

  • Renew:服務續約 
    Eureka客戶會每隔30秒發送一次心跳來續約。 通過續約來告知Eureka Server該Eureka客戶仍然存在,沒有出現問題。 正常情況下,如果Eureka Server在90秒沒有收到Eureka客戶的續約,它會將實例從其注冊表中刪除。 建議不要更改續約間隔。

  • Fetch Registries:獲取注冊列表信息 
    Eureka客戶端從服務器獲取注冊表信息,並將其緩存在本地。客戶端會使用該信息查找其他服務,從而進行遠程調用。該注冊列表信息定期(每30秒鍾)更新一次。每次返回注冊列表信息可能與Eureka客戶端的緩存信息不同, Eureka客戶端自動處理。如果由於某種原因導致注冊列表信息不能及時匹配,Eureka客戶端則會重新獲取整個注冊表信息。 Eureka服務器緩存注冊列表信息,整個注冊表以及每個應用程序的信息進行了壓縮,壓縮內容和沒有壓縮的內容完全相同。Eureka客戶端和Eureka 服務器可以使用JSON / XML格式進行通訊。在默認的情況下Eureka客戶端使用壓縮JSON格式來獲取注冊列表的信息。

  • Cancel:服務下線 
    Eureka客戶端在程序關閉時向Eureka服務器發送取消請求。 發送請求后,該客戶端實例信息將從服務器的實例注冊表中刪除。該下線請求不會自動完成,它需要調用以下內容: 
    DiscoveryManager.getInstance().shutdownComponent();

  • Eviction 服務剔除 
    在默認的情況下,當Eureka客戶端連續90秒沒有向Eureka服務器發送服務續約,即心跳,Eureka服務器會將該服務實例從服務注冊列表刪除,即服務剔除。

大叔演示服務發現與注冊的環境:

  • intellij idea開發工具
  • gradle4.6構建工具
  • java1.8運行時
  • springboot腳手架

Eureka Server端的實現:

依靠包

dependencies {
    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

配置項

復制代碼
server.port: 8761
management.port: 8762

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
復制代碼

啟動代碼

復制代碼
@EnableEurekaServer
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
復制代碼

訪問:http://localhost:8761/

Eureka Client端的加入:

服務端啟動后,它里面的應用是空的,這時我們添加一個客戶端,注意,這里的客戶端是指Eureka的,它可能對於其它服務來說,是個服務端,為其它接口提供數據的,這是有可能的。(我這個客戶端同時引用了配置中心的概念,它也是配置中心的使用端,這個項目的配置文件通過配置中心來統一進行分布式管理)

依賴包

復制代碼
dependencies {
    compile('org.springframework.boot:spring-boot-starter-web',
            'org.springframework.cloud:spring-cloud-starter-config',
            'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}
復制代碼

配置項

復制代碼
spring:
  application:
    name: email-client
  cloud:
    config:
      uri: http://localhost:8200
server:
  port: 8300

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
復制代碼

啟動代碼

復制代碼
@EnableEurekaClient
@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}
復制代碼

我們啟動它之后,去eureka server界面去查看, http://localhost:8761,你會發現,我們的服務出現在了服務列表里!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM