内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

SpringCloud系列(一):Eureka服务注册与发现

2018-08-04 18:13 出处:清屏网 人气: 评论(0

Spring Cloud 是一个基于Spring Boot 实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式绘画和集群状态管理等操作提供了一种简单的开发方式。

Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如: Spring Cloud ConfigSpring Cloud NetflixSpring Cloud CloudFoundrySpring Cloud AWSSpring Cloud SecuritySpring Cloud CommonsSpring Cloud ZookeeperSpring Cloud CLI 等项目

服务治理

服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务示例的自动化注册与发现。服务治理主要分为两步:

  • 服务注册
  • 服务发现

Spring Cloud Eureka

Spring Cloud Eureka,使用Netfix Eureka 来实现服务注册与发现,它即包含了服务端组件,也包含了客户端组件。

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

Eureka 服务端

Eureka Server我们可以称之为服务注册中心,它同其他注册中心一样,支持高可用配置,常见的注册中心有:

  • Apache Zookeeper
  • Netflix Eureka
  • Consul

Eureka Server是 EurekaClient 的注册服务中心,管理所有注册服务,以及其示例信息和状态

相关依赖:org.springframework.cloud:spring-cloud-starter-netflix-eureka-server
激活服务:@EnableEurekaServer
复制代码

Eureka 客户端

Eureka Client主要处理服务的注册与发现。在Spring Cloud 官方文档中这样描述:

Service Discovery is one of the key tenets of a microservice based architecture. Trying to hand configure each client or some form of convention can be very difficult to do and can be very brittle. Eureka is the Netflix Service Discovery Server and Client. The server can be configured and deployed to be highly available, with each server replicating state about the registered services to the others.

抠脚翻译:

服务发现 是微服务体系结构中非常关键的一个环节。尝试通过手动去管理配置每个客户端或着相关协议是非常困难的一件事。Eureka 是 Netflix服务的服务端与客户端。它可以配置和部署服务器使其具有高可用性,并且将每个服务的注册状态同步到其他服务器中。

Spring Eureka Server

接下来我们手动操作一把,通过Idea 快速创建一个 Eureka Server 服务注册中心。

服务名: spring-cloud-eureka

我们在构建服务时,创建基于Spring Boot 的程序 ,详情参考传送门

1、Maven 依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>
...

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
...
复制代码

在项目依赖方面, Spring Cloud Eureka 服务端非常简单,主要是基于 Spring Boot ,其次引入 spring-cloud-starter-netflix-eureka-server 即可

2、SpringCloudEurekaApplication

启动类需要加上 @EnableEurekaServer 进行服务注册中心启动

@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaApplication.class, args);
    }
}
复制代码

3、application.properties

相关配置信息:

//服务端口
server.port=8761
//eureka 服务地址
eureka.instance.hostname=localhost
//是否将当前服务注册到 Eureka 注册中心
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
//服务地址
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
//服务名称
spring.application.name=eureka-server
复制代码

4、启动服务

服务启动后,打开地址: http://localhost:8761/

我们可以看到,目前并没有服务注册到我们的注册中心中。

Spring Eureka Client

1、Maven 依赖

与服务端不同,这里引入的依赖为: spring-cloud-starter-netflix-eureka-client

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
复制代码

2、SpringCloudEurekaClientApplication

@EnableEurekaClient 该注解能激活Eureka中的DiscoveryClient实现,这样才能实现Controller中对服务信息的输出。

@SpringBootApplication
@EnableEurekaClient
public class SpringCloudEurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaClientApplication.class, args);
    }
}
复制代码

3、application.properties

server.port=8762
//服务名称
spring.application.name = jaycekon-hi

//服务注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

复制代码

4、启动服务

服务启动后,打开地址: http://localhost:8761/

我们可以看到,服务已经成功注册到Eureka Server 中。

参考

https://cloud.spring.io/spring-cloud-static/Dalston.SR5/single/spring-cloud.html#_service_discovery_eureka_clients
http://blog.didispace.com/spring-cloud-starter-dalston-1/
https://segmentfault.com/l/1500000011386051/play

分享给小伙伴们:
本文标签: SpringCloudEureka

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号