Spring Cloud学习(二)【Eureka注册中心】

文章目录

  • Eureka 注册中心
    • Eureka 的作用
  • 动手实践
    • 搭建 EurekaServer
    • 服务注册
    • 服务发现
  • Ribbon 负载均衡
    • 负载均衡原理
    • IRule 接口(负载均衡策略)
    • 饥饿加载


Eureka 注册中心

服务调用出现的问题

  • 不能采用硬编码
  • 服务消费者该如何获取服务提供者的地址信息?
  • 如果有多个服务提供者,消费者该如何选择?
  • 消费者如何得知服务提供者的健康状态?

Eureka 的作用

eureka-server(注册中心):用于管理记录所有的微服务,监控心跳
eureka-client:服务消费者与服务提供者都属于eureka-client

  1. 注册服务信息
  2. 拉去服务
  3. 负载均衡
  4. 远程调用

在这里插入图片描述

在这里插入图片描述

动手实践

在这里插入图片描述

搭建 EurekaServer

在这里插入图片描述

<!--        eureka服务端-->
 <dependency> 
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
 </dependency>

编写启动类,添加@EnableEurekaServer注解

server:
  port: 10086  # 服务端口

spring:
  application:
    name: eurekaserver # 微服务名称
eureka:
  client:
    service-url:  # eureka的地址信息 
      defaultZone: http://127.0.0.1:10086/eureka

服务注册

在这里插入图片描述

注册 user-service

在这里插入图片描述

<!--        eureka服务端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
server:
  port: 8081
spring:
  application:
    name: userservice # 微服务名称

eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

在IDEA本地为一个服务起多个实例的方法

在这里插入图片描述
在这里插入图片描述

服务发现

在这里插入图片描述
在这里插入图片描述

orderservice启动类中

/**
 * 创建 RestTemplate 并注入Spring容器
 * @return
 */
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}

OrderService.java中

public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2. 利用 RestTemplate 发送http请求,查询用户
        String url = "http://userservice/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        // 封装 user 到 Order
        order.setUser(user);
        // 4.返回
        return order;
    }

启动负载均衡后,当 order 服务调用 user 服务时,eureka 会通过负载均衡策略去调用userservice1与userservice2(user服务启动并注册了多个实例)

总结
在这里插入图片描述

Ribbon 负载均衡

负载均衡原理

负载均衡流程

在这里插入图片描述

@LoadBalanced 注解: 标记当前 RestTemplate 发起的请求要被 Ribbon 拦截

在这里插入图片描述
在这里插入图片描述

IRule 接口(负载均衡策略)

在这里插入图片描述

在这里插入图片描述
通过定义 IRule 实现可以修改负载均衡规则,有两种方式:

  1. 启动类/配置类中
    范围:order-service的所有请求
    在这里插入图片描述

  2. application.yml 中
    范围:order-service 访问某个指定的服务(比如此处配置的是 user-service)的请求
    在这里插入图片描述

饥饿加载

Ribbon 默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

在这里插入图片描述

当有多个饥饿加载的服务对象

在这里插入图片描述

总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/120836.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

06【保姆级】-GO语言的运算符

之前我学过C、Java、Python语言时总结的经验&#xff1a; 先建立整体框架&#xff0c;然后再去抠细节。先Know how&#xff0c;然后know why。先做出来&#xff0c;然后再去一点点研究&#xff0c;才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…

JDBC(二)

第4章 操作BLOB类型字段 4.1 MySQL BLOB类型 MySQL中&#xff0c;BLOB是一个二进制大型对象&#xff0c;是一个可以存储大量数据的容器&#xff0c;它能容纳不同大小的数据。 插入BLOB类型的数据必须使用PreparedStatement&#xff0c;因为BLOB类型的数据无法使用字符串拼接写…

OAuth 2.0实现统一认证

OAuth 2.0协议概念&#xff1a; OAuth 是 Open Authorization 的简写。OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息&#xff08;如用户名与密码&#xff09;&#xff0c;即第…

Kotlin HashMap entries.filter过滤forEach

Kotlin HashMap entries.filter过滤forEach fun main(args: Array<String>) {val hashMap HashMap<String, Int>()hashMap["a"] 1hashMap["b"] 2hashMap["c"] 3println(hashMap)hashMap.entries.filter {println("filter $…

【MongoDB】索引 – 文本索引(指定语言)

一、语言列表 语言名称 代码 danish da dutch nl english en finnish fi french fr german de hungarian hu italian it norwegian nb portuguese pt romanian ro russian ru spanish es swedish sv turkish tr 二、指定默认语言 创建文本索…

UseGalaxy.cn生信云平台文本文件操作手册

文本文件是生物信息学中应用非常广泛的文本格式&#xff0c;甚至可以说是最重要的文件格式&#xff0c;比如常见的测序下机数据Fastq、参考基因组保存格式Fasta、比对文件SAM&#xff0c;以及突变列表VCF&#xff0c;它们都是文本文件。熟练地进行文本文件的处理&#xff0c;对…

upload-labs-1

文章目录 Pass-01 Pass-01 先上传一个正常的图片&#xff0c;查看返回结果&#xff0c;结果中带有文件上传路径&#xff0c;可以进行利用&#xff1a; 上传一个恶意的webshell&#xff0c;里面写入一句话木马&#xff1a; <?php eval($_POST[cmd]); echo "hello&quo…

【单片机】初次实验:Keil51的使用

哔哩哔哩/CSDN/博客园&#xff1a;萌狼蓝天 延时器 delay(int count){int i,j;for(i0;i<count;i){for(j0;j<1000;j);} } 瞧一瞧 题目要求&#xff1a;P0口接八个发光二极管&#xff0c;先让后面四个灯亮&#xff0c;再让前面四个灯亮&#xff0c;循坏 # include <REGX…

京东数据分析(京东销量):2023年9月京东投影机行业品牌销售排行榜

鲸参谋监测的京东平台9月份投影机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据数据显示&#xff0c;9月份&#xff0c;京东平台投影机的销量为13万&#xff0c;环比下滑约17%&#xff0c;同比下滑约25%&#xff1b;销售额将近2.6亿&#xff0c;环比下…

eNsp下如何使用wireshark抓包

文章目录 拓扑图抓包操作 拓扑图 抓包操作 可以通过下图上的指示 来设置 Time列的显示样式。 这里有个缺点就是就是抓取ensp上的虚拟设备上的数据包时的&#xff0c;年月日时间显示的不对。暂时无解决办法。 一般选择 日期和时间&#xff08;日期和时间与当前标准时间对应上时…

程序员找副业有哪几个方向(纯干货)

前序 关于副业对于我自己的看法一般会先从自身的职业去拓展&#xff0c;毕竟自己所在的行业自己会更清楚有哪些资源去获取&#xff0c;那么首先我们可以先问万能的gpt我们程序员做副业有哪些实用的推荐&#xff0c;看看它怎么说的 外包网站接单&#xff1f; 每次大家提到程序…

python循环队列

导语&#xff1a; 队列是一种先进先出&#xff08;first in first out,FIFO&#xff09;的线性表&#xff0c;是一种常用的数据结构。 它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作&#…

C语言——计算1!+2!+3!+......+10!

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int n;int ret 1;int sum 0;for(n 1; n < 10; n){ret * n;sum sum ret;}printf("sum %d\n",sum);return 0; }

C++基础——类与对象

1 概述 C是面向对象的语言&#xff0c;面向对象语言三大特性&#xff1a;封装、继承、多态。 C将万事万物抽象为对象&#xff0c;对象上有其属性和行为。 2 封装 2.1 封装的意义 封装是面向对象的三大特性之一&#xff0c;封装将属性和行为作为一个整体&#xff0c;对属性和…

接口自动化面试题

1.http请求都包含哪些内容&#xff0c;请求头和请求体有哪些内容 请求行/请求头/请求体/空行 请求行&#xff1a;请求方法字段、URL字段、http协议版本 例如&#xff1a;GET /index.html HTTP/1.1 请求方法&#xff1a;GET、POST、PUT、DELETE、OPTIONS、TRACE、CO…

2007-2022年全国各地级市金融机构网点数据

2007-2022年地级市金融机构网点数据 1、时间&#xff1a;2007-2022年 2、指标&#xff1a;行政区划代码、年份、城市名称、所属省份、银行网点数量、其中-政策性银行及国家开发银行营业网点占比、其中-商业银行营业网点数量占比、其中-农村金融机构营业网点数量占比 3、范围…

20.8 OpenSSL 套接字SSL传输文件

有了上面的基础那么传输文件的实现就变得简单了&#xff0c;在传输时通常我们需要打开文件&#xff0c;并每次读入1024个字节的数据包&#xff0c;通过SSL加密传输即可&#xff0c;此处的文件传输功能在原生套接字章节中也进行过详细讲解&#xff0c;此处我们还是使用原来的密钥…

Excel 转 Json 、Node.js实现(应用场景:i18n国际化)

创作灵感来源于在线转换是按照换行符去转换excel内容换行符后很难处理 本文是按单元格转换 const xlsx require(node-xlsx) const fs require(fs) const xlsxData xlsx.parse(./demo.xlsx) // 需要转换的excel文件// 数据处理 方便粘贴复制 const data xlsxData[2].data …

Hello Vue!

目录 前言 hello vue 为什么要new Vue(),而不能直接调用Vue()? Vue构造函数中的形参options template配置项 $mount()方法 前言 从此篇博客开始&#xff0c;将开启vue的学习&#xff0c;查缺补漏。 只要学计算机语言&#xff0c;那么hello xxx那一定是入门第一行代码了…

CSS 链接、列表、表格、盒子模型

一、CSS链接: 不同的链接可以由不同的样式。链接的样式可以用任何CSS属性&#xff08;比如颜色、字体、背景等&#xff09;。 链接的四种状态&#xff1a; a.link&#xff1a;正常&#xff0c;未访问过的链接&#xff1b; a.visited&#xff1a;用户已访问过的链接&#xf…