关于Spring Cloud Eureka
2017-11-13 08:54
621 查看
首先,我们来尝试使用Spring Cloud Eureka来实现服务治理。
Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。
下面,就来具体看看如何使用Spring Cloud Eureka实现服务治理。
创建一个基础的Spring Boot工程,命名为
通过
Boot应用中添加这个注解就能开启此功能,比如下面的例子:
在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在
为了与后续要进行注册的服务区分,这里将服务注册中心的端口通过server.port属性设置为1001。启动工程后,访问:http://localhost:1001/,可以看到下面的页面,其中还没有发现任何服务。
下面我们创建提供服务的客户端,并向服务注册中心注册自己。本文我们主要介绍服务的注册与发现,所以我们不妨在服务提供方中尝试着提供一个接口来获取当前所有的服务信息。
首先,创建一个基本的Spring Boot应用。命名为
其次,实现/dc请求处理接口,通过DiscoveryClient对象,在日志中打印出服务实例的相关内容。
最后在应用主类中通过加上
我们在完成了服务内容的实现之后,再继续对
通过
启动该工程后,再次访问:http://localhost:1001/。可以如下图内容,我们定义的服务被成功注册了。
当然,我们也可以通过直接访问
其中,方括号中的
Cloud定义的
Cloud在服务发现这一层做了非常好的抽象,所以,对于上面的程序,我们可以无缝的从eureka的服务治理体系切换到consul的服务治理体系中区。
从现在开始,我这边会将近期研发的springcloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,希望可以帮助更多的好学者。大家来一起探讨spring
cloud架构的搭建过程及如何运用于企业项目。源码来源
Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。
下面,就来具体看看如何使用Spring Cloud Eureka实现服务治理。
创建“服务注册中心”
创建一个基础的Spring Boot工程,命名为eureka-server,并在
pom.xml中引入需要的依赖内容:
12345678910111213141516171819202122232425 | <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> <relativePath/></parent><dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</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> |
@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话。这一步非常的简单,只需要在一个普通的Spring
Boot应用中添加这个注解就能开启此功能,比如下面的例子:
123456789 | @EnableEurekaServer@SpringBootApplicationpublic class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(true).run(args); }} |
application.properties配置文件中增加如下信息:
123456 | spring.application.name=eureka-serverserver.port=1001eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false |
创建“服务提供方”
下面我们创建提供服务的客户端,并向服务注册中心注册自己。本文我们主要介绍服务的注册与发现,所以我们不妨在服务提供方中尝试着提供一个接口来获取当前所有的服务信息。首先,创建一个基本的Spring Boot应用。命名为
eureka-client,在
pom.xml中,加入如下配置:
1234567891011121314151617181920212223242526272829 | <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> |
1234567891011121314 | @RestControllerpublic 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中对服务信息的输出。
123456789 | @EnableDiscoveryClient@SpringBootApplicationpublic class Application { public static void main(String[] args) { new SpringApplicationBuilder( ComputeServiceApplication.class) .web(true).run(args); }} |
application.properties做一些配置工作,具体如下:
123 | spring.application.name=eureka-clientserver.port=2001eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/ |
spring.application.name属性,我们可以指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问。
eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。为了在本机上测试区分服务提供方和服务注册中心,使用
server.port属性设置不同的端口。
启动该工程后,再次访问:http://localhost:1001/。可以如下图内容,我们定义的服务被成功注册了。
当然,我们也可以通过直接访问
eureka-client服务提供的
/dc接口来获取当前的服务清单,只需要访问:http://localhost:2001/dc,我们可以得到如下输出返回:
1 | Services: [eureka-client] |
eureka-client就是通过Spring
Cloud定义的
DiscoveryClient接口在eureka的实现中获取到的所有服务清单。由于Spring
Cloud在服务发现这一层做了非常好的抽象,所以,对于上面的程序,我们可以无缝的从eureka的服务治理体系切换到consul的服务治理体系中区。
从现在开始,我这边会将近期研发的springcloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,希望可以帮助更多的好学者。大家来一起探讨spring
cloud架构的搭建过程及如何运用于企业项目。源码来源
相关文章推荐
- spring cloud 学习(二)关于 Eureka 的学习笔记
- Spring cloud eureka+Client+Spring boot admin 服务注册监控
- 关于Spring Cloud应用程序上下文服务
- springcloud(第一篇)springcloud eureka 服务注册与发现
- Spring cloud Eureka服务注册及发现(三)发现使用服务
- SpringCloud实战-Eureka
- Spring Cloud中,Eureka常见问题总结
- SpringCloud的服务注册中心(三) - 进一步了解 Eureka
- 关于Spring Cloud 框架热部署的方法
- Spring Cloud Eureka的自我保护机制
- Spring Cloud Eureka与Ribbon——服务发现与消费
- spring cloud eureka 消费者使用服务名访问,不能访问的问题
- Spring Cloud 之 Spring Cloud Eureka(四)
- SpringCloud—— eureka
- Spring Cloud Eureka 增加权限认证
- Spring Cloud中,Eureka常见问题总结
- 跟大家介绍一下关于Spring Cloud Consul
- Spring Cloud Netflix的3大组件应用 Eureka&Ribbon&Hystrix
- 疯狂Spring Cloud连载(4)第一个Eureka程序
- 如何用springcloud找妹纸之2--- 相识于江湖(Eureka)