Eureka 基本教程
Eureka 基本教程
RestTemplate 使用
学习Euraka的同学直接滑到最下面, 这里先为初学者介绍 RestTemplate.
平时我们使用 Http 工具发送请求通常都会有两个步骤, 先调用请求拿到响应信息, 再将响应信息通过 JSON 工具解析并转换为实体类. 总的来说, RestTemplate 是 spring 提供的一个用来模拟浏览器发送请求和接收响应的一个类, 它能基于 Http 协议实现远程调用. 但是需要注意的是, 它发送的是同步请求.
父工程依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
</parent>
右键父工程创建新 maven 项目, 取名为 eurekademo.
项目引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
EurekaDemoApplicationTest.java:
@SpringBootTest
public class EurekaDemoApplicationTest {
@Test
public void testGet() {
RestTemplate restTemplate = new RestTemplate();
//模拟浏览器的请求头, 很多国内免费的 api 都有这种限制, 一般我们会把以下配置请求头的代码写在一个拦截器中, 通过 restTemplate.setClientHttpRequestInitializers() 配置进去
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
//节假日查询免费 api
ResponseEntity<Holiday> forObject = restTemplate.exchange("http://timor.tech/api/holiday/info/2022-01-01", HttpMethod.GET, entity, Holiday.class);
System.out.println(forObject.getBody());
/*
//一般企业自己封装的接口不会对外开放, 所以不需要向上面那么麻烦, 下面的代码只是打个比方, 实际执行会报错 == start
Holiday h1 = restTemplate.getForObject("http://timor.tech/api/holiday/info/2022-01-01", Holiday.class);
Holiday h2 = restTemplate.postForObject("http://timor.tech/api/holiday/info/2022-01-01", null, Holiday.class);
// == end
*/
}
}
Eureka 使用
注册中心
作用: 管理项目集群而暴露的接口服务, 提供服务注册与发现的功能.
服务注册: 提供者 (暴露自己的服务给外部调用的角色) 向 Eureka 服务器注册自己.
服务发现: 消费者 (去调用暴露出来的服务的角色) 从 Eureka 服务器获取提供者的地址列表.
其中 Eureka 服务器也可以集群, 和其他 Eureka 服务器相互共享自己的资源.
接下来就开始搭建一个 Eureka 服务器.
父工程 pom 添加配置:
<properties>
<spring.cloud.version>2021.0.1</spring.cloud.version>
</properties>
<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>
eurekademo 项目中添加依赖:
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
application.yml:
server:
port: 8080
spring:
application:
name: eureka-server
# eureka服务器配置, 每个属性赋什么类型的值都可以按住 ctrl 点击属性名进去找到 set 操作
eureka:
client:
service-url:
defaultZone: http://localhost:8080/eureka #默认服务注册中心地址, 多个使用 ',' 隔开
register-with-eureka: false #是否注册, 默认值 true, 由于这个项目作为 eureka 的注册中心使用, 注册自己会报错, 配置其他注册中心地址不会报错
fetch-registry: false #是否检索服务, 默认值 true, 基本上这个项目不会去处理业务功能, 所以也不需要检索其他服务, 集群注册中心的话就赋 true
server:
eviction-interval-timer-in-ms: 10000 #注册中心清理无效节点的时间间隔, 默认为 60000L , 单位毫秒 ms
创建启动类 EurekaDemoApplication , 注意组织名 groupId + .eurekademo 为启动类的父包, 我的 groupId 为 com.kent , 所以父包为 com.kent.eurekademo :
/**
* @Title: EurekaDemoApplication
* @Description: eureka 服务器注册中心
* @author: kent
* @date: 2022/3/16 14:53
* @Version: 1.0
*/
@SpringBootApplication
@EnableEurekaServer //boot 的特点就是需要 Enable
public class EurekaDemoApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaDemoApplication.class, args);
}
}
ok , 直接 run 起来! 启动成功后访问 http://127.0.0.1:8080/ 就可以看到 eureka 展示的一些基本信息. 英文看不懂的话, 最好配备一个网易有道词典.

提供者
右键父工程创建新 maven 项目 consumerdemo
项目引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
application.yml 配置:
server:
port: 15050
spring:
application:
name: consumerdemo
# 使用 eureka 暴露自身地址, 拉取其他服务地址
eureka:
client:
fetch-registry: true
register-with-eureka: true # fetch-registry 与 register-with-eureka 都为 true 表示即为提供者, 亦为消费者
service-url:
defaultZone: http://127.0.0.1:8080/eureka
eureka-server-connect-timeout-seconds: 10 # 连接注册中心超时时间, 默认 5, 单位秒, 一般和注册中心服务失效时间配置一致
eureka-server-read-timeout-seconds: 10 # 读取服务列表的超时时间, 默认 8, 单位秒
instance:
#hostname: ${spring.application.name} # 主机名称, 作用于 eureka 管理页面服务实例列表的链接地址, 默认是自己电脑名, prefer-ip-address.instance.eureka=false 默认取这个
appname: ${spring.application.name} # 实例名称, 默认使用 spring.application.name 的值, 一般不配置
prefer-ip-address: true # 使用 ip 地址定义在注册中心的地址, 作用于 eureka 管理页面服务实例列表的链接地址, 默认为 false
#ip-address: 127.0.0.1 # 主机 ip 地址, 基本上不配置, prefer-ip-address.instance.eureka=true 优先取这个
lease-renewal-interval-in-seconds: 5 # 服务续约间隔时间, 默认为 90, 单位秒
创建启动类 ConsumerDemoApplication.java , 添加注解 @EnableEurekaClient, 那么启动起来这个提供者就开始生效了.
消费者
创建项目的过程以及配置都和提供者一样.
现在就是看看怎么调用, 创建一个前端控制器:
@RestController
public class HelloEurekaController {
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;
@GetMapping("testPort")
public String testPort() {
// 根据服务名获取实例列表
List<ServiceInstance> serviceInstances = discoveryClient.getInstances("consumerdemo");
ServiceInstance serviceInstance = serviceInstances.get(0);
return "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort();
}
}
这里已经拿到提供者的访问地址, 该怎么调用我想应该难不倒你们
Eureka 基本教程的更多相关文章
- Spring-cloud微服务 Eureka学习教程-分布式搭建EurekaServer、EurekaClient+Ribbon(中级)
我们这里只有一台服务器,所以我们先仿集群搭建. 完整demo项目代码:https://github.com/wades2/EurekaDemo2 在这之前我们先分析分析Eureka相比其他注册中心的好 ...
- Spring-cloud微服务 Eureka学习教程-分布式搭建EurekaServer、EurekaClient(中级)
我们这里只有一台服务器,所以我们先仿集群搭建. 完整demo项目代码:https://github.com/wades2/EurekaDemo2 在这之前我们先分析分析Eureka相比其他注册中心的好 ...
- Spring-cloud微服务 Eureka学习教程-单服务器配置之快速搭建EurekaServer、EurekaClient(基础)
以下实例代码下载地址:https://github.com/wades2/EurekaDemo Eureka是Spring Cloud Netflix的一个子模块,也是核心模块之一.用于云端服务发现, ...
- spring cloud系列教程第四篇-Eureka基础知识
通过前三篇文章学习,我们搭建好了两个微服务工程.即:order80和payment8001这两个服务.有了这两个基础的框架之后,我们将要开始往里面添加东西了.还记得分布式架构的几个维度吗?我们要通过一 ...
- spring cloud系列教程第六篇-Eureka集群版
spring cloud系列教程第六篇-Eureka集群版 本文主要内容: 本文来源:本文由凯哥Java(kaigejava)发布在博客园博客的.转载请注明 1:Eureka执行步骤理解 2:集群原理 ...
- Spring Cloud系列教程第九篇-Eureka自我保护机制
Spring Cloud系列教程第九篇-Eureka自我保护机制 本文主要内容: 1:自我保护介绍 2:导致原因分析 3:怎么禁止自我保护 本文是由凯哥(凯哥Java:kagejava)发布的< ...
- Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇
Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇 本文主要内容: 1:spring cloud整合Eureka总结 本文是由凯哥(凯哥Java:kagejava ...
- spring cloud系列教程第八篇-修改服务名称及获取注册中心注册者的信息
spring cloud系列教程第八篇-修改服务名称及获取注册中心注册者的信息 本文主要内容: 1:管理页面主机名及访问ip信息提示修改 2:获取当前注册中心的服务列表及每个服务对于的服务提供者列表 ...
- springCloud系列教程01:Eureka 注册中心集群搭建
springCloud系列教程包含如下内容: springCloud系列教程01:Eureka 注册中心集群搭建 springCloud系列教程02:ConfigServer 配置中心server搭建 ...
随机推荐
- 前端-Data URI Scheme
了解Data URI scheme,首要要掌握一些URI.URL的基本知识,很多做移动端上开发的同学对这两个基本概念掌握的不够,本文首先会对这两个基本概念做一些简单的介绍. 基本概念 <HTTP ...
- autorelease注意事项
1.autorelease使用注意 并不是放到自动释放池代码中,都会自动加入到自动释放池 @autoreleasepool { // 因为没有调用 autorelease 方法,所以对象没有加入到自动 ...
- iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G) by徐文棋
前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也 ...
- [01-jwt]C# JWT基础知识详解
本篇文章将介绍jwt基础概念性知识,不含实操代码展示,特别适合该方面知识空白的人群,大神级别请选择性观看.不喜禁喷,出门右转,谢谢配合. 一.什么是JWT? JWT是简写,全称是JSON Web To ...
- LeetCode随缘刷题之截断句子
这道题相对比较简单.正好最近学到StringBuilder就用了. package leetcode.day_12_06; /** * 句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前 ...
- HTML笔记整理--下节
欢迎来到HTML基础笔记下节部分! 内联样式 当特殊的样式需要应用到个别元素时,就可以使用内联样式. 使用内联样式的方法是在相关的标签中使用样式属性.样式属性可以包含任何 CSS 属性.以下实例显示出 ...
- 私有化轻量级持续集成部署方案--02-Nginx网关服务
提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 这一篇中使用 Nginx 部署网关中心,用来代理服务器中服务.网关中心有优点也有缺点,也可以不采用网关系统. 部署 ...
- Solution -「ARC 124E」Pass to Next
\(\mathcal{Description}\) Link. 有 \(n\) 个人站成一个环,初始时第 \(i\) 个人手里有 \(a_i\) 个球.第 \(i\) 个人可以将自己手中任意数 ...
- 我来教你如何将cpu使用率up起来(shell脚本[含注释])
这个脚本是为了逃过一些资源检测的,当一些机器当前使用率偏低,会被客户要求收回,那咋办呢?使用下面的脚本,就可以留住你的机器了 假设要求cpu使用率不能低于35% 使用方法:bash up_up_up. ...
- Node.JS学习——学习笔记
Node.JS--学习笔记 2020年02月23日11:52:01 我打算自学NodeJS-通过阅读NodeJS官网来完成. https://nodejs.org/dist/latest-v13.x/ ...