Spring Cloud构建微服务架构-建立“服务提供方”

下面咱们建立提供服务的客户端,并向服务注册中心注册本身。本文咱们主要介绍服务的注册与发现,因此咱们不妨在服务提供方中尝试着提供一个接口来获取当前全部的服务信息。html

首先,建立一个基本的Spring Boot应用。命名为eureka-client,在pom.xml中,加入以下配置:java

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

其次,实现/dc请求处理接口,经过DiscoveryClient对象,在日志中打印出服务实例的相关内容。web

@RestController
public class DcController {
@Autowired
DiscoveryClient discoveryClient;
@GetMapping("/dc")
public String dc() {
String services = "Services: " + discoveryClient.getServices();
System.out.println(services);
return services;
}
}

最后在应用主类中经过加上@EnableDiscoveryClient注解,该注解能激活Eureka中的DiscoveryClient实现,这样才能实现Controller中对服务信息的输出。spring

@EnableDiscoveryClient
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(
ComputeServiceApplication.class)
.web(true).run(args);
}
}

咱们在完成了服务内容的实现以后,再继续对application.properties作一些配置工做,具体以下:架构

spring.application.name=eureka-client
server.port=2001
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

经过spring.application.name属性,咱们能够指定微服务的名称后续在调用的时候只须要使用该名称就能够进行服务的访问。eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。为了在本机上测试区分服务提供方和服务注册中心,使用server.port属性设置不一样的端口。app

固然,咱们也能够经过直接访问eureka-client服务提供的/dc接口来获取当前的服务清单框架

1.Services: [eureka-client]spring-boot

其中,方括号中的eureka-client就是经过Spring Cloud定义的DiscoveryClient接口在eureka的实现中获取到的全部服务清单。因为Spring Cloud在服务发现这一层作了很是好的抽象,因此,对于上面的程序,咱们能够无缝的从eureka的服务治理体系切换到consul的服务治理体系中区。微服务

从如今开始,我这边会将近期研发的springcloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,但愿能够帮助更多的好学者。你们来一块儿探讨spring cloud架构的搭建过程及如何运用于企业项目。源码来源测试