博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Eureka的服务治理
阅读量:6758 次
发布时间:2019-06-26

本文共 3741 字,大约阅读时间需要 12 分钟。

代码地址如下:

http://www.demodashi.com/demo/11927.html

一、服务的注册与发现

1. 服务注册于发现.png

关系调用说明:

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

二、Eureka简介

Eureka是Spring Cloud Netflix微服务套件中的一部分,可以与Springboot构建的微服务很容易的整合起来。

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

三、使用Eureka进行服务治理

1. 搭建服务注册中心

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

org.springframework.cloud
spring-cloud-starter-eureka-server
org.springframework.cloud
spring-cloud-dependencies
Brixton.SR5
pom
import

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

@EnableEurekaServer@SpringBootApplicationpublic 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=falseeureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

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

2. Eureka信息面板.png

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

2. 注册服务

基于文章中构建的第一个Springboot项目(在附件中的springbootdemo.zip实例),来进行改造。首先在pom文件中添加Eureka客户端相关的依赖:

org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.cloud
spring-cloud-dependencies
Brixton.RS5
pom
import

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

@RestControllerpublic class TestRestful {    private final Logger logger=Logger.getLogger(getClass());    @Autowired    private 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@SpringBootApplicationpublic 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项目,可以看到如下的信息,说明此服务已经注册在了注册中心

3 服务启动日志.png

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

4 服务启动.png

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

5 日志.png

四、项目代码截图

QrW45OzR7NhjT4j3PFl.jpg基于Eureka的服务治理

代码地址如下:

http://www.demodashi.com/demo/11927.html

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

你可能感兴趣的文章
js跨域问题解决方案
查看>>
(八)统一配置中心-Config
查看>>
I.MX6 Android CAN 命令行测试
查看>>
linux shell except tcl login ssh Automatic interaction
查看>>
iOS JSONModel解析数据成Model
查看>>
QQ空间抢车位刷钱方法汇总
查看>>
[LeetCode] Missing Number
查看>>
java.lang.IllegalStateException: Illegal access
查看>>
STL容器的效率比较
查看>>
Ckeditor使用总结
查看>>
人事面试100问题--巧妙应答
查看>>
【工具类】怎么进入阿里云docker仓库
查看>>
Ceres-Solver库入门
查看>>
悲惨而又丢人的创业经历:草根创业者含恨倾诉为什么失败
查看>>
理解WebKit和Chromium: WebKit, WebKit2, Chromium和Chrome介绍
查看>>
hanoi塔的递归算法
查看>>
C# 校验给定的ip地址是否合法
查看>>
lumen 登陆 注册 demo
查看>>
基于服务的并行系统的通讯方式探讨
查看>>
设计模式——观察者模式
查看>>