springcloud03:Eureka和Ribbon

news2024/10/6 10:42:18

Eureka和Ribbon

  • Eureka介绍
    • 三大角色
  • Eureka详解
    • Eureka注册中心创建(springcloud-eureka模块)
    • 服务注册-信息配置-自我保护机制(服务提供模块)
    • CAP原则
  • Ribbon:负载均衡及Ribbon
  • 服务消费方(客户端)集成Ribbon

Eureka介绍

在这里插入图片描述

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

三大角色

Eureka Serrver:提供服务的注册与发现。zookeeper
Service Provider:将自身服务注册到 Eureka中,从而使消费方能够找到
Service Consumer:服务消费方从Eureka中获取注册服务列表,从而找到消费服务

Eureka详解

Eureka注册中心创建(springcloud-eureka模块)

  • pom.xml
<?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">
    <parent>
        <artifactId>springcloud-pom</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../springcloud-pom/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springcloud-eureka</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>
</project>
  • application.yml
server:
  port: 8761
#Eureka配置
eureka:
  instance:
    hostname: localhost #Eureka服务端的实例名称
  client:
    register-with-eureka: false #表示是否向Eureka注册中心注册自己
    fetch-registry: false #要不要去注册中心获取其他服务的地址
    service-url: #监控页面
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  • 启动类
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
  • 大坑
    Dependencies的sdk版本如果选择过高,springboot将无法启动
    在这里插入图片描述

启动之后访问:http://localhost:8761/

服务注册-信息配置-自我保护机制(服务提供模块)

服务提供者注册到Eureka注册中心

  • 加依赖
<!--完善监控信息-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
  • Eureka配置
#Eureka配置,服务注册到哪里
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    instance-id: springcloud-server-provider #修改Eureka的默认描述信息

#info配置
info:
  app.name: zzq-springcloud
  company.name: blog.com

  • 启动类加注解:@EnableEurekaClient
@EnableEurekaClient
@SpringBootApplication //在服务启动后自动注册到eureka
public class ServerProviderApplicaiton {
    public static void main(String[] args) {
        SpringApplication.run(ServerProviderApplicaiton.class,args);
    }
}

CAP原则

C:一致性
A:可用性
P:容错性
在这里插入图片描述

Ribbon:负载均衡及Ribbon

Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具
在这里插入图片描述
Ribbon能干嘛
在这里插入图片描述
在这里插入图片描述

服务消费方(客户端)集成Ribbon

  • pom.xml
 <!--ribbon负载均衡-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--Eureka-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
  • application.yml
#Eureka配置
eureka:
  client:
    register-with-eureka: false #不向Eureka注册自己
    service-url:
      defaultZone: http://localhost:8761/eureka/ #客户端注册进Eureka
  • configBean
@Configuration
public class ConfigBean {
    //配置负载均衡实现RestTemplate
    @Bean
    @LoadBalanced //Ribbon配置
    public RestTemplate geteRestTemplate(){
        return new RestTemplate();
    }
}
  • controller
    //Ribbon,我们这里的地址,应该是一个变量,通过服务名来访问 private static final String RESET_URL_PREFIX="http://SPRINGCLOUD-PROVIDER-DEPT";
@RestController
public class DeptConsumerController {
    //理解:消费者,不应该有service层
    @Autowired
    private RestTemplate restTemplate; //提供多种便捷访问远程http服务的方法,简单的restFul服务模板

    //Ribbon,我们这里的地址,应该是一个变量,通过服务名来访问
    private static final String RESET_URL_PREFIX="http://SPRINGCLOUD-PROVIDER-DEPT";

    @GetMapping("/consumer/dept/{deptNo}")
    public Dept get(@PathVariable("deptNo") Long deptNo){
        return restTemplate.getForObject(RESET_URL_PREFIX+"/dept/"+deptNo,Dept.class);
    }

    @GetMapping("/consumer/list")
    public List<Dept> queryAll(){
        return restTemplate.getForObject(RESET_URL_PREFIX+"/dept/queryAll",List.class);
    }

    @PostMapping("/consumer/dept/add")
    public boolean add(@RequestBody Dept dept){
        return restTemplate.postForObject(RESET_URL_PREFIX+"/dept/add",dept,Boolean.class);
    }
}

Ribbon和Eureka整合以后,客户端可以直接调用,不用关心ip地址和端口号
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day18【代码随想录】用栈实现队列、用队列实现栈、有效的括号

文章目录前言一、用栈实现队列&#xff08;力扣232&#xff09;二、用队列实现栈&#xff08;力扣225&#xff09;三、有效的括号&#xff08;力扣20&#xff09;前言 用栈实现队列 用队列实现栈 有效的括号 一、用栈实现队列&#xff08;力扣232&#xff09; 请你仅使用两个…

SpringBoot2基础入门

SpringBoot2基础入门学习要求环境要求学习资料01、Spring与SpringBoot1、Spring能做什么1.1、Spring的能力1.2、Spring的生态1.3、Spring5重大升级1.3.1、响应式编程1.3.2、内部源码设计2、为什么用SpringBoot2.1、SpringBoot优点2.2、SpringBoot缺点3、时代背景3.1、微服务3.2…

学生HTML个人网页作业作品:基于web在线汽车网站的设计与实现 (宝马轿车介绍)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

代码随想录刷题记录 day41 单词拆分+背包总结

代码随想录刷题记录 day41 单词拆分背包总结 参考&#xff1a;代码随想录 139. 单词拆分 思想 dp[i] 字符串长度为i&#xff0c;若dp[i]true&#xff0c;表示可以拆分为一个或多个在字典中出现的单词 递推公式 ​ 如果dp[j]true&#xff0c;[j,i]这个区间的子串出现在字典…

[附源码]Python计算机毕业设计大学生兼职平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

[附源码]计算机毕业设计基于Java的失物招领平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C++ 多态之虚继承

什么是虚继承 C支持多继承的形式&#xff0c;但若被继承的不同基类又同属与某一个接口类or基类的派生类&#xff0c;那么很容易产生经典的菱形继承问题&#xff0c;这样不可避免的带来了命名冲突&#xff0c;访问不明确的问题&#xff0c;如图所示&#xff1a; 虚继承解决的…

【目标感知:IVIF:轻量级架构】

SELAFUSE: SEARCH A LIGHTWEIGHT ARCHITECTURE FOR TARGET-AWARE INFRARED AND VISIBLE IMAGE FUSION &#xff08;SELAFUSE: 搜索轻量级架构以实现目标感知的红外和可见光图像融合&#xff09; 尽管深度学习技术最近在红外和可见光图像融合方面表现出出色的性能&#xff0c;…

如何使用DNS加速你的浏览器访问速度?

不知道大家有没有遇到过这种情况, 我们访问用浏览器网页无法正常显示, 但是我们使用的QQ却能正常的打开? 这是因为 : 我们在登录QQ的时候是直接访问的腾讯的服务器, 在下载好的QQ客户端已经帮你配置好了所有的IP, 所有没有域名解析的操作, 所以可以正常的登录 解决办法如下…

c#入门-引用变量

引用变量 引用传递&#xff0c;是c#为了以更为安全的方式代替指针做出来的产物。 类似引用类型储存一个地址。但和引用类型不同的是&#xff0c;连对他本身的访问和修改都会转为对原值的访问和修改。 声明引用变量 引用变量在声明是&#xff0c;需要给类型前加上关键字ref。…

02.Ioc容器加载过程-Bean的生命周期深度剖析——四

BeanFactory&#xff1a;使用简单工厂&#xff0c;负责生产Bean FactoryBean&#xff1a;被他修饰的的类&#xff0c;成为特殊的类&#xff0c;调用getObgrct()得到最终的类。。。用于类的实现接口重写方法&#xff0c;从而扩展功能 IOC再总结&#xff1a; 实例化AnnotationCo…

【阅读笔记】《人月神话》思想提炼

文章目录前言1. 衡量工作量1.1. 单位1.2. 工作量与人月&#xff08;人天&#xff09;的关系1.2.1 忽略了沟通成本1.2.2 忽略了需求的特征2. 外科手术团队 —— 少部分人主导项目2.1. 执行方式2.2. 遵守的理念3. 警惕“遗留需求”4. 管理进度4.1 不要泄气4.2. 设定合适的里程碑并…

java项目_第170期ssm二手手机回收平台系统_ssm毕业设计_计算机毕业设计

java项目-第170期ssm二手手机回收平台系统-ssm毕业设计_计算机毕业设计 【源码请到下载专栏下载】 今天分享的项目是《ssm二手手机回收平台系统》 该项目分为2个角色&#xff0c;管理员和用户。 用户可以浏览前台,包含功能有&#xff1a; 首页、手机商城、新闻资讯、跳转到后台…

MRR和ICP

MRR和ICPMulti-Range Read优化ICP索引下推优化Multi-Range Read优化 MySQL5.6版本开始支持Multi-Range Read&#xff08;MRR&#xff09;优化。Multi-Range Read优化的目的就是为了减少磁盘的随机访问&#xff0c;并且将随机访问转化为较为顺序的数据访问&#xff0c;这对于IO…

每天进步一点点 -- pytorch学习:张量的介绍与创建

推荐查看的文档&#xff1a;机器视觉全栈|机器视觉教程|docsify|pytorch官方教程中文版|opencv-python官方教程中文版|open3D(0.15.1)官方教程中文版 Tensors个人理解为在GPU上工作的数组和矩阵&#xff0c;既然是数组和矩阵&#xff0c;那么里面也保存一些类型的内容&#xf…

圣天诺加密狗(HASP)破解

圣天诺加密狗&#xff08;HASP&#xff09;破解 一、编写测试程序 dll代码&#xff1a; #include "pch.h" #include<stdlib.h> BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {switch (ul_reason_for_call){case D…

[附源码]计算机毕业设计和vue的茶文化交流平台的设计与实现Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

SVG 实现拟物态圆环进度条

前言 &#x1f44f;SVG 实现拟物态圆环进度条&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义一个圆角矩形作为父容器&#xff0c;背景色为–bg --bg: #edf1f5;<div class"container">&l…

lunar.js 基本使用学习笔记

文章目录lunar 基本使用学习笔记介绍基本使用部分文档 API 转载阳历相关的方法 APISolar 阳历阳历实例化阳历对象可以使用多种字符串输出方式&#xff1a;获取年、月、日儒略日获取星期判断是否闰年获取节日星座阳历日期推移&#xff08;可**跳过节假日、周六周日**&#xff09…

[附源码]Nodejs计算机毕业设计基于Java的医院预约挂号系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…