SpringCloud笔记1:Eureka服务注册

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。Spring Cloud为服务治理做了一层接口,可以支持多种不同的服务治理框架,如Netflix Eureka、Consul、Zookeeper。在Spring Cloud服务治理抽象层的作用下,我们可以无缝地切换服务治理实现,并且不影响任何其他的服务注册、服务发现、服务调用等逻辑。

Eureka是什么?

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

Eureka能做什么?

服务治理:服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主要负责完成微服务架构中的服务治理功能。
服务注册:在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,包括服务的主机与端口号、服务版本号、通讯协议等一些附加信息。注册中心按照服务名分类组织服务清单,同时还需要以心跳检测的方式去监测清单中的服务是否可用,若不可用需要从服务清单中剔除,以达到排除故障服务的效果。
服务发现:在服务治理框架下,服务间的调用不再通过指定具体的实例地址来实现,而是通过服务名发起请求调用实现。服务调用方通过服务名从服务注册中心的服务清单中获取服务实例的列表清单,通过指定的负载均衡策略取出一个服务实例位置来进行服务调用。

Eureka怎么做?

创建Eureka Server
由于SpringCloud是基于Spring Boot的,可以使用Spring Tool Suite工具创建一个基于springboot的maven项目eureka_server,Starter选择Eureka,可以自动引入相关依赖,或者创建空项目,在pom.xml中引入Eureka Server的依赖。这里注意为了避免不必要的麻烦,SpringBoot的版本最好要和Eureka的版本要相匹配,这里使用的皆为最新稳定版,springboot:2.0.5.RELEASE,springcloud:Finchley.SR1。

配置application.yml:
配置端口号为8761(任意)
eureka server 在启动之后会尝试注册自身,而registerWithEureka: false和fetchRegistry: false两项配置是禁止这个行为。

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

启动Eureka服务只需要在springboot工程的启动类上添加一个注解@EnableEurekaServer,启动后访问localhost:8761出现spring Eureka的页面,搭建成功。从Application中No instances available可以得知没有任务服务实例注册到当前的服务注册中心。

@SpringBootApplication
@EnableEurekaServer  // 添加Eureka服务注解
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}


创建Eureka Client
新建一个springboot项目:eureka_client,和server类似,引入cloud依赖、修改配置文件、启动类添加注解即可。相关配置如下:

defaultZone为任何不表示首选项的客户端提供服务URL(即它是有用的默认值)。 通过 spring.application.name属性,我们可以指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问。@EnableEurekaClient 与@EnableDiscoveryClient这两个注解都可以实现服务发现的功能,@EnableEurekaClient基于spring-cloud-netflix。服务采用eureka作为注册中心,使用场景较为单一。@EnableDiscoveryClient基于spring-cloud-commons。服务采用其他注册中心。

启动后访问localhost:8762/,项目启动正常,然后查看localhost:8761/服务注册端口,Application中多了一条已注册的服务信息,服务注册成功。

附录:源代码

你可能感兴趣的:(SpringCloud笔记1:Eureka服务注册)