最近学习spring cloud,boot+cloud的形式用起来挺不错的,学习过程中试着搭建了一个完整的分布式微服务结构,这个结构由以下组件组成组成
- eureka server:注册中心
- config server:配置中心
- gateway:网关
- service:服务
spring cloud服务的注册与发现的理论网上一大堆,推荐几篇不错的系列博客
这些博客的写得相当不错,我学习的时候也大多参考这些博客,不过上面博客中的一些例子用的版本相对较老,这里贴出我使用的版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <dependencyManagement> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR4</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.7.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencyManagement>
|
注册中心服务端
引入依赖
1 2 3 4
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
|
配置文件application.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| server: port: ${port:8082} tomcat: uri-encoding: UTF-8 spring: application: name: eureka eureka: instance: hostname: localhost server: enable-self-preservation: false eviction-interval-timer-in-ms: 10000 client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
|
在主类上添加注解
1 2 3 4 5 6 7 8
| @SpringBootApplication @EnableEurekaServer public class ApplicationEureka { public static void main(String[] args){ SpringApplication app = new SpringApplication(ApplicationEureka.class); app.run(args); } }
|
注册中心的服务端就写完了,几乎就是一个空工程,这也得益于spring boot强大的自动配置。
注册中心客户端
添加依赖
1 2 3 4 5 6 7 8
| <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>
|
配置文件application.yml
1 2 3 4 5 6
| spring: application: name: sample client: serviceUrl: defaultZone: http://localhost:8082/eureka/
|
在主类上添加@EnableEurekaClient
注解
1 2 3 4 5 6 7 8
| @SpringBootApplication @EnableEurekaClient public class ApplicationClient { public static void main(String[] args){ SpringApplication app = new SpringApplication(ApplicationClient.class); app.run(args); } }
|
分别启动eureka server和client,打开localhost:8082
,即eureka server的网址,就可以看到名为sample的服务已经注册在注册中心了。