介紹
spring-cloud-eureka,被動式的服務發現,統一監控和管理你的服務列表。電子商務平臺原始碼請加企鵝求求:一零三八七七四六二六。
什麼是服務發現?
服務發現就像聊天室一個,每個使用者來的時候去伺服器上註冊,這樣他的好友們就能看到你,你同時也將獲取好友的上線列表. 在微服務中,服務就相當於聊天室的使用者,而服務註冊中心就像聊天室伺服器一樣,目前服務發現的解決方案有Eureka,Consul,Etcd,Zookeeper,SmartStack,等等.
如何使用
建立server端
建立client端
- 建立server端
1.1 單機版
pom.xml:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
複製程式碼
當然了,我已經在全域性加入了一些其他配置檔案,因為我使用了模組式的開發,所以這裡很簡單。
配置檔案:
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
instance:
lease-expiration-duration-in-seconds: 6
lease-renewal-interval-in-seconds: 2
client:
service-url:
defaultZone: http://localhost:${server.port}/eureka/
複製程式碼
一般埠都是8761,可以隨意設定。
開發的時候,一般要設定以下兩點
lease-expiration-duration-in-seconds: 6 意思是6秒不傳送心跳檢查,就刪除該例項,預設90秒
lease-renewal-interval-in-seconds: 2 心跳檢查的時間,預設30秒
這裡報一個 bug :我設定6秒還是不管用,依然是90秒才能剔除。可能是我時間設定的太短嗎?大家可以留言告訴我為什麼。
啟動:
@SpringBootApplication
@EnableConfigServer
public class SpringCloudConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudConfigServerApplication.class, args);
}
}
複製程式碼
在啟動檔案裡,加入這樣一句話就好啦。
1.2 多節點版本
在系統的hosts裡寫入:
127.0.0.1 peer1
127.0.0.1 peer2
複製程式碼
節點1配置檔案 application-peer1.yml :
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
instance:
hostname: peer1
# lease-expiration-duration-in-seconds: 6
# lease-renewal-interval-in-seconds: 2
client:
service-url:
defaultZone: http://peer2:8762/eureka/
複製程式碼
節點2配置檔案 application-peer2.yml :
server:
port: 8762
spring:
application:
name: eureka-server
eureka:
instance:
# lease-expiration-duration-in-seconds: 6
# lease-renewal-interval-in-seconds: 2
hostname: peer2
client:
service-url:
defaultZone: http://peer1:8761/eureka/
複製程式碼
如果有更多個節點,更改埠號即可,並在 defaultZone:後面用逗號隔開,增加更多的就好了。
啟動方法:
採用不同的配置檔案啟動:
java -jar eureka-server-1.0.0.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0.0.jar --spring.profiles.active=peer2
複製程式碼
如果是用IDEA環境下執行,直接新配置一個執行環境就好了,這裡有好多坑,只有你踩過了才能發現真理。其中最主要的是不能用一樣的hostname,註冊時間有點慢和剔除時間有點慢。
- 建立client端
當然了,也很簡單。
pom.xml:
<!--監控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--服務註冊-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
複製程式碼
pom需要監控和服務註冊,同樣,推薦使用模組化開發,直接在頂層配置這兩個,所有的檔案都不需要額外配置。
配置檔案:
server.port=8083
spring.application.name=eureka-client-1
eureka.client.service-url.defaultZone= http://peer1:8761/eureka/,http://peer2:8761/eureka/
複製程式碼
這裡配置也很簡單,告訴我在哪裡就好了。如果有多個service-url,直接增加就行了,如上所示。 java B2B2C Springcloud多租戶電子商城系統