Spring Cloud 应用篇 之 Eureka 初体验





(一)Spring Cloud 简介

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

(二)搭建服务注册中心 Eureka

Spring Cloud Eureka是 Spring Cloud Netflix 服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。

1.构建一个 maven 主项目


注:这里 Create from archetype 可以不用勾选,直接构建一个空的 maven 项目。

可以在 maven 主项目里统一管理各个子项目所引用的依赖版本,这一系列项目所用的 Spring Cloud 版本为 Finchley.RC1, Spring Boot 版本为 2.0.1.RELEASE, JDK 为 1.8

pom.xml 文件部分如下


    
    
  1. <properties>
  2. <project.build.sourceEncoding>UTF-8 </project.build.sourceEncoding>
  3. <project.reporting.outputEncoding>UTF-8 </project.reporting.outputEncoding>
  4. <java.version>1.8 </java.version>
  5. <spring-cloud.version>Finchley.RC1 </spring-cloud.version>
  6. <spring-boot.version>2.0.1.RELEASE </spring-boot.version>
  7. </properties>
  8. <dependencyManagement>
  9. <dependencies>
  10. <dependency>
  11. <groupId>org.springframework.cloud </groupId>
  12. <artifactId>spring-cloud-dependencies </artifactId>
  13. <version>${spring-cloud.version}<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-tag">&lt;<span class="hljs-name">type</span>&gt;</span>pom<span class="hljs-tag">&lt;/<span class="hljs-name">type</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-tag">&lt;<span class="hljs-name">scope</span>&gt;</span>import<span class="hljs-tag">&lt;/<span class="hljs-name">scope</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.springframework.boot<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>spring-boot-dependencies<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>${spring-boot.version} </version>
  14. <type>pom </type>
  15. <scope>import </scope>
  16. </dependency>
  17. </dependencies>
  18. </dependencyManagement>
2. 创建一个 module,作为服务注册中心 Eureka Server

注:这里 Create from archetype 仍然不用勾选,直接构建一个空的 maven 项目。

创建完工程后,在 pom.xml 文件中引入依赖


    
    
  1. <dependency>
  2. <groupId>org.springframework.cloud </groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-server </artifactId>
  4. </dependency>
3. 启动类

只需要在 Spring Boot 工程的启动 EurekaServiceApplication 类上加 @EnableEurekaServer 注解。


    
    
  1. @SpringBootApplication
  2. @EnableEurekaServer
  3. public class EurekaServiceApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(EurekaServiceApplication.class, args);
  6. }
  7. }
4. Eureka 的配置文件 application.yaml

    
    
  1. server:
  2. port: 8761
  3. spring:
  4. application:
  5. name: eureka-service
  6. eureka:
  7.    instance:
  8.     hostname: localhost
  9. client:
  10. #由于该应用为注册中心,设置为false,表明不向注册中心注册自己
  11. register-with- eureka: false
  12. #是否从eureka服务器获取注册信息,这里不需要
  13. fetch- registry: false
  14.     service- url:
  15.       defaultZone: http:/ /${eureka.instance.hostname}:${server.port}/eureka /
  16. logging:
  17. level:
  18. com:
  19. netflix:
  20. eureka: OFF
  21. discovery: OFF

Eureka 是一个高可用的组件(后续会配置),每一个实例注册之后需要向注册中心发送心跳,在默认情况下 erureka server 也是一个eureka client ,必须要指定一个 server,通过 eureka.client.register-with-eureka:false 和 fetch-registry:false 来设置自己是一个eureka server

5. 运行 EurekaServiceApplication 启动服务

在浏览器中输入http://localhost:8761,就可以看到Eureka的管理界面


当前因为还没有服务注册进来,所以是 No instances available

(三)服务注册与发现:注册服务提供者

1. 创建一个 module,作为服务提供者,与创建 Eureka 类似
2. 添加 pom 依赖

    
    
  1. <dependency>
  2. <groupId>org.springframework.cloud </groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-client </artifactId>
  4. </dependency>
3. 启动类

    
    
  1. @SpringBootApplication
  2. @EnableEurekaClient
  3. @RestController
  4. public class SpringCloudServiceApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(SpringCloudServiceApplication.class, args);
  7. }
  8. }

通过注解@EnableEurekaClient 表明自己是一个 EurekaClient。

@EnableEurekaClient 注解是基于 spring-cloud-netflix 依赖,只能 eureka 使用

还可以使用 @EnableDiscoveryClient

@EnableDiscoveryClient 注解是基于 spring-cloud-commons 依赖,并且在classpath中实现

4. 写一个服务接口

    
    
  1. @RestController
  2. public class PortService {
  3. @Value("${server.port}")
  4. String port;
  5. @RequestMapping("port")
  6. public String getPort() {
  7. return "Hello World, I'm from port : " + port;
  8. }
  9. }
5. 配置文件 application.yaml

    
    
  1. server:
  2. port: 8281
  3. eureka:
  4. client:
  5. serviceUrl:
  6. spring:
  7. application:
  8. name: spring-demo-service
6. 启动应用


在Eureka的控制台上已经看到应用名,证明服务提供者已经成功注册在Eureka上了

7. 在浏览器输入 http://localhost:8281/port,如下


源码下载:https://github.com/shmilyah/spring-cloud-componets
转载来源:https://blog.csdn.net/hubo_88/article/details/80520850



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值