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. Guava Cache缓存的移除与读取
  2. 如何检查文件是否是python中的目录或常规文件? [重复]
  3. Android应用安全之Content Provider安全
  4. 【渝粤教育】电大中专电大中专沟通技巧考试考核试题 (2)作业 题库
  5. html适配Anroid手机
  6. CFileDialog获取文件与文件夹路径
  7. hack (浏览器兼容css hack)
  8. 在 Eclipse 中进行 局部 、全局搜索
  9. 泰安虚拟服务器怎么样,泰安S5353:搭建您最满意的服务器
  10. Android查看appPackage和Activity的多种方法
  11. kafka面试题整理
  12. A7芯片 IOS降级 跳过ID | ipad Mini2降级 10.3.3
  13. 5.1数学建模与MATLAB--层次分析法(评价类问题)
  14. 一篇关于微信防撤回(文本、图片、语音、视频、名片等...)的Python学习教程
  15. python在财务中的应用实训报告-衡南2020年_商务办公软件应用与实践_高校邦_期末答案...
  16. Exception in thread “main“ java.lang.NumberFormatException
  17. 人工智能数学基础:费马引理、罗尔定理、拉格朗日微分中值定理、柯西中值定理
  18. SQL 语法查询手册
  19. [乐意黎原创] 删除QQ的MiniBrowser浏览器,QQ聊天会话中点击链接直接用默认浏览器中打开
  20. 联发科技获得IPValue Management的专利组合许可

热门文章

  1. spark成长之路(1)spark究竟是什么?
  2. 2016 Multi-University Training Contest 2
  3. Python学习笔记(语句)
  4. spring+hibernate--直接修改数据库,再通过hibernate查询数据不变
  5. 2011总结与2012展望
  6. [边学边用]jquery插件制作
  7. Mac使用技巧:清除 MacBook 上的浏览器缓存
  8. 自定义Android中Dialog的弹出动画
  9. 2020杭电多校6 1006A Very Easy Graph Problem血泪史
  10. ES6入门---变量的解构赋值