SpringCloud(四)Eureka服务注册与发现

1 Eureka Server

提供服务注册和发现

2 Service Provider

服务提供方

将自身服务注册到Eureka,从而使服务消费方能够找到

3 Service Consumer

服务消费方

从Eureka获取注册服务列表,从而能够消费服务

介绍

我们的服务发现一般分为两种模式一种为客户端发现模式(我们主要讲这个),一种为服务端发现模式

服务实例的网络位置都是动态分配的,而且因为扩展,失效和升级等需求,服务实例会常常发生动态改变,因此客户端一种更加复杂的服务发现机制

当使用客户端发现模式时,客户端负责决定相应服务实例之间的网络位置,并且对请求实现负载均衡,客户端从一个服务注册服务中查询,其中是所有可用服务实例的库,客户端使用负载均衡算法对从多个服务实例中选择出一个,然后发出请求

使用Eureka的步骤

1、搭建eureka server

1.1 创建工程

 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <parent>         <artifactId>spring_cloud_demo</artifactId>         <groupId>cn.qyx</groupId>         <version>1.0-SNAPSHOT</version>     </parent>     <modelVersion>4.0.0</modelVersion>     <artifactId>eureka_server</artifactId>     <dependencies>         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>         </dependency>     </dependencies> ? ? ? </project>

1.2 导入相应的eureka server的坐标

1.3 配置application.yml

 server:   port: 9000 #配置eureka server eureka:   instance:     hostname: localhost #主机地址名称   client:     register-with-eureka: false #是否将自己注册到注册中心     fetch-registry: false #是否要从eureka中获取注册的信息     #配置暴露给EurekaClient的请求地址     service-url:       defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

1.4 配置启动类

 package com.eureka; ? import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; ? @SpringBootApplication @EnableEurekaServer //激活EurekaServer public class EurekaApplication {     public static void main(String[] args) {         SpringApplication.run(EurekaApplication.class,args);     } } ?

2、将服务提供者注册到eurekaServer上

2.1 引入EurekaClient的坐标

      <!--引入EurekaClient-->         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>         </dependency>

2.2 修改application.yml 添加EurekaServer的配置信息

 server:   port: 9001 spring:   application:     name: service-product #服务名称   datasource:     driver-class-name: com.mysql.jdbc.Driver     url: jdbc:mysql://localhost:3306/shops?useUnicode=true&characterEncoding=utf8     username: root     password: 15192734369qwe   jpa:     database: mysql     show-sql: true     open-in-view: true #配置Eureka eureka:   client:     service-url:       defaultZone: http://localhost:9000/eureka/   instance:     prefer-ip-address: true #使用IP地址进行注册 ?

2.3 修改启动类,添加服务发现的支持

 package com.qyx; ? import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; ? @SpringBootApplication @EntityScan("com.qyx.entity") //激活EurekaClient @EnableEurekaClient //@EnableDiscoveryClient 为netflix提供的注解,与@EnableEurekaClient效果一样,新版本不写也行 public class ProductApplication {     public static void main(String[] args) {         SpringApplication.run(ProductApplication.class);     } } ?

3、服务消费者通过注册中心获取服务列表,并调用

Eureka中的元数据:例如服务的主机名、IP等信息,可以通过EurekaServer获取,用于服务之间的调用

3.1 引入EurekaClient的坐标

    <!--引入EurekaClient-->         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>         </dependency>

3.2 配置application.yml

 server:   port: 9002 spring:   application:     name: order-product #服务名称   datasource:     driver-class-name: com.mysql.jdbc.Driver     url: jdbc:mysql://localhost:3306/shops?useUnicode=true&characterEncoding=utf8     username: root     password: 15192734369qwe   jpa:     database: mysql     show-sql: true     open-in-view: true #配置Eureka eureka:   client:     service-url:       defaultZone: http://localhost:9000/eureka/   instance:     prefer-ip-address: true #使用IP地址进行注册 ?

3.3 获取服务的元数据

 package com.qqq.controller; ? import com.qqq.entity.Product; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; ? import java.util.List; ? @RestController @RequestMapping("/order") public class OrderController {     //注入RestTemplate对象     @Autowired     private RestTemplate restTemplate;     /**      * 注入DiscoveryClient      * SpringCloud提供的获取元数据的工具类      * 调用方法获取服务的元数据信息      */     @Autowired     private DiscoveryClient discoveryClient;     /**      * 参数:商品ID      * 通过订单系统,调用商品服务根据id查询商品信息      * 1 需要配置一个商品对象      * 2 需要调用商品服务      * 使用java中的urlConnection完成,或使用httpClient,okHttp      * RestTemplate      */     @RequestMapping(value = "/buy/{id}",method = RequestMethod.GET)     public Product findById(@PathVariable("id") Long id)     {         //调用DiscoveryClient的getInstances方法根据服务名获取元数据         List<ServiceInstance> instances = discoveryClient.getInstances("SERVICE-PRODUCT");         //获取唯一的元数据         ServiceInstance instance = instances.get(0);         Product product=null;         //如何调用商品服务         //根据元数据和端口号拼接请求的url         product=restTemplate.getForObject("http://"+instance.getHost()+":"+instance.getPort()+"/product/"+id,Product.class);         return product;     } ? } ?

原文地址:https://www.cnblogs.com/qyx66/p/12237187.html

时间: 2024-10-07 15:53:10

SpringCloud(四)Eureka服务注册与发现的相关文章

SpringCloud(3)---Eureka服务注册与发现

Eureka服务注册与发现 一.Eureka概述 1.Eureka特点 (1) Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移. (2) Eureka 主管服务注册与发现,在微服务中,以后了这两者,只需要使用服务的标识符(==就是那个在每个服务的yml文件中取得服务名称==), 就可以访问到服务,不需要修改服务调用的配置文件. (3) Eureka遵循AP原则(高可用,分区容错性),因为使用了自我保护机制所以保证了高可用. 2.Eureka两大组件 两大组

SpringCloud:Eureka服务注册与发现

1.Eureka简介 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper). Eureka 采用了 C-S 的设计架构.Eureka Server 作为服务注册功能的服务器,它是服务注册中心. 而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接. 这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行. SpringCloud 的一些其

SpringCloud学习--Eureka 服务注册与发现

目录 一:构建项目 二:服务注册与发现 为什么选择Eureka,请看上一篇博客 Eureka -- 浅谈Eureka 项目构建 IDEA 选择 New Project 选择 Spring Initializr 填入Group组.Artifice项目名,勾选Type为 Gradle Config(这里是基于gradle实现的) 选择组件:根据自己需要进行选择,这里需要Eureka来做为注册中心,所以我先勾线了Eureka的两个服务依赖 创建完成后 在 bulid.gradle中 使用subproj

【四】Eureka服务注册与发现

1.是什么 Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于 REST 服务,用于定位服劳,以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了.功能类似于dubbo的注册中心,比如 Zookeeper. Netflix在设计Eureka是遵循的就是AP原则 分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳: ● 一致

SpringCloud学习系列-Eureka服务注册与发现(2)

构建 microservicecloud-eureka-7001 eureka服务注册中心Module 1.新建microservicecloud-eureka-7001 2.pom <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mav

Spring Cloud 入门教程 - Eureka服务注册与发现

简介 在微服务中,服务注册与发现对管理各个微服务子系统起着关键作用.随着系统水平扩展的越来越多,系统拆分为微服务的数量也会相应增加,那么管理和获取这些微服务的URL就会变得十分棘手,如果我们每新加一个微服务,就要在其它用到此微服务的地方手动加上它的URL地址或者其他通信协议的地址,这样会经常出错,而且工作量巨大,一旦某个微服务的地址发生了变化,就要手动修改所有引用它的微服务的配置文件.所以spring-cloud eureka server就是为了解决这样的问题而出现,经过简单的配置,即可自动注

Eureka 服务注册与发现

1.简介EureKa在Spring Cloud全家桶中担任着服务的注册与发现的落地实现.Netflix在设计EureKa时遵循着AP原则,它基于R EST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,功能类似于Dubbo的注册中心Zookeeper. 2.实现原理 EureKa采用C-S的设计架构,即包括了Eureka Server(服务端),EureKa client(客户端). 1.EureKa Server 提供服务注册,各个节点启动后,在EureKa server中进行注册:

SpringCloud学习系列-Eureka服务注册与发现(3)

修改microservicecloud-provider-dept-8001 1.修改pom 增加内容 <!-- 将微服务provider侧注册进eureka --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <

Eureka服务注册与发现

注册中心的建立 1.增加pom文件: 2.修改yml配置文件: 3.添加@EnableEurekaServer注解: 4.启动进入服务注册页面. 微服务注册到注册中心 1.添加yml配置,寻找注册中心地址 2.添加@EnableEurekaClient注解在启动类: 3.启动服务注册页面,新增了一个注册的微服务. 配置修改: <wiz_code_mirror> Eureka: instance: instance-id: microservicecloud-8081 //主机映射名称的修改 p