Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。愿意了解源码的朋友直接求求交流分享技术 一七九一七四三三八零

服务注册中心 :eureka-server

新建一个springboot项目:eureka-server,其pom.xml配置如下

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><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>
复制代码

想要实现一个服务注册中心的功能非常简单,只需要在项目的启动类EurekaServerApplication上使用@EnableEurekaServer注解即可

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication{public static void main(String[] args) {new SpringApplicationBuilder(EurekaServerApplication.class).web(true).run(args);}
}
复制代码

默认情况下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties配置文件中增加如下信息:

spring.application.name=eureka-server
server.port=1001
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
复制代码

启动EurekaServerApplication,访问 http:/ /localhost:9001/ 可以看到Eureka的页面。

服务提供方 :eureka-client

每一个实例注册之后需要向注册中心发送心跳,当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。

新建一个springboot项目:eureka-client,其pom.xml配置如下:

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><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>
复制代码

想要实现一个服务提供方也很简单,只要在项目的启动类EurekaClientApplication上使用@EnableEurekaClient注解即可

@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {public static void main(String[] args) {new SpringApplicationBuilder(EurekaClientApplication.class).web(true).run(args);}
}
复制代码

在application.properties中进行如下配置

spring.application.name=eureka-client
server.port=9002
eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka/
复制代码

启动EurekaClientApplication类

刷新 http:/ /localhost:9001/, 可以看到咱们的服务提供方已经注册到了服务注册中心

新建一个DiscoveryController 使用discoveryClient.getServices()获取已经注册的服务名,使用@value将配置文件中的信息赋值到ip

@RestController
public class DiscoveryController {@Autowiredprivate DiscoveryClient discoveryClient;@Value("${server.port}")private String ip;@GetMapping("/client")public String client() {String services = "Services: " + discoveryClient.getServices()+" ip :"+ip;System.out.println(services);return services;}
}
复制代码

访问:http:/ /localhost:9002/client

最后说明一下@EnableEurekaClient 与@EnableDiscoveryClient这两个注解

 首先这个两个注解都可以实现服务发现的功能,在spring cloud中discovery service有许多种实现(eureka、consul、 zookeeper等等)

 @EnableEurekaClient基于spring-cloud-netflix。服务采用eureka作为注册中心,使用场景较为单一。

 @EnableDiscoveryClient基于spring-cloud-commons。服务采用其他注册中心。

转载于:https://juejin.im/post/5c6e05d8e51d453fcb7ba4ba

spring cloud构建互联网分布式微服务云平台-服务注册与发现相关推荐

  1. spring cloud构建互联网分布式微服务云平台- Netflix

    该项目通过自动配置为Spring Boot应用程序提供Netflix OSS集成,并绑定到Spring环境和其他Spring编程模型成语.通过几个简单的注释,您可以快速启用和配置应用程序中的常见模式, ...

  2. spring cloud构建互联网分布式微服务云平台-消息总线

    Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka.在本文中,我们将搭建一个Kafka的本地环境,并通过它来尝试使用Spring Cloud B ...

  3. spring cloud构建互联网分布式微服务云平台-Spring Cloud Commons 普通抽象

    诸如服务发现,负载平衡和断路器之类的模式适用于所有Spring Cloud客户端可以独立于实现(例如通过Eureka或Consul发现)的消耗的共同抽象层.愿意了解源码的朋友直接求求交流分享技术一七九 ...

  4. spring cloud构建互联网分布式微服务云平台-docker部署spring cloud项目

    一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...

  5. spring cloud构建互联网分布式微服务云平台-断路器聚合监控(Hystrix Turbine)

    一.Hystrix Turbine简介 看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbi ...

  6. spring cloud构建互联网分布式微服务云平台-Ribbon

    一:Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接 ...

  7. 使用Spring Cloud构建分布式应用

    使用Spring Cloud构建分布式应用 介绍 Spring Cloud是一组构建分布式系统的框架,它提供了各种工具和库,帮助开发人员构建高可用.可伸缩.灵活的分布式应用程序.本文将介绍如何使用Sp ...

  8. (二十)java版spring cloud+spring boot 社交电子商务平台-spring cloud构建全球多租户分布式微服务部署的方案...

    电子商务平台源码请加企鹅求求:一零三八七七四六二六.最近在用spring cloud分布式微服务云架构做一个全球多租户分布式部署的方案,我在这里只是简单的记录,当前的架构图只能是一个大概的方案,具体实 ...

  9. Spring Cloud构建分布式电子商务平台:服务消费(基础)

    使用LoadBalancerClient 在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient.这里我们即将介绍的LoadBalance ...

  10. Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)

    断路器 断路器模式源于Martin Fowler的Circuit Breaker一文."断路器"本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时," ...

最新文章

  1. C++深入理解虚函数
  2. STM32F4读写内部FLASH【使用库函数】
  3. TTThumbsViewController 由 4张 改为 3张的方式 增补
  4. php 验证 e mail,PHP 表单验证 - 验证 E-mail 和 URL
  5. Spring MVC访问不到静态资源
  6. Hystrix 简介和使用
  7. Spark精华问答 | Spark和Hadoop的架构区别解读
  8. 08-01 Jmeter 核心原理与性能测试理论
  9. HttpCombiner.ashx处理
  10. 概率与信息论---贝叶斯规则
  11. 【软考系统架构设计师】2020年下系统架构师综合知识历年真题
  12. 2020年acwifi拆过的无线路由器配置汇总
  13. Leslie 模型预测
  14. java实现在线预览--poi实现word、excel、ppt转html
  15. IPv4 至 IPv6改造过渡方案
  16. 共探机遇 2018中国产业互联网化纤创新者大会华丽启幕
  17. 刘洪波《英文字根词源精讲》完整目录
  18. MYSQL分区表学习
  19. 【ODYSSEY-STM32MP157C】驱动 UART 读取传感器数据
  20. 入木三分学网络第一篇--VRRP协议详解-----(1)

热门文章

  1. VS2013用InstallShield生成安装包文件步骤
  2. 【QT】Qaction和触发函数建立连接的方法
  3. 2017CodeM复赛
  4. html基本进阶知识【转】
  5. close() was never explicitly called on database
  6. matlab随机数函数小结
  7. 如何使用mac自带录屏截图功能?真的超好用
  8. 全新的Smultron 12已发布:简单好用、功能强大、优雅简洁
  9. 关于Mac能连上Wi-Fi但无法上网的问题?方法来啦
  10. 前端基础学习之CSS选择器