Spring Cloud简介

2023-11-11

一、Spring Cloud简介

SpringCloud是微服务架构中的集成,将一系列优秀的组件进行了整合。基于SpringBoot构建,对熟希spring的程序员来说,表容易上手。

通过简单的注解,就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。

那么什么是“微服务架构”呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful API的方式互相调用。

SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注NetFlix。

二、SpringCloud版本

SpringCloud项目是由多个独立项目集合而成的,每一个项目都是独立的,各自进行自己的版本迭代和版本发布。所以SpringCloud不方便使用版本号来管理,而是使用版本名。以避免和子项目版本号的冲突。

版本名的来源是伦敦的地铁站名,以字母排序。比如最早的Release版本为Angel,第二个的Release版本为Brixton。

当一个版本的update积累的比较多或者解决了一个严重bug时,会发布一个ServiceRelease版本,简称SR,后面带的数字为该大版本下的第一次发布。

从上图可以看出,springcloud的F版本是基于springboot的2.0.x构建,之前的是基于springboot的1.5.x构建。

Spring Cloud的版本:Brixton、Camden、Dalston、Edgware、Finchley。

三、常用的5个组件

  • Netflix Eureka - 服务发现
  • Netflix Ribbon - 客户端负载均衡
  • Netflix Hystrix - 断路器
  • Netflix Zuul - 服务网关
  • Spring Cloud Config - 分布式配置

3.1 Netflix Eureka

作用:实现服务治理(服务注册和发现)

说明:Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。有两个组件组成:Eureka服务端和Eureka客户端。

   Eureka服务端作用服务注册中心,支持集群部署。

Eureka客户端是一个java客户端,用来处理服务注册和发现。

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

3.2 Netflix Ribbon

作用:Ribbon 主要提供客户侧的软件负载均衡算法。

说明:Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以轻松的将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。

关键点就是将外界的rest调用,根据负载均衡策略转换为微服务的调用。Ribbon有比较多的负载均衡策略,可自行查阅资料。

3.3 Netflix Hystrix

作用:断路器,保护系统,控制故障范围。

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

3.4 Netflix Zuul

作用:api网关,路由,负载均衡等多种作用

说明:类似nginx,方向代理的功能,不过netflix自己增加了一些配合其他组件的特性。

在微服务架构中,后端服务往往不直接开发给调用端,而是通过一个api网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,在这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。

3.5 Spring Cloud Config

作用:配置管理

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

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

Spring Cloud简介 的相关文章

  • 从txt文件中读取数据而不下载它?

    我想从提供的文本文件中解析信息 有没有一种方法可以在应用程序中执行此操作 而无需先下载文件 以某种方式传输文本内容 打开到 URL 的 Http 连接 使用内置 HttpURLConnection 或使用 commons httpclien
  • 在Java Servlet中获取通过jquery ajax发送的参数[重复]

    这个问题在这里已经有答案了 我在网上搜索这个主题 但找不到有效的示例 我会很高兴有人能给我帮助 这就是我测试的 ajax url GetJson type POST dataType json contentType application
  • 从 Android 函数更新 Textview

    有人可以告诉我如何从函数更新 Android Textview 控件吗 我在互联网上进行了深入搜索 看到很多人都问同样的问题 我测试了线程但无法工作 有人有一个简单的工作示例吗 例如 调用一个函数 在循环中运行多次 并且该函数在 TextV
  • java中高效的输入流到字符串方法

    因此 我在 Java 中的 诚然非常简单 应用程序上运行探查器 令我惊讶的是 仅次于需要在时间上发出 HTTP 请求的方法的是我的方法 inputStreamToString方法 目前它的定义如下 public static String
  • Jenkins 未显示 Maven 编译器错误

    在 Jenkins 中构建多模块 maven 3 项目时 如果出现构建错误 我们会收到一条神秘消息 表明 Maven 编译器插件失败 这在上周才刚刚开始发生 INFO BUILD FAILURE INFO INFO Total time 1
  • 如何杀死 Java Future?

    我正在开发的服务使用 Future 来并行运行多个任务 每个任务最多可能需要一分钟才能完成 然而 外部库似乎有问题 因为在某些情况下 2 的时间 它不会返回 在这些情况下 我想给出 2 分钟的等待时间 如果还没有返回 我想杀死 future
  • 当前平台不支持桌面 API

    我遇到过这个错误 java lang UnsupportedOperationException 当前平台不支持桌面 API 我将从我的 java 应用程序中打开一个文件 我用这个方法 Desktop getDesktop open new
  • 用于制作代码编辑器的 JavaFX 相当于 JSyntaxPane 的什么?

    以前在 Swing 中 我使用过JSyntaxPane用于制作一个小型 Java 源代码编辑器 为了练习 我决定用 JavaFX 重做整个项目并添加对更多语言的支持 最好是尽可能多 不过好像没有什么类似的JSyntaxPane 一些研究让我
  • Google 表格使用 API 密钥而不是 client_secret.json

    In the QuickStart java示例Java 快速入门 https developers google com sheets api quickstart java他们使用OAuth client ID识别该应用程序 这会弹出一
  • 如何使用 aether 从 Java 找到最新版本的 Maven 工件?

    他们的文档非常薄弱 我无法弄清楚 我找到了部分答案here https stackoverflow com questions 27428068 how to retrieve the latest also snapshot versio
  • 扩展多个类

    我知道 Java 不支持多重继承 因为不允许扩展多个类 我只是想知道我的问题是否有解决方法 我有一个名为CustomAction需要扩展两个抽象类 BaseAction and QuoteBaseAction 我无法更改这些抽象类中的任何一
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • 为 REST API 生成 Swagger UI 文档

    我使用 Java 中的 JAX RS Jersey 开发了 REST API 我想为其转换 生成基于 Swagger 的 UI 文档 谁能以简单的方式告诉我如何做到这一点的精确 步骤 很抱歉 他们网站上给出的步骤对我来说有点模糊 有多种方法
  • Spring Security 角色层次结构不适用于 Thymeleaf sec:authorize

    我正在使用 Spring Security 3 2 5 RELEASE 和 ThymeLeaf 2 1 4 RELEASE 我已经在安全上下文中定义了角色层次结构 在我的视图层中我正在使用sec authorize属性来定义菜单项 我希望看
  • 在 Kotlin 中声明静态属性?

    My Java code public class Common public static ModelPengguna currentModelPengguna public class Common companion object v
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem
  • 在 Spring MVC 中将请求写入文件

    我希望能够将整个请求写入 Spring MVC 控制器中的文件 我已尝试以下操作 但即使我使用大量参数发出 POST 请求 文件也始终为空 RequestMapping method RequestMethod POST value pay
  • 难以理解 通配符

    我有一个非常基本的问题 下面的代码无法编译 假设 Apple Extends Fruit List
  • FetchType.LAZY 不适用于休眠中的 @ManyToOne 映射

    简而言之 我的 Child 类与 Parent 类之间存在多对一的关系 我想加载所有的孩子 而不必加载他们的父母详细信息 我的孩子班级是 Entity public class Child implements Serializable I
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果

随机推荐

  • Java 对象序列化

    目录 一 序列化 定义 方法 代码 二 反序列化 定义 方法 代码 三 自定义类序列化 步骤 代码 一 序列化 定义 将内存中的Java对象保存到磁盘中或通过网络传输过去 方法 使用过ObjectOutputStream类实现 另外 Obj
  • Python——深拷贝与浅拷贝

    s1 你好 s2 s1 print id s1 print id s2 gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt
  • 嵌入式内核及驱动开发中级(上)

    目录 第一部分 一 设备分类 设备申请和注销 一 Linux内核对设备的分类 二 设备号 内核中同类设备的区分 三 申请和注销设备号 二 Code exerccise 三 知识补充 第二部分 一 函数指针复习 一 函数指针复习 1 1 内存
  • 安装tensorflow时报错的解决办法:ERROR: Could not find a version that satisfies the requirement tensorflow

    本文核心 tensorflow不可运行在32位的windows系统上 也不可运行在32位的python版本下 下面开始讲述我漫长的纠错经历 安装tensorflow时报错如下 在排除了以下问题后 网速问题 python版本与tensorfl
  • Javascript中的函数(Function)与对象(Object)的关系

    今天我们来尝试理解Function和Object 因为这个里面有些人前期可能会搞糊涂 他们之间到底是什么关系 当然也不除外当初的我 注意 官方定义 在Javascript中 每一个函数实际上都是一个函数对象 我们先来看最简单的两个代码 也是
  • ckeditor的文本文件粘贴的br问题

    前几天 忽然发现wordpress的fckeditor不再更新了 而且因为升级 导致系统的编辑器也不能用了 所以给wordpress更换了编辑器 CKEditor CKEditor for WordPress 4 0 安装完成后 感觉还好
  • Apache JMeter配置步骤压力测试实例

    一 安装环境 2 二 安装步骤 2 三 实例环境
  • java全栈工程师技术学习路线规划

    前端 HTML HTML5 CSS CSS3 Javascript jQuery RequireJS AngularJS Vue 后端 Java Struts2 Spring MVC JPA Mybatis Spring Boot 安全 S
  • [网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)

    这是作者的系列网络安全自学教程 主要是关于网安工具和实践操作的在线笔记 特分享出来与博友共勉 希望您们喜欢 一起进步 前文分享了Wireshark安装入门和一个抓取网站用户名和密码的案例 本篇文章将继续深入学习Wireshark的抓包原理知
  • Mac OSX 平台安装 MongoDB

    Mac OSX 平台安装 MongoDB MongoDB 提供了 OSX 平台上 64 位的安装包 你可以在官网下载安装包 下载地址 https www mongodb com download center community 从 Mon
  • jni入门级别教程

    前提条件 笔者假想着 能看到这篇博客的读者 NDK环境 已经配置好了哈 开发步骤 第一步 新建工程 工程建完之后在真机或模拟器上运行一遍 确保工程建的没问题 第二步 配置NDK 第三步 在Java中添加 native 函数 并 调用 我们这
  • 软件版本号规则

    为什么 1 任何软件都需要迭代更新 需要一套版本号 版本号可以随意编 为啥要有规则 2 有规则 行内都懂 不需要重复学习和解释 版本的命名规范 软件版本一般分为四个部分组成 第一部分为主版本号 第二部分为次版本号 第三部分为修订版本号 第四
  • Nginx map 实现时间格式转换

    哈喽大家好 我是咸鱼 最近我们需要把 Nginx 的日志接入到自研的日志采集平台上 但是这个平台只支持 JSON 格式 所以需要把 Nginx 日志格式改成 JSON 格式 例如下面这样的效果 刚开始在主配置文件 nginx conf 中定
  • react lazy动态加载组件问题

    React lazy定义一个动态加载的组件 有助于缩减bundle的体积 延迟加载未使用的组件 React lazy使用问题 React lazy 简单的使用 遇到的问题 问题一 问题二 问题三 loadable component 尝试解
  • git patch 说明

    联网的模式下就不详述了 可以使用git fetch git pull git checkout git commit git push等操作同步 本文主要说一下离线模式下 不能使用上述命令的情况下 怎么同步版本 假设目前最新开发版本 git
  • H5当前页面选项卡切换,滚动顶部【记录】

    CSS样式中传入变量 鑫动了的主页 欢迎各位小伙伴 前端小白的成长之路 一起学习 一起成长 在H5中当前的页面难免会有多个选项卡切换的需求 在切换时 同一页面会记住相同位置 用户体验不是很好 我的需求就是切换选项卡 重回顶部 切记 targ
  • mongodb启动不了:child process failed, exited with error number 48

    问题 启动mongodb的时候 发现起不来 报错 child process failed exited with error number 48然后先去 var log mongo mongod log 查看启动的日志 可能原因 应该是没
  • excel表格上传

    一 员工页面跳转
  • 用户关闭浏览器事件

    一直以来用户非正常退出系统 即 用户按右上角的 X 按纽后 服务器端 session 无法销毁 一直要等到其过期时间到了才销毁 这样通过session进行在线人数统计就无法准确了 我今天试了才发现 其实关闭浏览器事件可以捕捉到的 那么我们就
  • Spring Cloud简介

    一 Spring Cloud简介 SpringCloud是微服务架构中的集成 将一系列优秀的组件进行了整合 基于SpringBoot构建 对熟希spring的程序员来说 表容易上手 通过简单的注解 就可以快速的在应用中配置一下常用模块并构建