SpringCloud构建微服务 | 服务注册与发现(一)提供Demo

Eureka介绍

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。

SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

Eureka包含两个组件:Eureka Server和Eureka Client。

Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。

Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。


创建“服务注册中心”

创建一个基础的Spring Boot工程,并在pom.xml中引入需要的依赖内容:

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

  


在启动类上加注解

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }

}

启添加配置(采用yml格式)

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
      #表示是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false
    register-with-eureka: false
  server:
    enable-self-preservation: false
spring:
  application:
    name: eureka
#server:
#  port: 8761

启动工程

因为没有任何服务注册在上面,所以没有发现任何服务。

Demo地址:SpringCloudEurekaServer



创建一个新项目作为服务提供方并注册在Eureka:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

在主类上添加注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }

}

修改application.yml配置(注意每一个属性的位置):

将应用命名为test,并把服务注册到:

http://127.0.0.1:8761/eureka/
spring:
  application:
    name: test
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka/

启动主类查看Eureka:

要保证服务提供中心保持运行状态才能注册上去

 Demo地址:SpringCloudEurekaClinet

原文地址:https://www.cnblogs.com/wdnnccey/p/10730225.html

时间: 2024-08-30 09:14:40

SpringCloud构建微服务 | 服务注册与发现(一)提供Demo的相关文章

springCloud(3):微服务的注册与发现(Eureka)

一.简介 服务消费者需要一个强大的服务发现机制,服务消费者使用这种机制获取服务提供者的网络信息.即使服务提供者的信息发生变化,服务消费者也无须修改配置. 服务提供者.服务消费者.服务发现组件三者之间的关系大致如下: 1.各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息. 2.服务消费者可以从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口. 3.各个微服务与服务发现组件使用一定机制(如:心跳)通信,服务发现组件如长时间无法与某微服务

史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

最新Finchley版本请访问:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/或者http://blog.csdn.net/forezp/article/details/81040925 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境简单,可以在开发人员的电脑上跑.另外说明spring cl

JAVA架构师之SpringBoot,SpringCloud构建微服务项目架构

springcloud微服务项目架构搭建第一天(一).项目简介1.准备工作:idea创建springboot模板 2.后台应该涉及的技术(后期可能会有删改) Spring Framework 容器SpringMVC MVC框架Apache Shiro 安全框架Spring session 分布式Session管理MyBatis ORM框架MyBatis Generator 代码生成PageHelper MyBatis物理分页插件Druid 数据库连接池FluentValidator 校验框架Th

springcloud 的学习(一) 服务的注册与发现

水滴石穿 知道springcloud 很久了,但是一直没有时间学习和练习,正好这两天有这个冲动,那就趁热打铁...!!!!! 搜寻了一些资料后发现了一个简单易上手的系列博客 http://blog.csdn.net/forezp/article/details/70148833   借此练手....感谢前辈的知识总结和分享 -------------------------------------------------------------------- 1.创建项目,我这里使用的是IDE,

go微服务框架go-micro深度学习(三) Registry服务的注册和发现

服务的注册与发现是微服务必不可少的功能,这样系统才能有更高的性能,更高的可用性.go-micro框架的服务发现有自己能用的接口Registry.只要实现这个接口就可以定制自己的服务注册和发现. go-micro在客户端做的负载,典型的Balancing-aware Client模式. 服务端把服务的地址信息保存到Registry, 然后定时的心跳检查,或者定时的重新注册服务.客户端监听Registry,最好是把服务信息保存到本地,监听服务的变动,更新缓存.当调用服务端的接口是时,根据客户端的服务

Eureka 服务的注册与发现

(一)服务的注册于发现(eureka); Eureka Server: 服务注册中心,负责服务列表的注册.维护和查询等功能 在Idea里,新建项目,选择Spring initializer. 下面的pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://

使用consul实现服务的注册和发现

服务注册 - 服务进程在注册中心注册自己的位置.它通常注册自己的主机和端口号,有时还有身份验证信息,协议,版本号,以及运行环境的详细资料. 服务发现 - 客户端应用进程向注册中心发起查询,来获取服务的位置.服务发现的一个重要作用就是提供一个可用的服务列表 服务定义的格式类似如下: [plain] view plain copy { "service":{ "id": "jetty", "name": "jetty&q

SpringCloud微服务云架构构建B2B2C电子商务平台之-服务的注册与发现Eureka

创建服务注册中心在这里,我还是采用Eureka作为服务注册与发现的组件,至于Consul 之后会出文章详细介绍. 2.1 首先创建一个maven主工程. 首先创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE.这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom.这一系列文章全部采用这种模式,其他文章的pom跟这个pom一样.再次说明一下,以后

业余草 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

一.spring cloud简介 鉴于<史上最简单的Spring Cloud教程>很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如下: http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发

SpringCloud分布式微服务云架构 第一篇: 服务的注册与发现Eureka(Finchley版

一.spring cloud简介鉴于<史上最简单的Spring Cloud教程>很受读者欢迎再次我特意升级了一下版本目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如下http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发人员提供了