SpringCloud 進階之SpringCloud
阿新 • • 發佈:2018-06-16
tools 修改 modules mic rest mod snap filter 註冊中心
1. Eureka 服務註冊與發現
- Eureka 是一個基於REST的服務,用於服務的的註冊與發現;
- Eureka采用C-S的設計架構,Eureka Server作為服務註冊功能的服務器,它是服務註冊中心;
- Eureka包含兩個組件:Eureka Server 和 Eureka Client
- Eureka Server提供服務註冊和發現;
- Eureka Client是一個java客戶端;
1.1 三大角色
- Eureka Server提供服務註冊和發現;
- Service Provider服務提供方將自身服務註冊到Eureka,從而使服務消費方能夠找到;
- Service Consumer服務消費方從Eureka獲取註冊服務列表,從而能夠消費服務;
1.2 Eureka 服務註冊中心Module(microservicecloud-eureka-7001)
// pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.noodles.springcloud</groupId> <artifactId>microservicecloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>microservicecloud-eureka-7001</artifactId> <dependencies> <!-- eureka-server 服務端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <!-- 修改後立即生效,熱部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies> </project> // application.yml server: port: 7001 eureka: instance: hostname: localhost #eureka服務端的實例名稱 client: register-with-eureka: false # false 表示不向註冊中心註冊自己 fetch-registry: false # false 表示自己就是註冊中心,職責是維護服務實例,並不需要檢索服務 service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka #設置與Eureka Server交互的地址,查詢和註冊服務都需要依賴這個地址 // com.noodles.springcloud // EurekaServer7001_App @SpringBootApplication @EnableEurekaServer // EurekaServer 服務器端啟動類,接收其他微服務註冊進來 public class EurekaServer7001_App { public static void main(String[] args) { SpringApplication.run(EurekaServer7001_App.class, args); } } // 測試 // 訪問: http://localhost:7001
1.3 將已有的部門微服務註冊進eureka服務中心(microservicecloud-provider-dept-8001)
// 修改microservicecloud-provider-dept-8001 // pom.xml 增加 <!-- 將微服務provider 註冊進 eureka --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> // application.yml 增加 eureka: client: # 客戶端註冊進eureka服務列表內 service-url: defaultZone: http://localhost:7001/eureka // DeptProvider8001_App 主啟動類 @SpringBootApplication @EnableEurekaClient // 本服務啟動後,自動註冊進eureka服務中 public class DeptProvider8001_App { public static void main(String[] args) { SpringApplication.run(DeptProvider8001_App.class, args); } } // 測試 // 先要啟動 EurekaServer,然後啟動 DeptProvicer8001_App // 訪問:http://localhost:7001/
1.3.1 actuator 與註冊微服務信息完善
- 主機映射名稱修改
- 訪問信息有IP信息提示
- 微服務info內容詳細信息
修改之前
修改之後
// 主機映射名稱修改
// 修改microservicecloud-provider-dept-8001
// application.xml
eureka:
client: # 客戶端註冊進eureka服務列表內
service-url:
defaultZone: http://localhost:7001/eureka
instance:
instance-id: microservicecloud-dept8001 # 主機映射名稱
// 訪問信息有IP信息提示
// 修改microservicecloud-provider-dept-8001
// application.xml
eureka:
client: # 客戶端註冊進eureka服務列表內
service-url:
defaultZone: http://localhost:7001/eureka
instance:
instance-id: microservicecloud-dept8001 # 主機映射名稱
prefer-ip-address: true # 訪問路徑可以顯示IP地址
// 微服務info內容詳細信息
// 修改microservicecloud-provider-dept-8001
// pom.xml
<!-- actutator 監控信息完善 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
// 修改父工程 microservicecloud
// pom.xml
<!-- dependencyManagement -->
<build>
<finalName>microservicecloud</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<delimiters>
<delimit>$</delimit>
</delimiters>
</configuration>
</plugin>
</plugins>
</build>
<!-- modules -->
// 修改microservicecloud-provider-dept-8001
// application.yml
info:
app.name: noodles-microservicecloud
company.name: www.google.com
build.artifactId: $project.artifactId$
build.version: $project.version$
1.3.2 Eureka 自我保護機制
// 修改 microservicecloud-eureka-7001
// 將自我保護機制關閉(不推薦)
// application.yml
eureka:
server:
enable-self-preservation: false
參考資料:
- SpringCloud 進階
SpringCloud 進階之SpringCloud