1. 程式人生 > >將微服務註冊到Eureka Server 上

將微服務註冊到Eureka Server 上

   註冊到單節點Eureka Server

   將編寫如何將微服務註冊到Eureka Server上    先建立一個子模組專案,用來放api介面,然後再建立一個子模組,充當提供者。

   

   在提供者專案的pom檔案中新增依賴    

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

  在提供者專案配置檔案中新增以下配置

server:
  port: 8000
spring:
  application:
    name: provider
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true

server.port 指定專案埠號

spring.application.name 用於指定註冊到Eureka Server 上的應用名稱。

eureka.client.service-url.defaultZone=

http://localhost:8761/eureka/ ,表示Erueka Server 註冊中心的地址。

euraka.instance.prefer-ip-address=true 表示將自己的ip註冊到Eureka Server,若不配置或者配置false,則表示微服務所有作業系統的hostname到Eureka Server。

在啟動類上添加註解 @EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class YmkProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(YmkProviderApplication.class, args);
    }
}

 在api子模組裡新增一個介面

  

在提供者子模組裡新增一個控制器,並實現api的介面。

@RestController
public class TestController implements TestService{

    @Autowired
    private TestService testService;
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello(String name) {
        return "Hello "+name;
    }
}

可以看到,我們提供者成功的註冊到了Eureka Server中了。

高可用Eureka Server註冊中心

   Eureka Server可以通過執行多個例項並相互註冊的方式實現高可用部署,Eureka Server例項彼此同步資訊,從而確保所有節點資料一致。節點之間互相註冊是Eureka Server的預設行為。

   因為我們是在一臺電腦上,所以先修改一下hosts檔案,各個作業系統如何修改,還請自行百度。找到hosts後新增 127.0.0.1 peer1 peer2

   修改原先Eureka Server專案的 application.yml 檔案修改如下

spring:
  application:
    name: eureka-server
---
spring:
  profiles: peer1                                 # 指定profile=peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1                               # 指定當profile=peer1時,主機名是peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/      # 將自己註冊到peer2這個Eureka上面去

---
spring:
  profiles: peer2                                 # 指定profile=peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2                               # 指定當profile=peer2時,主機名是peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/      # 將自己註冊到peer1這個Eureka上面去

   通過以上分析,不難理解,我們定義了peer1和peer2兩個Profile,當應用以peer1這個Profile啟動時,配置改Eureka Serber的主機名是peer1,並將其註冊到 http://peer2:8762/eureka/ 上面,反之亦然。

  現在我們將專案打包成jar來執行,不再使用idea執行專案。

 再idea中直接點選package即可,即可打成jar包

現在通過命令啟動

java -jar /xxx/xx/xxxxx.jar --spring.profiles.active=xxx

通過spring.profiles.active指定啟動哪個profile

比我我的兩個Eureka Server分別是

java -jar /Users/yangmingkai/IdeaProjects/ymk/yang-spring-boot-cloud-parent/ymk-eureka-server/target/ymk-eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1

java -jar /Users/yangmingkai/IdeaProjects/ymk/yang-spring-boot-cloud-parent/ymk-eureka-server/target/ymk-eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

   我們發現兩個已經互相註冊了。

  上面application.yml配置可以簡化一些如下:

spring:
  application:
    name: eureka-server
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/,http://peer1:8761/eureka/
---
spring:
  profiles: peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1
---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2

  至此高可用Euraka Server 搭建完成!

  應用註冊到Eureka Server叢集上

   只需要在提供者application.yml配置中修改 eureka: client: serviceUrl: defaultZone 配置多個Eureka Server 地址即可,逗號分隔開來

server:
  port: 8000
spring:
  application:
    name: provider
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8761/eureka/
  instance:
    prefer-ip-address: true

  當然即使只配置某一個節點,也能正常註冊到Eureka Server叢集,因為前面說過Eureka Server之間會同步資料。

  現在啟動提供者專案

  再去Eureka Server中看,就可以看到peer1跟peer2中都註冊了這個服務。