springcloud微服务系列之服务注册与发现组件Eureka
一、Eurake的简介
二、使用Eureka进行服务的注册消费
1、创建一个服务注册中心
2、创建服务的提供者
3、创建服务的消费者
总结
一、Eurake的简介
今天我们来介绍下springcloud的核心组件Eureka,Eurake是负责微服务架构中服务治理的功能,负责各个服务实例的注册与发现。
Eureka包含了服务器端和客户端组件。服务器端,也被称作是服务注册中心,用于提供服务的注册与发现。 客户端组件包含服务消费者与服务生产者。在应用程序运行时,服务生产者向注册中心注册自己的服务实例,当消费者需要调用这个服务时,会先从注册中心去查找对应的生产者,然后就可以实现对该服务的消费了。
springcloud微服务系列教程(二)服务注册与发现组件Eureka
上图是一个较为简单的服务注册消费过程,也是Eureka组件的一个基本运转流程。下面我们来搭建一个Eureka实例。
二、使用Eureka进行服务的注册消费
1、创建一个服务注册中心
首先,打开intellij idea,创建一个springboot项目的主Maven工程,名称是eureka,勾选上需要用到的依赖,提醒一下,笔者这里选择的springboot版本是2.0.3,建议读者们也选择同样的版本。
springcloud微服务系列教程(二)服务注册与发现组件Eureka
点击下一步后,填写上项目名并点击完成即可。
springcloud微服务系列教程(二)服务注册与发现组件Eureka
这样,主工程就创建成功了,创建完主工程后,我们需要创建两个子工程,一个是服务注册中心eureka-server,另一个作为客户端,我们命名为eureka-client.
下面,我们先创建server的例子,右键主工程,选择New -> model -> spring initialir 创建一个新module,
springcloud微服务系列教程(二)服务注册与发现组件Eureka
点击下一步,填完信息后跳转到选择依赖的界面,选择Eureka Server依赖
springcloud微服务系列教程(二)服务注册与发现组件Eureka
创建后的pom文件如下:
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yeya</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<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>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
要想开启服务注册中心,我们需要在springboot项目中的main入口文件添加@EnableEurekaServer注解
springcloud微服务系列教程(二)服务注册与发现组件Eureka
默认情况下,Eureka server会自己向自己注册,我们需要在配置文件application.yml添加一些配置,代码如下:
#端口
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
设置服务的端口为1111,同时,通过设置eureka.client.register-with-eureka和eureka.client.fetch-registry都为false即可关闭服务向自己注册。
完成这一切后,我们右键main方法启动项目,然后再浏览器中访问地址
http://localhost:1111,结果如下图:
springcloud微服务系列教程(二)服务注册与发现组件Eureka
这是eureka注册中心的界面图,我们可以看到很多信息,比如“System Status”可以看到我们的环境以及系统时间等信息,以及“General Info”里有很多关于注册中心的常规信息,包括了cpu,可用空间等,这些知识点比较多,而且不影响我们的项目效果,所以笔者今天不打算讨论太多,看改天有空再写一篇博文来为大家专门介绍,我们要关注的是“Instances currently registered with Eureka” 这一栏,栏中显示 No instances available ,很明显,因为我们没有注册服务,也就没有可用的服务,所以,我们要再创建客户端项目eureka-client.
2、创建服务的提供者
eureka-client的创建过程同server类似,在选择依赖时换成Eureka Discovery,创建后的pom文件如下:
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yeya</groupId>
<artifactId>eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<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>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
同样,我们需要在main加上注解@EnableDiscoveryClient
springcloud微服务系列教程(二)服务注册与发现组件Eureka
然后,在eureka-client的配置文件中加入以下配置:
设置服务名
spring:
application:
name: eureka-client
设置注册中心地址
eureka:
client:
service-url:
defaultZone: http://localhost:1111/eureka
首先,指明自己的服务名为eureka-client,同时,指明注册中心的地址,这样,注册中心才能找到这个服务。
这里要说明一下,idea的配置文件是可以自动提示的,但是写注册中心地址时只能提示到service-url,之后的defaultZone是需要读者自己编写的,有人会怀疑是不是我写错了,其实不是,我们可以按ctrl点击defaultZone跳转到它的bean类查看源码。
springcloud微服务系列教程(二)服务注册与发现组件Eureka
可以看到,这里的默认标识的确是”defaultZone”,所以配置文件这么写是没有问题的,大家如果对配置的解析过程有兴趣的话,可以自己一步步跟着源码查看。
配置完之后,启动eureka-client项目,然后返回eureka-server的访问界面,可以看到我们的服务注册成功了!
springcloud微服务系列教程(二)服务注册与发现组件Eureka
这样,我们的服务注册就完成了,接下来我们来测试一下服务消费的过程。
3、创建服务的消费者
接下来,我们创建一个服务消费者的工程,命名为eureka-consumer,创建过程同eureka-client一样,创建成功后在main入口文件加入注解@EnableDiscoveryClient,然后修改一下配置文件application.yml:
设置服务名
spring:
application:
name: eureka-consumer
设置注册中心地址
eureka:
client:
service-url:
defaultZone: http://localhost:1111/eureka
server:
port: 1113
为了能测试服务消费的效果,我们先在eureka-client中的主类中创建一个接口dc,
@EnableDiscoveryClient
@SpringBootApplication
@RestController
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
@GetMapping("/hello")
public String dc() {
return "hello";
}
}
在eureka-consumer的应用主类中,初始化 RestTemplate ,用来真正发起REST请求。
springcloud微服务系列教程(二)服务注册与发现组件Eureka
在这里,我们稍微介绍一下RestTemplate ,RestTemplate是用来访问restful API的网络框架,其主要方法与rest的http协议相关,例如GET 、POST 、PUT 、DELETE,这些方法对应这个类中的getForObject()、getForEntity()、postForObject()、put()和delete()等,本文里我们用getForObject()来请求API并返回对应的信息。
新建一个controller文件,添加一个接口(”/consumer”),用来消费eureka-client提供的接口 :
@RestController
public class ConsumeController {
@Autowired
private LoadBalancerClient client;
@Autowired
RestTemplate restTemplate;
@GetMapping("/consumer")
public String consumer() {
ServiceInstance serviceInstance = client.choose("eureka-client");
String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/hello";
String dc = restTemplate.getForObject(url,String.class);
return dc;
}
}
先通过 @Autowired 注入 LoadBalancerClient 一个实例client,client.choose()的参数是需要调用到的服务的名称,传入之后即可创建一个服务实例,通过实例的方法调用就可以访问到eureka-client的”hello”接口并返回字符串信息。分别启动eureka-server、eureke-client、eureka-consumer三个工程,在浏览器访问http://localhost:1111/,从下图中可以看到两个服务都已经注册成功
springcloud微服务系列教程(二)服务注册与发现组件Eureka
接着,打开新页面访问http://localhost:1113/consumer,可以看到浏览器成功输出”hello”字符串。
springcloud微服务系列教程(二)服务注册与发现组件Eureka
这表明,我们成功通过eureka-consumer提供的接口来消费了eureka-client这个微服务了。
总结
本文给大家简单介绍了服务注册发现组件eureka的实例,同时也实现了服务之间的调用,虽然例子简单,但也算开了个好头,接下来的系列教程会继续为大家讲解其他组件的用法,欢迎读者们能跟我一起学习,如若文章有错误或不足之处,读者们可以在评论区指出,我会积极给于回复!
转载于:https://blog.51cto.com/13792737/2159217
springcloud微服务系列之服务注册与发现组件Eureka相关推荐
- Spring Boot(2.1.2.RELEASE) + Spring Cloud (Finchley.RELEASE)搭建服务注册和发现组件Eureka
前言:由于版本原因,部分关于Spring Cloud的书中使用的是Spring Boot 1.x 版本,很多配置或名称在新版本中已经发生了改变.此篇文章记录的是使用较新的Spring Boot 2.x ...
- eureka多了一个莫名其妙的服务_SpringCloud 服务注册与发现组件 Eureka
一.SpringCloud介绍 微服务,为了更好的创建项目组织结构.更高效的项目的迭代效果.更优良的架构设计,就需要使用微服务的架构思想,来对项目进行搭建或者重构. 企业碰到的第一个问题是服务如何进行 ...
- 服务注册与发现组件 Eureka 应用实战
本文摘录于笔者出版的书籍 <Spring Cloud 微服务架构进阶>一书 什么是服务注册与发现 在传统的单体应用中,组件之间的调用通过有规范约束的接口进行,实现不同模块间良好协作.在微服 ...
- 微服务系列:服务注册与发现的实现原理、及实现优劣势比较
服务注册与发现的来源 首先,服务注册与发现是来自于微服务架构的产物. 在传统的服务架构中,服务的规模处于运维人员的可控范围内.当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定.而在微服 ...
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
最新Finchley版本请访问: https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/ 或者 http://blog.csd ...
- SpringCloud微框架系列整体模块梳理
转载自:https://www.cnblogs.com/softidea/p/6498125.html SpringCloud微框架系列整体模块梳理 以下为Spring Cloud的核心功能: 分布式 ...
- Chapter 1 快速搭建-服务的注册与发现(Eureka)
Chapter 1 快速搭建-服务的注册与发现(Eureka) 一.Spring Cloud简介 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代 ...
- java B2B2C springmvc mybatis电子商务平台源码-服务的注册与发现(Eureka)
1.介绍 对于微服务的治理而言,其核心就是服务的注册和发现.在SpringCloud 中提供了多种服务注册与发现组件:Eureka,Consul,Zookeeper.官方推荐使用Eureka. 需要J ...
- 玩转Windows服务系列——Windows服务小技巧
伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服务程序,编译后为Win32的窗口程序.我们在程序启动或运行过程 ...
最新文章
- 区块链技术没那么复杂,别被大佬们忽悠晕了
- 微信小程序拼团后端接口设计规范
- 基于FPGA的LED点阵系统开发
- 《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点
- php邮箱验证laravel接口,Email认证 | Laravel 中文文档 - 码农教程
- leetcode 171. Excel表列序号
- Vue 用户管理后台思维导图
- 如何处理JavaScript中的事件处理(示例和全部)
- Lambda 表达式详解~简化匿名内部类
- Ubuntu 下 VirtualBox 调整vmdk虚拟硬盘分区
- Java动态代理一览笔录
- matlab与vrep联合仿真,基于MATLAB与V-REP的机器人加工轨迹生成与运动仿真.PDF
- openresty nginx php,diy 你的nginx-OpenResty
- 为什么我不使用 Web 组件?
- 哈佛有只”精灵球“,唯有它能温柔收放深海的软体精灵 |Science Robotics
- 剖析Disruptor:为什么会这么快?(一)Ringbuffer的特别之处
- Android开发之十二:Camera成像原理介绍
- matlab:matlab神经网络工具的使用
- 北京妙计旅行 后台开发实习一面二面
- Hiredis快速入门
热门文章
- Windows下MYSQL数据库BOOT密码的修改方法
- 可替代的C语言开发环境
- MinGW GCC 7.1.0 2017年6月份出炉啦
- 无缩进的XML字符串的处理
- 多少并发量算高并发_Linux服务端最大并发数是多少?
- Android RadioButton 语言切换问题
- Java学习系列(十一)Java面向对象之I/O流(下)
- androidpn的学习研究(六)Androidpn-server的Mina编码和解码解析过程
- Android sqlite数据库操作通用框架AHibernate(一)-CRUD示例和使用步骤
- docker安装执行问题