代码地址如下:
http://www.demodashi.com/demo/11927.html

一、服务的注册与发现

关系调用说明:

  • 服务生产者启动时,向服务注册中心注册自己提供的服务
  • 服务消费者启动时,在服务注册中心订阅自己所需要的服务
  • 注册中心返回服务提供者的地址信息个消费者
  • 消费者从提供者中调用服务

二、Eureka简介

Eureka是Spring Cloud Netflix微服务套件中的一部分,可以与Springboot构建的微服务很容易的整合起来。
Eureka包含了服务器端和客户端组件。服务器端,也被称作是服务注册中心,用于提供服务的注册与发现。Eureka支持高可用的配置,当集群中有分片出现故障时,Eureka就会转入自动保护模式,它允许分片故障期间继续提供服务的发现和注册,当故障分片恢复正常时,集群中其他分片会把他们的状态再次同步回来。
客户端组件包含服务消费者与服务生产者。在应用程序运行时,Eureka客户端向注册中心注册自身提供的服务并周期性的发送心跳来更新它的服务租约。同时也可以从服务端查询当前注册的服务信息并把他们缓存到本地并周期性的刷新服务状态。

三、使用Eureka进行服务治理

1. 搭建服务注册中心

单独创建一个Springboot项目,并添加如下的依赖

<dependencies><!--添加Eureka服务器端依赖--><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>Brixton.SR5</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

在Springboot项目中的main入口,添加@EnableEurekaServer注解,来开启服务注册中心

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

在默认情况下,服务注册中心也会把自己当做是一个服务,将自己注册进服务注册中心,所以我们可以通过配置来禁用他的客户端注册行为,在application.properties中添加如下配置:

server.port=3333eureka.instance.hostname=localhost
#不要向注册中心注册自己
eureka.client.register-with-eureka=false
#禁止检索服务
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

启动应用,并访问http://localhost:3333/即可看到Eureka信息面板,如下:

从上图看到,在”Instances currently registered with Eureka”信息中,没有一个实例,说明目前还没有服务注册。

2. 注册服务

基于文章[微服务系列] 微服务构建框架–Spring Boot中构建的第一个Springboot项目(在附件中的springbootdemo.zip实例),来进行改造。首先在pom文件中添加Eureka客户端相关的依赖:

<dependencies><!----><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Brixton.RS5</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

在之前的TestRestful方法中添加如下代码,将org.springframework.cloud.client.discovery.DiscoveryClient;对象注入,并且在日志中打印出与服务相关的一些信息。

@RestController
public class TestRestful {private final Logger logger=Logger.getLogger(getClass());@Autowiredprivate DiscoveryClient client;@RequestMapping(value = "/hello",method = RequestMethod.GET)public String home(){ServiceInstance instance=client.getLocalServiceInstance();logger.info("serviceId"+instance.getServiceId()+"host:post="+instance.getHost()+":"+instance.getPort());return "hello spring";}
}

在主类上添加@EnableEurekaClient注解以实现Eureka中的DiscoveryClient实现。

@EnableEurekaClient
@SpringBootApplication
public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplication.class, args);}
}

最后在配置文件application.yml中配置与服务相关的一些基本信息,如服务名、注册中心地址(即上一节中设置的注册中心地址http://localhost:3333/eureka)

#  设置服务名
spring:application:name: hello-service
#  设置注册中心地址
eureka:client:service-url:defaultZone: http://localhost:3333/eureka
3. 测试
  1. 启动注册中心服务
  2. 启动springbootdemo项目,可以看到如下的信息,说明此服务已经注册在了注册中心

同时访问http://localhost:3333/可以在Instances currently registered with Eureka中看到已经有一个服务注册了进来,并且名称为HELLO-SERVICE的服务

  1. 访问http://localhost:8088/hello可以在控制台中看到如下日志信息:

四、项目代码截图

基于Eureka的服务治理

代码地址如下:
http://www.demodashi.com/demo/11927.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

基于Eureka的服务治理相关推荐

  1. eureka hostname作用_springcloud使用Eureka实现服务治理替代dubbo加zookeeper

    使用Eureka实现服务治理 作用:实现服务治理(服务注册与发现) 简介: Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块.而Spring Clo ...

  2. 基于Springcloud的服务治理落地实践

    前言 在微服务盛行的今天,提起服务治理,相信大家都已经不再陌生,许多公司都有自己内部的一套定制化的实现方案, Access也不例外, 接下来, 我来为大家介绍一下我们的一套基于Springcloud的 ...

  3. eureka java_spring cloud 入门系列二:使用Eureka 进行服务治理

    服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现. Spring Cloud Eureka是Spring Cloud Netflix 微服务套件的一部分 ...

  4. 分布式面试 - 如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?

    分布式面试 - 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试题 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试官心理分析 服务治理,这个问题如 ...

  5. 基于Eureka实现服务注册中心

    一.序言 当项目由单体结构拆分成一个个的服务,服务之间由本地调用转变成远程调用的时候,我们可以看成是通过一个个的url去获取数据.调用方和被调用方需要知道彼此的状态才可互相通信,而注册中心正是屏蔽了他 ...

  6. .NET Core微服务之基于Consul实现服务治理

    一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Co ...

  7. 面试系列26 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试

    (1)服务治理 1)调用链路自动生成 一个大型的分布式系统,或者说是用现在流行的微服务架构来说吧,分布式系统由大量的服务组成.那么这些服务之间互相是如何调用的?调用链路是啥?说实话,几乎到后面没人搞的 ...

  8. .NET Core微服务之基于Consul实现服务治理(续)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 上一篇发布之后,很多人点赞和评论,不胜惶恐,这一篇把上一篇没有弄到的东西补一下,也算是给各位前来询问的朋友的一些回复吧. 一.Consul ...

  9. 基于Redis的服务治理平台!

    Consul + Sky = CoSky CoSky 是一个轻量级.低成本的服务注册.服务发现. 配置服务 SDK,通过使用现有基础设施中的 Redis (相信你已经部署了Redis),不用给运维部署 ...

最新文章

  1. css揭秘之linear-gradient
  2. 教程-Delphi调用百度地图API(XE8+WIN7)
  3. CentOS 6.3安装Nginx开启目录浏览、下载功能
  4. 求和第一个算到最后一个周末求_Excel最全求和函数—sum家族系列
  5. python制作二级菜单_Python_简单三级菜单制作
  6. 实现一个登录:Mac+.NET 5+Identity+JWT+VS Code
  7. 使用 CXF 做 webservice 简单例子
  8. java空白页,[求教]JSP页面显示为空白页,请高手赐教!
  9. Mac系统如何删除.DS_Store文件且不再生
  10. 算法:258. Add Digits 各位相加
  11. 计算机基础硬件知识试题及答案,计算机基础知识试题及答案大全(总结一)
  12. python爬京东联盟_有接入京东联盟,但是发现问题好多啊
  13. starbound服务器文件,starbound星界边境开新档并从老存档转移物资的方法_快吧单机游戏...
  14. Android Studio 插件-Android Styler 的使用 (转)
  15. bat脚本中如何多次键盘输入并判断_bat教程[282] @
  16. [人生故事] -- 花朵静悄悄地开放
  17. 泛微任意文件上传(CNVD-2021-49104)
  18. Oracle两行数据相减
  19. WORD如何互相复制样式?
  20. 怎么测试视频是哪个软件拍的,李子柒的视频是用什么设备拍摄的,又是用什么软件处理的?...

热门文章

  1. EssentialC++
  2. RT-Thread Stduio 增加一个串口3
  3. Python自定义包
  4. 彻底搞懂 python 中文乱码问题_Python BeautifulSoup中文乱码问题的2种解决方法
  5. 【C语言】找到兼职了心情紧张!
  6. Linux中断(interrupt)子系统之四:驱动程序接口层 中断通用逻辑层
  7. 索引与其内部数据结构
  8. 常见网络命令整理(ping、trcert、netstat)
  9. linux 权限管理命令
  10. java使用httpclient封装post请求和get的请求