SpringCloud系列之服务注册发现(Eureka)应用篇
@
前言
大家好,距离上周发布的配置中心基础使用已过去差不多一周啦,趁着周末继续完善后续SpringCloud组件的集成,本次代码基于配置中心代码的基础上进行集成。
SpringCloud Config 文章
SpringCloud Config demo01
项目版本
spring-boot-version:2.2.5.RELEASE
spring-cloud.version:Hoxton.SR3
Eureka服务端
首先构建Eureka服务端项目,最近阿里云开放了自己的项目快速构建平台,那这次就使用下吧。Alibaba initializr 操作基本上和Spirng官方提供的一模一样。搜索并选择eureka server即可。
pom主要信息
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
application.properties
# 服务应用名
spring.application.name=eureka-server
# 服务端口
server.port=9003
# 禁止将本服务注册至eureka
eureka.client.register-with-eureka=false
# 屏蔽注册信息
eureka.client.fetch-registry=false
# eureka服务地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/
EurekaServerApplication.java
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
@EnableEurekaServer 申明注解此应用为eureka服务端
项目启动成功后访问 http://localhost:9003/,即可看到Eureka服务后台

Eureka客户端
客户端代码基于上篇SpringCloud配置中心(Config)使用说明,文章地址及代码见本文开头,这边主要说明一些调整的地方。
先调整spring-cloud-config-server项目,我们需要将其注册至Eureka服务上,调整如下
1.pom文件
增加eureka客户端相关依赖
<!--eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.application.properties
配置文件增加以下配置项
# eureka服务端地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/
3.ConfigServerApplication.java
增加@EnableDiscoveryClient注解标签
@EnableConfigServer
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigServerApplication
调整完后,我们再启动Config服务端,这时可以在Eureka服务后台看到config-server已经注册上了,如下图。

接着调整spring-cloud-config-client项目
1.pom文件
增加eureka客户端相关依赖
<!--eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.bootstrap.properties
将原先直接通过Config服务端地址调整为基于服务发现的配置,调整如下
# 配置服务端请求地址
#spring.cloud.config.uri=http://localhost:9001/
# 开启服务发现
spring.cloud.config.discovery.enabled=true
# 配置Config服务应用名称
spring.cloud.config.discovery.service-id=config-server
3.ConfigClientApplication.java
增加@EnableDiscoveryClient注解标签
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication
启动Config客户端后,即可在Eureka服务后台看到服务已注册进来。再访问下Config 客户端暴露的接口,http://localhost:9002/getEnv,成功获取到配置信息。

服务访问
前面是基于SprongCloud Config配置中心集成的Eureka,接下来将介绍下如何使用Eureka中已注册的服务。
这边先构建一个System模块,用于访问Config client提供的接口服务。
部分pom信息
<!--eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--服务访问-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
application.properties
# 服务应用名称
spring.application.name=system-server
# 服务端口
server.port=9004
# eureka服务端地址
eureka.client.serviceUrl.defaultZone=http://localhost:9003/eureka/
SystemServerApplication.java
@EnableFeignClients开启Feign的支持
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class SystemServerApplication {
public static void main(String[] args) {
SpringApplication.run(SystemServerApplication.class, args);
}
}
ConfigService.java
@FeignClient 申明Feign客户端信息,其中name对应应用服务提供方的应用服务名称
@GetMapping(path = "/getEnv") 对应应用服务提供方暴露的接口地址
@FeignClient(name = "config-client")
public interface ConfigService {
@GetMapping(path = "/getEnv")
String getEnvName();
}
SystemController.java
@RestController
@RequestMapping(value = "/web/system")
public class SystemController {
@Autowired
ConfigService configService;
@RequestMapping(value = "/getEnvName", method = RequestMethod.GET)
public String getEnvName() {
return configService.getEnvName();
}
}
启动系统服务模块后,访问 http://localhost:9004/web/system/getEnvName 即可访问到信息,如下图

访问返回结果和访问 http://localhost:9002/getEnv 接口返回是一样的,仅仅只是通过Feign访问了下 http://localhost:9002/getEnv,内部是基于通过注册在Eureka上的config-client服务调用得到的结果,内部服务地址 http://config-client/getEnv
项目代码结构如下


SpringCloud系列之服务注册发现(Eureka)应用篇的更多相关文章
- 服务注册发现Eureka之二:高可用服务注册中心
前言 在Spring Cloud系列文章的开始,我们就介绍了服务注册与发现,其中,主要演示了如何构建和启动服务注册中心Eureka Server,以及如何将服务注册到Eureka Server中,但是 ...
- 服务注册发现Eureka之三:Spring Cloud Ribbon实现客户端负载均衡(客户端负载均衡Ribbon之三:使用Ribbon实现客户端的均衡负载)
在使用RestTemplate来消费spring boot的Restful服务示例中,我们提到,调用spring boot服务的时候,需要将服务的URL写死或者是写在配置文件中,但这两种方式,无论哪一 ...
- 服务注册发现Eureka
一 Eureka相关概念 1 Peer 2 Zone 3 Region 地理区域 3 CAP理论 4 在线扩容 5 二 注册发现 Eureka 1 搭建Server服务端 ...
- 服务注册发现Eureka之一:Spring Cloud Eureka的服务注册与发现
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...
- SpringCloud系列之集成分布式事务Seata应用篇
目录 前言 项目版本 项目说明 Seata服务端部署 Seata客户端集成 cloud-web module-order module-cart module-goods module-wallet ...
- SpringCloud系列之网关(Gateway)应用篇
@ 目录 前言 项目版本 网关访问 鉴权配置 限流配置 前言 由于项目采用了微服务架构,业务功能都在相应各自的模块中,每个业务模块都是以独立的项目运行着,对外提供各自的服务接口,如没有类似网关之类组件 ...
- SpringCloud Netflix Eureka(服务注册/发现)
⒈Eureka是什么? Eureka是Netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务以实现云端中间层服务发现和故障转移,服务注册与发现对于微服务架构来 ...
- SpringCloud系列三:将微服务注册到Eureka Server上
1. 回顾 通过上篇博客的讲解,我们知道硬编码提供者地址的方式有不少问题.要想解决这些问题,服务消费者需要一个强大的服务发现机制,服务消费者使用这种机制获取服务提供者的网络信息.不仅如此,即使服务提供 ...
- SpringCloud服务的注册发现--------Eureka
1,什么叫做服务的注册与发现 服务的注册与发现基于注册中心,注册中心本身是一个服务,也相当于一个载体,其他服务的注册需要注册到这个注册中心上. 注册:当服务器启动的时候,会将自己的服务器信息,通过别名 ...
随机推荐
- loadrunner通过web的post请求方法测接口 2
模拟APP发送请求给Cloud, 一般都是用户登录后.cloud会返回登录成功的消息并且返回一个cookie给app, app下次要做一些例如设置名称之类的工作,在请求消息里面会携带返回的cookie ...
- WTF is The BlockChain?
最近区块链大热,走到哪儿都有人在讨论区块链和比特币,甚至于一些对密码学完全没有概念的人都开始大肆吹捧,不免让人嗤之以鼻.相信很多技术和非技术的朋友都希望能够更深层次地去了解它是如何工作的.本文将用不到 ...
- Android中的路径记录
Android中的路径记录 | RobinBlog 导航 导航 博客 分类 标签 友链 关于 搜索 Environment.getDataDirectory().getPath()=/dataEnvi ...
- java design pattern - adapter pattern
场景 适配器模式 总结 参考资料 场景 在编程中我们经常会遇到驴头不对马嘴的情况,比如以前是继承A的接口的对象,现在外部调用的时候需要该对象已B接口的形式来调用 ,这个时候我们可以让对象同时集成A和B ...
- DIY电压基准测万用表
| 分类 日志 | 手里有三个常用的手持表,UT61E四位半,优利德明星产品:福禄克F117C,换挡快,单手操作还带LoZ:UT210E小钳表能够通过修改EEPROM更改电表配置,已经刷了6000字 ...
- yii框架通过控制台命令创建定时任务
假设Yii项目路径为 /home/apps 1. 创建文件 /home/apps/web/protected/commands/console.php $yii = '/home/apps/frame ...
- 改了改之前那个很糙的XXX
将就着用X度去爬吧 <?php echo "***************************************\r\n"; echo "* SubDom ...
- 01.JS块级作用域与let
1.块级作用域 什么是: 在一个代码块(括在一对花括号中的一组语句)中定义的所需变量(与let配合使用)并在代码块的外部是不可见的. 为什么: 在ES6之前,函 ...
- 关于地址栏url的一些小结
1.获取整个地址栏地址 //获取整个地址栏地址 var href = window.location.href; console.log(href); 以上代码就是获取整个url地址 2.获取url协 ...
- 小程序自定义switch组件
如上图,小程序api中的switch组件只能自定义颜色,不能自定义宽高,所以就开始了自己写switch组件. 自定义组件样式 switch组件样式大致如图,样式思路:未选中时为一个长方形有圆角按钮,和 ...