我有机会与Spring-Cloud一起创建了一组云就绪微服务的样本集,Spring-Cloud如何使不同的基础架构组件和服务很好地协同工作给我留下了深刻的印象。
我习惯于基于基于Netflix OSS的堆栈创建微服务,通常在Netflix堆栈中, Eureka被认为是微服务进行自我注册和发现彼此的枢纽。 本着这种模式的精神,我想尝试一系列看起来像这样的服务:
这里有2种微服务:
- 响应“ ping”消息的样本乒乓服务
- 使用“乒乓”微服务的抽样服务
并且有两个基础架构组件:
- Sample-config为2个微服务提供集中配置
- 尤里卡(Eureka)是中央枢纽,为服务注册和发现其他服务提供了一种方式
因此,首先,我将介绍如何使用spring-cloud开发两个基础架构组件,并紧跟其后如何开发微服务以使用这些组件。
- 整个项目在我的github位置上可用。
尤里卡
Spring-cloud使创建Eureka的实例非常简单,所需要做的只是遵循以下几行的类:
package org.bk.eureka;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}
可以启动多个Eureka实例,并将其配置为以弹性方式协同工作,尽管在这里,我只想演示一个独立的Eureka实例,并且可以使用类似以下的配置来完成,本质上是在端口8761上启动eureka并且在独立模式下不尝试查找对等方:
---
# application.yml
server:port: 8761eureka:instance:hostname: localhostclient:registerWithEureka: falsefetchRegistry: false
配置服务器
Spring-Cloud提供了一个集中式配置服务器,微服务可用于加载其属性。 通常,微服务可能希望采用以下两种方式之一:
- 使用Eureka作为中心,找到配置服务
- 使用配置服务并找到尤里卡
我个人更喜欢Eureka优先方法,在此示例配置服务器中向Eureka注册了自己,当微服务启动时,他们首先向Eureka进行了检查,找到Configuration服务并使用该服务加载其属性。
配置服务器也很容易使用Spring-cloud编写,以下是所需的所有代码:
package org.bk.configserver;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}
}
以及向Eureka注册此服务的配置:
---
# bootstrap.yml
spring:application:name: sample-configprofiles:active: nativeeureka:instance:nonSecurePort: ${server.port:8888}client:serviceUrl:defaultZone: http://${eureka.host:localhost}:${eureka.port:8761}/eureka/
---
# application.yml
spring:cloud:config:server:native:searchLocations: classpath:/configserver:port: 8888
配置服务器从端口8888启动,并从类路径提供配置。 在实际的应用程序中,可以将配置设置为从中央git存储库加载,这种方式为版本属性提供了一种简洁的方法,并且可以集中管理属性。 在这种特定情况下,由于它提供了两个微服务的属性,因此类路径中有两组文件,并为调用应用程序提供了适当的属性:
---
#sample-pong.yml
reply:message: Pong
---
# sample-ping.yml
send:message: Ping
启动Eureka和配置服务器
由于这两个应用程序都是基于Spring-boot的,因此可以通过运行以下命令来分别启动它们:
mvn spring-boot:run
一旦Eureka和Configuration Server正常启动,Eureka将提供一个不错的界面,其中包含向其注册的服务的详细信息,在这种情况下,Configuration Server的名称为“ SAMPLE-CONFIG”:
配置服务器通过端点通过以下模式为调用应用程序提供属性: /{application}/{profile}[/{label}]
因此,要检索“ sample-pong”应用程序的属性,应用程序将在内部使用以下URL: http://localhost:8888/sample-pong/default
对于“ sample-ping”应用程序,属性可以从http://localhost:8888/sample-ping/default
派生
到此,结束了有关如何启动云就绪系统的基础架构组件的详细说明。 我将继续介绍如何利用这些基础架构组件开发微服务。
- 这些示例背后的代码可在我的github存储库中找到 。
翻译自: https://www.javacodegeeks.com/2015/06/learning-spring-cloud-infrastructure-and-configuration.html