服务的提供者和消费者

服务之间可以通过Spring提供的RestTemplate来进行http请求去请求另一个Springboot的项目,这就叫做服务间的远程调用。
当一个服务通过远程调用去调用另一个服务时,被调用的服务就叫做服务的提供者,调用服务的服务就叫做服务的消费者。
一个服务可以既是服务的提供者也是服务的消费者。

1、服务调用关系

  • 服务提供者:暴露接口给其它微服务调用
  • 服务消费者:调用其它微服务提供的接口
  • 提供者和消费者的角色其实是相对的

Eureka注册中心

  • 远程调用的问题

  • eureka原理

  • 搭建eurekaServer

  • 服务注册

  • 服务发现

eureka的作用

  • 消费者该如何获取服务提供者的具体信息

    1. 服务提供者启动时向eureka注册自己的信息
    2. eureka保存这些信息
    3. 消费者根据服务名称向eureka拉取提供者信息
  • 如果有多个服务提供者,消费者该如何选择
    1. 服务消费者利用负载均衡算法,从服务列表中挑选一个
  • 消费者如何感知服务提供者健康状态
    1. 服务提供者会每隔30s向EurekaServer发送心跳请求,报告健康状态
    2. eureka会更新记录服务列表信息,心跳不正常会被剔除
    3. 消费者就可以拉取到最新的信息

在eureka架构中,微服务角色有两类:

  • EurekaServer:服务端、注册中心

    1. 记录服务信息
    2. 心跳监控
  • EurekaClient:客户端
    1. provider:服务提供者

      1. 注册自己的信息到EurekaServer中
      2. 每隔30S向EurekaServer发送心跳
    2. consumer:服务消费者
      1. 根据服务名称从EurekaServer拉取服务列表
      2. 基于服务列表做负载均衡,选中一个微服务后发起远程调用

EurekaServer服务注册

  • 创建eureka服务端

父工程引入对应版本的springcloud依赖

springboot 3.1.5对应

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2022.0.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>

引入eureka服务端依赖

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

启动eureka服务,在启动类上添加@EnableEurekaServer注解

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

配置文件中配置服务名称-地址-服务端口

spring:
application:
name: eureka-server #微服务名称
server:
port: 10086 #服务端口
eureka:
client:
service-url: #eureka地址信息 eureka自己也是一个微服务,也会被注册到eureka中 为了做eureka集群
defaultZone: http://127.0.0.1:10086/eureka

eureka服务端自己也会被注册到eureka服务中

然后就可以访问http://127.0.0.1:10086进入eureka注册中心了

  • 服务注册

确保父工程成功引入cloud依赖后引入eureka服务端依赖

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

在配置文件中配置eureka服务名称和地址即可

server:
port: 8081
spring:
application:
name: cloud-user
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
  • 服务发现

引入依赖

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

配置地址

eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka

给RestTemplate添加上@LoadBalanced注解,实现同一服务多个地址的负载均衡调用

//RestTemplate spring提供的远程调用模块 允许发送http请求
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}

使用RestTemplate不通过具体的ip地址而是通过服务名称远程调用实现查询

@Autowired
RestTemplate restTemplate;
@GetMapping("/order/all/{id}")
public ordersUser getAllById(@PathVariable("id") Integer id){
String str1 = "http://cloud-order/order/"+id;
orders od = restTemplate.getForObject(str1, orders.class);
String str = "http://cloud-user/user/"+od.getOrderuserid();
user forObject = restTemplate.getForObject(str, user.class);
ordersUser ordersUser = new ordersUser(); ordersUser.setOrderid(od.getOrderid());
ordersUser.setUser(forObject);
ordersUser.setOrdername(od.getOrdername());
ordersUser.setOrderaddress(od.getOrderaddress());
ordersUser.setOrderprice(od.getOrderprice());
ordersUser.setOrdernumber(od.getOrdernumber()); return ordersUser;
}

SpringBoot3.1.5对应新版本SpringCloud开发(1)-Eureka注册中心的更多相关文章

  1. SpringCloud教程一:eureka注册中心(Finchley版)

    一.spring cloud简介 本阶段学习教程Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如 ...

  2. SpringCloud学习心得之Eureka注册中心的基本使用

      SpringCloud学习心得——Eureka注册中心 示范代码链接 定义 SpringCloud Eureka是 SpringCloud Netflix微服务套件的一部分,基于 REST 的服务 ...

  3. F版本SpringCloud 4—Eureka注册中心开发和客户端开发

    源码地址:https://gitee.com/bingqilinpeishenme/Java-Tutorials 前言 通过前三篇文章,用大白话介绍了微服务和SpringCloud以及服务治理相关的概 ...

  4. 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)

    微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...

  5. SpringCloud实战之初级入门(一)— eureka注册中心

    目录 写在前面 1.资料目录 2.环境介绍 3.eureka注册中心 3.1 创建工程 3.2 启动工程 5.eureka注册中心集群高可用 6.结语 7.一点点重要的事情 写在前面 我在软件行业浸泡 ...

  6. 《springcloud 一》搭建注册中心,服务提供者,服务消费者

    注册中心环境搭建 Maven依赖信息 <parent> <groupId>org.springframework.boot</groupId> <artifa ...

  7. 跟我学SpringCloud | 第二篇:注册中心Eureka

    Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...

  8. SpringCloud学习心得—1.2—Eureka注册中心的密码认证、高可用的设置

      SpringCloud学习心得—1.2—Eureka注册中心的密码认证.高可用的设置 这是相关代码 链接 Eureka开启密码配置 添加依赖 <dependency> <grou ...

  9. Nacos笔记01——使用Nacos作为SpringCloud项目的服务注册中心

    前言 刚学SpringCloud时使用eureka作为服务注册中心,随着网飞公司eureka2.x不再更新,以及最近在公司实习接触到的SpringCloud项目是使用Nacos来做服务注册中心的,所以 ...

  10. SpringCloud之Eureka注册中心原理及其搭建

    一.Eureka简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringCl ...

随机推荐

  1. @Value static静态变量注入

    @Component public class Config { @Value("${config1}") private static String config1; } 使用上 ...

  2. verilog之readmemb

    verilog之readmemb 1.基本作用 用于读取存储器的值的系统函数.这里首先要知道什么是存储器.在verilog中,有一些比较大的数据是需要存储的,一般需要使用存储器,语法结构类似二维数组. ...

  3. KingbaseES数据库改写SQL Server数据库CROSS APPLY和OUTER APPLY

    一.功能介绍: CROSS APPLY和OUTER APPLY是SQL Server中的一种连接操作,类似于JOIN语句可以将一张表与一个表函数或一个子查询进行关联.表函数是一种返回一个表类型的数据的 ...

  4. 4 PyExecJS模块

    PyExecJS模块 pyexecjs是一个可以帮助我们运行js代码的一个第三方模块. 其使用是非常容易上手的. 但是它的运行是要依赖能运行js的第三方环境的. 这里我们选择用node作为我们运行js ...

  5. #容斥,广搜#nssl 1458 HR的疑惑 nssl 1460 逛机房

    nssl 1458 HR的疑惑 题目 求\([1\sim n]\)中有多少个正整数\(x\)满足 \[\sqrt[y]{x}\in N^{+},y>1 \] 其中\(n\leq 10^{18}\ ...

  6. #平衡树#洛谷 1110 [ZJOI2007]报表统计

    题目 分析 最小值只需要开两棵平衡树,一棵维护所有元素,一棵维护相邻最小值, 对于全局最小值,对于每次插入查找前驱后继更新最小值即可, 相邻最小值,对于每个原数列的数维护它的开头和结尾是什么数, 然后 ...

  7. #威佐夫博弈#洛谷 2252 [SHOI2002]取石子游戏

    题目 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子. 游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子: 二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完 ...

  8. 基于pdfbox实现的pdf添加文字水印工具

    简述 最近有个需求需要给pdf加文字水印,于是开始搜索大法,但是发现网络上的代码基本都是将字体文件直接放在jar包里面.个人强迫症发作(手动狗头),想要像poi一样直接加载系统字体,于是研究了一下午p ...

  9. HarmonyOS应用兼容稳定性云测试

      兼容性测试 兼容性测试主要验证HarmonyOS应用在华为真机设备上运行的兼容性问题,包括首次安装.再次安装.启动.卸载.崩溃.黑白屏.闪退.运行错误.无法回退.无响应.设计约束场景.具体兼容性测 ...

  10. 手把手教你使用ArkTS中的canvas实现签名板功能

      一.屏幕旋转 ● 实现签名板的第一个功能就是旋转屏幕.旋转屏幕在各种框架中都有不一样的方式,比如:在H5端,我们一般是使用CSS中的transform属性中的rotate()方法来强制将网页横屏, ...