服務(wù)注冊(cè)-EurekaServer (一)

spring cloud 是 spring 社區(qū)下的一套微服務(wù)解決方案,通過(guò)封裝和整合 Netflix 公司的組件,簡(jiǎn)化并降低開(kāi)發(fā)難度。

其中微服務(wù)需要有一個(gè)服務(wù)中心管理所有服務(wù)的狀態(tài),所有服務(wù)都要向該中心注冊(cè)自身來(lái)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),包括多個(gè)服務(wù)中心下( 配置高可用服務(wù)注冊(cè)中心時(shí) ),也需要相互注冊(cè)。

euraka server 是服務(wù)中心的實(shí)現(xiàn),maven 依賴(lài)如下:

<dependencies>
  <!-- 服務(wù)注冊(cè)組件 -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eurekaserver</artifactId>
  </dependency>
</dependencies>

application.properties 配置如下:

server.port = 10080
eureka.client.fetch-registry = false
eureka.client.register-with-eureka = false
eureka.client.serviceUrl.defaultZone = http://localhost:${server.port}/eureka/

eureka server 在啟動(dòng)之后會(huì)嘗試注冊(cè)自身,而
eureka.client.fetch-registry = falseeureka.client.register-with-eureka = false 兩項(xiàng)配置是禁止這個(gè)行為。

完成上述配置后,啟動(dòng)一個(gè) eureka server 只需要寫(xiě)幾行代碼啟動(dòng)即可:

@EnableEurekaServer
@SpringBootApplication
public class Application {

    public static void main( String[] args ) {
        new SpringApplicationBuilder( Application.class )
                .web( true )
                .run( args );
    }
}

然后編寫(xiě)一個(gè)客戶(hù)端,maven 依賴(lài)如下:

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

    <!-- eureka 客戶(hù)端組件 -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
  </dependencies>

寫(xiě)完依賴(lài)還沒(méi)完,還有配置呢:

server.port = 12000
spring.application.name = SleepCare-TestingServices
eureka.client.serviceUrl.defaultZone = http://localhost:10080/eureka/

這里解釋一下:

  • server.port ---> 服務(wù)啟動(dòng)的端口
  • spring.application.name ---> 這是個(gè)服務(wù)名字,配置高可用以及其他服務(wù)訪問(wèn)該服務(wù)的時(shí)候,是通過(guò)這個(gè)屬性找服務(wù)注冊(cè)中心獲取可用的訪問(wèn)ip的(當(dāng)然你可以通過(guò) ip 直接調(diào)用其他服務(wù),那不如別用 sc 啦
  • eureka.client.serviceUrl.defaultZone ---> 這是服務(wù)注冊(cè)的地址,后期說(shuō)到高可用服務(wù)注冊(cè)中心,你會(huì)看到這個(gè)屬性多個(gè)地址是用英文逗號(hào)分割的,別手賤逗號(hào)之間用空格分隔還美名曰美觀

完成上述配置后,啟動(dòng)一個(gè) eureka 客戶(hù)端就像啟動(dòng)服務(wù)注冊(cè)中心一樣:

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    public static void main( String[] args ) {
        new SpringApplicationBuilder( Application.class )
                .web( true )
                .run( args );
    }
}

注意這里用的是 @EnableDiscoveryClient注解,這個(gè)注解會(huì)開(kāi)啟自動(dòng)注冊(cè)功能,當(dāng)然啦還會(huì)做其他事不過(guò)我還不清楚啦。換言之,用了這個(gè)注解,就是你只要躺著就好了,其他事人家來(lái)做。

到這里跑起來(lái),如果控制臺(tái)沒(méi)有報(bào)錯(cuò),那一般都是沒(méi)什么大事的。
訪問(wèn)http://localhost:10080/( 我這里是這個(gè)地址,具體地址看你自己 )就會(huì)看到如下界面。

服務(wù)注冊(cè)情況

圖中的列表就是顯示出當(dāng)前注冊(cè)到服務(wù)注冊(cè)中心的服務(wù)啦,可以看到名為 SleepCare-TestingServices 的項(xiàng)目已經(jīng)啟動(dòng)并注冊(cè)了。其中 Appcalition 一項(xiàng)的名字對(duì)應(yīng)的就是 spring.application.name 的屬性值,并且一個(gè)名稱(chēng)可以對(duì)應(yīng)多個(gè) ip,這是高可用的配置,當(dāng)然啦這是后話(huà)了。

當(dāng)走到這一步還平平安安的,那都是已經(jīng)成功搭起一個(gè)簡(jiǎn)單的注冊(cè)中心和客戶(hù)端了,這一篇先說(shuō)這么多,喵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容