我正在查看Spring Boot/Cloud和Netflix FW(Eureka,Ribbon)。我正在通過此示例工作:Spring Cloud/Netflix負載平衡OSS
https://spring.io/blog/2015/07/14/microservices-with-spring 基本上它是關於一些使用Eureka Service Registry的小型Spring Boot微服務。
我現在想要啓動幾個相同服務的實例(在本例中是AccountService,位於不同的端口上)。我讀過的所有東西(上面的文章,http://callistaenterprise.se/blogg/teknik/2015/04/10/building-microservices-with-spring-cloud-and-netflix-oss-part-1/等)表明,如果我這樣做,所有實例都會冗餘地註冊到Eureka,並且當我調用服務時,將應用客戶端負載平衡,並且動態選擇要調用的服務。
但是,這不會發生什麼。當我啓動第一個服務實例時,它會被註冊並顯示在Eureka儀表板中。當我在不同的端口上啓動相同的服務時,它也會註冊,但它似乎代替了以前的服務實例:Eureka儀表板仍然只顯示一個實例,其中可用區域= 1(應該是2?)以及對此服務的所有調用由二審處理。當我查詢註冊表時,僅應用此實例。
當我停止第二個實例時,經過一段時間尤里卡切換回第一個,它仍然有效。所以它似乎保留所有實例,但只使用最新註冊的實例。
我錯過任何重要的東西嗎?我認爲所有的實例應該同時使用?
========== 應用程序屬性是(這些都是基本持平,從春網站爲例):
EurekaServer
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
server:
port: 1111
spring:
thymeleaf:
enabled: false
AccountsServer
spring:
application:
name: accounts-service
freemarker:
enabled: false
thymeleaf:
cache: false
prefix: classpath:/accounts-server/templates/
eureka:
client:
serviceUrl:
defaultZone: http://localhost:1111/eureka/
server:
port: 4444 # HTTP (Tomcat) port, for the second instance this is changed to a different port
你可以從客戶端和服務器發佈你的application.properties嗎? –