Springcloud五大组件

2023-11-11

1.什么是springcloud?

springcloud是一系列框架的有序集合。它利用springboot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用springboot的开发风格做到一键启动和部署。

springcloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经过实践检验的框架组合起来,通过springboot风格再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留下了简单易懂、容易部署和维护的分布式开发工具包。

2.springcloud的五大组件

  1. Eureka ['urika];2、Ribbon [ˈrɪbən];3、Hystrix [ha:striks];4、Zuul ['zu:l];5、Config [kənˈfɪg]

其中,Eureka是一个RESTful服务,用来定位运行在AWS地区中的中间层服务,由Eureka服务器和客户端两个组件组成。

2.1 Eureka

作用:实现服务治理

一个restful服务,用来定位运行在AWS Region(地区)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

在应用启动时,Eureka客户端向服务端注册自己的服务信息,同时将服务端的服务信息缓存到本地。客户端会和服务端周期性的进行心跳交互,以更新服务租约和服务信息。

2.2 Ribbon

作用:主要提供客服端的软件负载均衡算法。

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。

2.3 Hystrix

断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费CPU周期,而它确定该故障是持久的。断路器模式也使应用程序能否检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。

为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。

2.4 Zuul

作用:具有api网关、路由、负载均衡等多种作用。

类似nginx反向代理的功能,不过Netflix自己增加了一些配合其他组件的特性。在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。

2.5 Config

作用:配置管理。

springcloud提供服务器端和客户端。服务器存储后端默认使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。这个还是静态的,得配合springcloud Bus实现动态的配置更新。

3.搭建springcloud框架

请参考spring cloud搭建教程https://buchang.blog.csdn.net/article/details/124408609

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springcloud五大组件 的相关文章

  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 将不同类型的参数传递给 jdbctemplate 查询

    我正在尝试使用带有少量不同类型参数的 where 子句从数据库中检索记录 这是我编写的简单方法 我将breedId和性别作为参数传递 public List
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • python发送邮件的乱码问题解决方案

    公司项目中需要通过后台发送邮件 邮件内容包括图片附件 如果通过PHPmailer发送 由于邮件服务器可能存在延迟现象 通过PHPmailer发送邮件 需要等待邮件发送成功后才能返回结果 这在实践中证明 有时发送邮件无法即时返回结果 影响用户
  • Python内容聚合

    Python3 教程 Python 标准库概览 pip 设置代理 设置代理 PyCharm支持的4种Python Interpreter和配置方法 Python中import的as语法 Python安装自己的代码到site packages
  • python 停止线程

    import threading import time import inspect import ctypes def async raise tid exctype raises the exception performs clea
  • MySQL索引命中与失效

    目录 创建表 MySQL执行优化器 索引的命中与失效情况 总结 拓展 讨论MySQL索引命中与失效 我们得先来创建表 创建表 SET NAMES utf8mb4 SET FOREIGN KEY CHECKS 0 Table structur
  • 动态规划记录 [动态更新]

    2021 江西省赛A 题目链接 https ac nowcoder com acm contest 21592 A 题意 给出一个布尔矩阵 每个位置的值非零即一 然后问给定p和q 问从 1 1 n m 的所有路径中至少通过p次0 q次1的路
  • Java技术栈(跳槽,面试必备)

    Java技术栈 来到北京后 感觉氛围有点浮躁 人员流动性很大 很少有人能沉下心学习 所以最近打算把整理过的知识点拿出来给大家分享下 基础扎实了 无论是工作还是跳槽都很有用 跳槽前将知识点整理成word打印出来 然后背其中的知识点 保证你能面
  • 【渗透测试】常见的数据库

    一 网站暴库漏洞 暴库 就是通过一些技术手段或者程序漏洞得到数据库的地址 并将数据非法下载到本地 黑客非常乐意于这种工作 为什么呢 因为黑客在得到网站数据库后 就能得到网站管理账号 对网站进行破坏与管理 黑客也能通过数据库得到网站用户的隐私
  • GitHub 组织是什么?您应该使用一个吗?

    GitHub 作为一个平台 被个人程序员和大型组织所使用 无论您与多少人一起工作 GitHub Organizations 都为管理多个项目的人员提供了一些不错的工具 GitHub 组织是什么 GitHub Organizations 是
  • 解决linux mysql命令 bash: mysql: command not found 的方法

    解决linux mysql命令 bash mysql command not found 的方法 腾讯云开发者社区 腾讯云 tencent com
  • 服务器的安装与维护技巧——数据湾

    机房服务器的安装与维护是机房管理中的主要任务 安装维护好服务器才能保证服务器正常 安全稳定地运行 才能确保数据的安全 服务器生产的厂家 类型 系列不同其具体的安装维护方法 步骤是有差异的 本文主要以戴尔 DELL 系列服务器为例介绍服务器的
  • 数据结构经典算法集锦

    数据结构经典算法集锦 第2章 线性表 KMP算法 获得next数组 void GetNext char t int next MAX int i 1 j 0 next 1 0 设t 0 中为字符串长度 字符保存在t 1 之后 while i
  • 谈一谈c/c++程序的内存布局

    文章目录 内存布局 文本段 初始化数据段 未初始化数据段 bss 堆区 栈区 如何查看一个程序的内存布局 内存布局 一个C 程序的典型内存布局由以下几部分组成 文本段 初始化数据段 未初始化的数据段 bss 堆区 栈区 文本段 文本段也叫代
  • Golang Http Server源码阅读

    这篇文章出现的理由是业务上需要创建一个Web Server 创建web是所有语言出现必须实现的功能之一了 在nginx fastcgi php广为使用的今天 这里我们不妨使用Go来进行web服务器的搭建 前言 使用Go搭建Web服务器的包有
  • 微信小程序-关于新版隐私协议接口wx.onNeedPrivacyAuthorization getPrivacySetting requirePrivacyAuthorize的适配解读以及实现代码

    代码插件已集成 即插即用 五分钟集成进项目 免费下载 欢迎大家交流 微信小程序用户隐私保护协议弹窗插件下载 官方公告地址 关于小程序隐私保护指引设置的公告 微信开放社区 1 首先看一下这个网址 里边包含涉及到的隐私的接口 这些接口都要适配一
  • MIPS 指令集速查

    MIPS 指令集 共31条 助记符 指令格式 示例 示例含义 操作及其解释 Bit 31 26 25 21 20 16 15 11 10 6 5 0 R type op rs rt rd shamt func add 000000 rs r
  • 泰凌微8258入门指导1-环境搭建

    泰凌微8258入门指导1 环境搭建 第一步 准备工作 1 下载对应SDK包 2 安装jdk环境 2 安装esclipe编译器 3 对SDK进行补丁 4 烧录环境 第一步 准备工作 1 下载对应SDK包 Telink 官网地址 在开发者支持中
  • 命令行清除Redis缓存

    一 打开命令行窗口 打开Redis安装目录下的 redis li exe 二 授权 在打开的命令行里直接操作会提示没有权限 需要先使用auth命令授权 使用方法如下 auth 这里是Redis密码 三 清除缓存 清除缓存有两种方式 清除数据
  • Java 控制结构练习题

    练习1 某人有100 000元 每经过一次路口 需要交费 规则如下 1 当现金 gt 50000时 每次交5 2 当现金 lt 50000时 每次交1000 编程计算该人可以经过多少次路口 要求 使用while break方式完成 publ
  • opencv_contrib-master/modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: No

    Hello i have downloaded opencv master and opencv contrib then tried to build opencv contrib using this command cmake DOP
  • Springcloud五大组件

    1 什么是springcloud springcloud是一系列框架的有序集合 它利用springboot的开发便利性巧妙地简化了分布式系统基础设施的开发 如服务发现注册 配置中心 消息总线 负载均衡 断路器 数据监控等 都可以用sprin