一、Eureka简介

  spring Cloud Netflix技术栈中,Eureka作为服务注册中心对整个微服务架构起着最核心的整合作用。有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务。他的功能类似于dubbo的注册中心(register)。

  服务发现:服务发现是微服务基础架构的关键原则之一。试图着手配置每个客户端或某种格式的约定可以说是非常困难的和非常脆弱的。Eureka是Netflix服务发现的一种服务和客户端。这种服务是可以被高可用性配置的和部署,并且在注册的服务当中,每个服务的状态可以互相复制给彼此。

  服务注册:当一个客户端注册到Eureka,它提供关于自己的元数据(诸如主机和端口,健康指标URL,首页等)Eureka通过一个服务从各个实例接收心跳信息。如果心跳接收失败超过配置的时间,实例将会正常从注册里面移除。

  Eureka服务流程图:

Eureka的流程说明:

1、服务提供者会向Eureka Server做Register(服务注册)、Renew(服务续约)、Cancel(服务下线)等操作。

2、Eureka Server之间会做注册服务的Replicate(复制),从而保证状态一致。

3、服务消费者会向Eureka Server获取Registry(注册服务列表),并Make Remote Call(远程调用)消费服务

二、Eureka服务实现

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

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

2.在启动类中加入@EnableEurekaServer注解

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

  只需要使用@EnableEurekaServer注解就可以让应用变为Eureka服务器,这是因为spring boot封装了Eureka Server,让你可以嵌入到应用中直接使用。至于真正的EurekaServer是Netflix公司的开源项目,也是可以单独下载使用的。

3.添加Eureka相关配置,application.yml中配置如下(也可用properties文件)

server:
port: 8761 eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka

4.启动项目,访问http://127.0.0.1:8761/ 可以看到如下图说明Eureka服务搭建成功。

三、Eureka注册中心加入权限

1.在pom.xml引入安全权限相关依赖

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

2.修改application.yml配置文件,添加security相关配置:

security:
basic:
enabled: true
user:
name: user
password: pass
server:
port: 8761 eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://user:pass@localhost:8761/eureka

  配置完成后重新启动服务,继续访问http://127.0.0.1:8761/发现需要输入用户名密码才能进入。

四、将微服务注册到Eureka Service

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

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

2.在main方法所在的Application类中,添加@EnableEurekaClient注解,此注解只针对Eureka可用;也可以使用@EnableDiscoveryClient注解

@SpringBootApplication
@EnableEurekaClient
public class MovieApplication { public static void main(String[] args) {
SpringApplication.run(MovieApplication.class, args);
}
}

3.修改微服务配置文件,添加Eureka相关配置(这里要注意Eureka注册中心是否加入了权限,我这里是加入了权限)

eureka:
client:
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://user:pass@localhost:8761/eureka

完成以上相关配置后可以启动项目,访问http://127.0.0.1:8761/,发现已经有服务注册到Eureka了。

SpringCloud Eureka 服务注册与服务发现的更多相关文章

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

    上一篇,我们介绍了服务注册中心,光有服务注册中心没有用,我们得发服务注册上去,得从它那边获取服务.下面我们注册一个服务到服务注册中心上去. 我们创建一个 hello-service 的 spring ...

  2. SpringCloud之eureka服务注册和服务发现

    服务注册中心 :eureka-server 作用:服务注册中心提供服务注册功能 服务提供方:eureka-client 作用:注册服务到服务注册中心 服务注册中心 :eureka-server 创建 ...

  3. SpringCloud+Consul 服务注册与服务发现

    SpringCloud+Consul 服务注册与服务发现 1. 服务注册: 在Spring.factories有一段: # Discovery Client Configuration org.spr ...

  4. SpringCloud实战之初级入门(二)— 服务注册与服务调用

    目录 1.环境介绍 2.服务提供 2.1 创建工程 2.2 修改配置文件 2.3 修改启动文件 2.5 亲测注意事项 3.服务调用 3.1 创建工程 3.2 修改配置文件 3.3 修改启动文件 3.4 ...

  5. 【转】用 Consul 来做服务注册与服务发现

    原文:https://segmentfault.com/a/1190000018731395?utm_source=tag-newest ------------------------------- ...

  6. consul服务注册与服务发现的巨坑

    最近使用consul作为项目的服务注册与服务发现的基础功能.在塔建集群使用中遇到一些坑,下面一个个的记录下来. consul集群多node consul集群的node也就是我们所说的consul实例. ...

  7. Go微服务框架go-kratos实战04:kratos中服务注册和服务发现的使用

    一.简介 关于服务注册和服务发现介绍,我前面的文章有介绍过 - 服务注册和发现的文章. 作为服务中心的软件有很多,比如 etcd,consul,nacos,zookeeper 等都可以作为服务中心. ...

  8. dubbo2.7.X版本带来的服务注册和服务调用方式改变

    参考地址:https://www.cnblogs.com/alisystemsoftware/p/13064620.html 注册中心数据结构格式改变(service:接口服务,application ...

  9. SpringCloud服务注册与服务发现之Eureka

    Eureka是SpringCloud Netflix的子模块之一,用于云端的服务发现,服务定位,实现云端中间层服务发现和故障转移.服务注册与发现对于微服务系统来说十分的重要,有了服务注册与发现,就省去 ...

  10. SpringCloud之Eureka 服务注册和服务发现基础篇2

    上篇文章讲解了SpringCloud组件和概念介绍,接下来讲解一下SpringCloud组件相关组件使用.原理和每个组件的作用的,它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix ...

随机推荐

  1. Ajax三级联动操作的js代码

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. 解决weblogic错误:java.sql.SQLRecoverableException: IO Error: Broken pipe

    首先说一下系统基础架构: 服务器:weblogic11g集群 数据库:oracle数据库Rac 出错信息: 1.java.sql.SQLRecoverableException: Closed Con ...

  3. 【[HNOI2004]L语言】

    \(Trie\)树+\(DP\) 我们只需要做一个存在性dp就好了 对于每一个字符串,我们设\(f[i]\)表示从\(1\)到\(i\)位是否能被完全匹配 首先\(f[0]=1\),之后我们对于每一个 ...

  4. windows8安装msi软件提示2503错误的解决办法

    windows8以后的版本安装msi软件(比如nodejs.msi.Git.msi.python.msi.T ortoiseSVN.msi)的时候老师出现2503.2502的错误,究其原因还是系统权限 ...

  5. 启用 DHCP

    #开启DHCP协议 Get-NetIPInterface -Dhcp Disabled|Set-NetIPInterface -Dhcp Enabled #开启本机上所有博通网卡的DHCP Get-W ...

  6. StringJoiner

    示例一 public class StringJoinerTest1 { public static void main(String[] args) { StringJoiner joiner = ...

  7. C语言scanf与get char,gets的区别

    C语言scanf与get char,gets的区别 1.scanf() scanf是C语言的格式输入函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并 ...

  8. 【题解】洛谷P1065 [NOIP2006TG] 作业调度方案(模拟+阅读理解)

    次元传送门:洛谷P1065 思路 简单讲一下用到的数组含义 work 第i个工件已经做了几道工序 num 第i个工序的安排顺序 finnish 第i个工件每道工序的结束时间 need 第i个工件第j道 ...

  9. Objective-C——消息、Category和Protocol

    转自:http://www.cnblogs.com/chijianqiang/archive/2012/06/22/objc-category-protocol.html 面向对象永远是个可以吐槽的话 ...

  10. 手写redis客户端

    一.RESP通信协议 Redis Serialization Protocol (Redis序列化协议). 特点:容易实现.解析快.可读性强 以\r\n分割数据. 二.撸代码 package com. ...