Netflix开源了 这么的优质服务,现在有了Spring Cloud,我们可以通过一个@EnableZuulProxy注释启用它 。在这个项目中,我使用Zuul储存静态内容(UI应用程序)并将恳求路由至适当的微服务。以下是Notification服务的简略基于前缀的路由配置:
zuul:
routes:
notification-service:
path: /notifications/**
serviceId: notification-service
stripPrefix: false
这意味着所有以恳求开头的恳求 /notifications 都将路由至Notification服务。可以看见,没有硬编码的地址。Zuul使用 服务发觉 模式来定位Notification服务例子以及 Circuit Breaker跟Load Balancer。
Service Discovery
另一种众所周知的构架方式是Service Discovery。它容许手动检查服务例子的网路位置,这些服务例子或许因为手动扩充微端服务器,故障跟升级而动态分配地址。
服务发觉的关键部份是注册表。我在这个项目中使用了Netflix Eureka。当客户端负责确定可用服务例子的位置(使用注册服务器)并在他们之间读取平衡恳求时,Eureka是客户端发觉方式的一个挺好的反例。
使用Spring Boot,你可以轻松地使用spring-cloud-starter-eureka-server 依赖项, @EnableEurekaServer 注释跟简略配置属性建构Eureka Registry 。
通过@EnableDiscoveryClient 注释跟 bootstrap.yml 应用程序名称启用客户端支持 :
spring:
application:
name: notification-service
现在,在应用程序启动时,它将向Eureka Server注册并提供元数据,例如主机跟端口,运行情况指示器URL,主页等.Eureka从属于服务的每位例子接收消息。如果故障超出可配置的时间表,则例子将从注册表中删掉。
此外,Eureka提供了一个简略的界面,你可以在其中跟踪正在运行的服务跟可用例子的数目: :8761