SpringCloud全家桶学习之服务发现----Eureka(二)

一、概述

  学习任何一门新的语言,从HelloWorld入门是最合适的,SpringCloud也不例外。最简单的Spring Cloud微服务架构包括服务发现与服务提供者(即在一个大型系统拆分出来的子模块),最极端的微服务就是做到一个方法就是一个服务,一个方法就是一个项目。在一个系统中,服务怎么拆分,要具体问题具体分析,也取决于系统的并发性、高可用性等因素。

二、SpringCloud五大神兽

  ①服务发现:Netflix Eureka

  ②客户端负载均衡:Netflix  Ribbon

  ③熔断器:Netflix HyStrix,当服务调用出现任何异常时,可以利用熔断的逻辑完成错误的解决

  ④服务网关:Netflix Zuul,类似于nginx反向代理功能,不过netflix增加了一些配合其他组件的特性,配合Spring Cloud Bus可以实现动态的配置更新

  ⑤分布式配置:Spring Cloud config

三、Eureka介绍

(1)Eureka是什么?

  Eureka是NetFlix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper

  Eureka采用C-S的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中心。

  系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否正常运行。SpringCloud的一些其他模块(比如Zuul)就可以通过Eureka Server来发现系统中的其他微服务,并执行相关的逻辑。

(2)三大角色

①Eureka Server:提供服务注册和发现

②Service Provider:服务提供方将自身服务注册到Eureka,从而使服务消费方能够找到

③Service Consumer:服务消费方从Eureka获取注册服务列表,从而消费服务

三、Eureka构建步骤

  本工程代码已上传至Github:

(1)新建Module,pom添加如下配置: 

 <parent>
        <artifactId>microservice-demo-study</artifactId>
        <groupId>com.microservice</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>microservice-eureka</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <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>

(2)增加application.yml配置文件,如下:

server:
  port: 8001
spring:
  application:
    name: microservice-eureka
eureka:
  instance:
    hostname: localhost #eureka服务端实例名称
  client:
    register-with-eureka: false #false表示不向注册中心注册自己
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务

(3)启动Application

@SpringBootApplication
@Slf4j
@EnableEurekaServer
public class Application {
    public static void main(String[] args) {
        try {
            SpringApplication.run(ApplicationBoot.class, args);
        } catch (Throwable t) {
            log.error("启动失败", t);
            throw t;
        }
    }
}

(4)访问浏览器:localhost:8001

  

  至此,Eureka服务端已经构建完成,下面就是构建provider

 四、Provider构建

(1)new一个Module,pom添加如下:  

 <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>

(2)application.yml格式添加如下:

server:
  port: 9001
spring:
  application:
    name: microservice-provider
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/

(3)启动Application

@SpringBootApplication
@Slf4j
@EnableEurekaClient
public class Application {
    public static void main(String[] args) {
        try {
            SpringApplication.run(ApplicationBoot.class, args);
        } catch (Throwable t) {
            log.error("启动失败", t);
            throw t;
        }
    }
}

(4)浏览器访问:localhost:8001

  

猜你喜欢

转载自www.cnblogs.com/rmxd/p/11537708.html