SpringCloud和微服务介绍

news2024/12/30 1:30:18

SpringCloud介绍

SpringCloud是在SpringBoot的基础上构建的,用于简化分布式系统构建的工具集。
在这里插入图片描述

该工具集为微服务架构中所涉及的配置管理,服务发现,智能路由,断路器,微代理和控制总线等操作提供了一种简单的开发方式。

SpringCloud中包含了多个子项目:

  • Spring Cloud Config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion
  • Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署
  • Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等
    • Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移
    • Netflix Hystrix:容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力
    • Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务
    • Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能
  • Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台
  • Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作
  • Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流
  • Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2
  • Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成
  • Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现
  • Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息
  • Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件
    除了以上这些还有很多,且在不断地增加。

SpringCloud的五大组件:

  • 服务发现——Netflix Eureka:实现服务治理(服务注册与发现)
  • 客服端负载均衡——Netflix Ribbon:主要提供客户侧的软件负载均衡算法。
  • 断路器——Netflix Hystrix:断路器,保护系统,控制故障范围。
  • 服务网关——Netflix Zuul:api网关,路由,负载均衡等多种作用。
  • 分布式配置——Spring Cloud Config:配置管理
    注意:

以下Spring Cloud Netflix模块和相应的启动程序将进入维护模式(停止更新):

spring-cloud-netflix-archaius
spring-cloud-netflix-hystrix-contract
spring-cloud-netflix-hystrix-dashboard
spring-cloud-netflix-hystrix-stream
spring-cloud-netflix-hystrix
spring-cloud-netflix-ribbon
spring-cloud-netflix-turbine-stream
spring-cloud-netflix-turbine
spring-cloud-netflix-zuul
官方建议将以下内容作为这些模块提供的功能的替代品。

在这里插入图片描述

SpringCloud的最大特点:

使用方便。
功能齐全。
易于扩展和维护
适用于各种环境
在这里插入图片描述

微服务架构是什么

微服务架构是一种架构风格和架构思想,将系统业务按照功能拆分为更加细粒度的服务,所拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API,可以独立承担对外服务的职责。通过此种思想方式所开发的软件服务实体就是“微服务”,围绕着微服务思想构建的一系列体系结构(包括开发、测试、部署等),称之为“微服务架构”。
在这里插入图片描述

在这里插入图片描述

在上图中,部署了一系列的微服务,每个微服务都会访问自己的数据库(Database)。当这些微服务启动时,会将其信息注册到服务注册中心(Service Registry),在客户端发送请求时,请求首先会被API网关(API GateWay)拦截,API网关会读取请求数据,并从注册中心获取对应的服务信息,然后API网关会根据服务信息调用所需的微服务。

微服务架构的技术选型在微服务架构中,不同的组件(包括微服务实例、注册中心和API网关等组件)需要根据不同的情况来选取相应的技术,那么我们可以使用哪些技术呢?

微服务实例的开发

微服务的开发可以选用的框架技术有Spring团队的Spring Boot、Jboss公司的WildFly Swarm和Java EE官方的微服务框架KumuluzEE等。

服务的注册与发现

架构中服务的注册与发现功能,可以使用的技术有Spring Cloud Eureka、Apache Zookeeper、Consul、Nacos、Etcd和Dubbo等,它们都是用于服务注册和发现的技术。

负载均衡

负载均衡可以使用的技术有Spring Cloud Ribbon和Dubbo等。

服务容错

服务容错的技术可以选用Hystrix,在SpringCloud的子项目中包含Spring Cloud Hystrix。

API网关

架构中的API网关服务,可以使用的技术有Spring Cloud Zuul、Spring Reactor、Netty或NodeJS等。

分布式配置中心

分布式配置中心可以使用Spring Cloud Config、Nacos。

调试

微服务应用的测试工作可以使用Swagger。Swagger是当前最受欢迎的REST API文档生成工具之一,它提供了强大的页面测试功能来调试每个RESTful API。

部署

微服务的官方文档中推荐使用Docker来打包和部署微服务。由于Docker是一个开源的应用容器引擎,具有可移植性强、启动速度快等特点,所以适合跑一些轻量的应用.

持续集成

为了实现服务的自动化部署,我们可以通过Jenkins搭建自动化部署系统,并使用Docker进行容器化封装。在上面的技术选型中,从微服务注册与发现、负载均衡、容错、API网关和分布式配置中心组件的可选技术内,我们都看到了Spring Cloud的身影。实际上,Spring Cloud的子项目中,已经提供了构建微服务所需的所有解决方案。

在这里插入图片描述

从上图中可以看出,我们会使用Spring Boot实现微服务实例的开发,使用Spring Cloud Eureka来实现服务的注册与发现,使用Spring CloudHystrix的断路器功能来实现服务容错,使用Spring Cloud Ribbon实现服务间的负载均衡,使用Spring Cloud Zuul实现服务网关,使用SpringCloud Config作为分布式配置中心,使用Swagger对微服务进行测试,并使用Jenkins的持续集成功能来实现自动化部署。

除了Spring Cloud之外,Dubbo也是目前国内比较流行的分布式服务框架,它们都具备分布式服务治理相关的功能,都能够提供服务注册、发现、路由和负载均衡的能力。相比之下,Spring Cloud提供了更加完整的一套企业级分布式云应用的解决方案,包含了微服务组件中的方方面面,并能够结合Spring Boot、Docker实现快速开发的目的,而Dubbo只有Spring Cloud的一部分功能。由于二者具体的实现方式不同,因此并没有好坏之分。企业在选用时,需根据自身情况选择。

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

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

相关文章

Properties类读配置文件、修改配置文件

Properties类简介(1)Properties类是专门用于读写配置文件的集合类(2)配置文件的后缀名为.properties,内容格式为:# 可以用“#”作为注释 键值 键值**注意:**键值对不需要有空格,值不需要用引号一起来。默认类型是String。键、值不可以是null(3)Properties类的方法可查找api文档…

Java编程介绍以及学习路线

1.Java的起源 Java源自Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发一个分布式代码系统,这样就可以将通信和控制信息发给电冰箱、电视机、烤面包机等家用电器,对它们进行控制和信息交流。最初Green项目的工程师们准备采…

数据挖掘,计算机网络、操作系统刷题笔记48

数据挖掘,计算机网络、操作系统刷题笔记48 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…

2.11sql的增删查改

一.CURD(增删查改1.c新增insert往表里添加数据注意事项1.2.3.4.5.如果是蓝丁文的2.R1.全列查找这一步很危险2.指定列查找3.带表达式的查找4.别名5.查找结果去重:DISTINCT6 排序:ORDER BY7 条件查询:WHERE1.比较运算符WHERE条件可以使用表达式&#xff0c…

如何生成毕业论文的目录和创建模板

有粉丝同学最近在写毕业论文,其中比较让人恼火的是毕业论文的目录,折腾了几遍没弄好,想让我写个简单地教程,那就来吧。主要分为三步:第一步是从模板里面提取标题的样式,第二步是对自己的论文使用设置好的标…

DaVinci:调色版本

调色版本 Grade Version记录着片段的全部调色信息。将一种调色风格或效果,保存为一个调色版本,从而可在多个调色版本之间查看、比较、挑选或者渲染输出。调色版本类型本地版本Local Versions在没有创建新的调色版本之前,片段的调色信息默认记…

MySQl单表查询

表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar…

1dB压缩点和三阶交调点、相位差与延时

1dB压缩点与三阶交调点 要知道放大器是一个非线性系统,传输函数基本用泰勒级数表示 如果输入信号幅度很小,那么上式中2次及以上的项就可以忽略而成为小信号的情况。在许多情况下我们可以忽略3次以上的项。 如果输入一个正弦信号 1、可以看到一个单频率…

webpack-dev-server 的 host 配置 0.0.0.0

webpack-devserver 的 host 配置 0.0.0.0配置成0.0.0.0有什么意义为什么会有以上现象什么是webpack-dev-server什么是0.0.0.0什么是127.0.0.1什么是localhost配置成0.0.0.0有什么意义 假如某个vue项目的webpack配置如下: 在这module.exports {dev: {...//其余的配…

ubuntu部署quark-5

下载源代码 解压zip sudo apt-get install unzip unzip xxxxx.zip安装所需要的包 sudo apt install python2 # 查看是否配置了默认的python sudo update-alternatives --list python若没有设置,会显示: # update-alternatives: error: no alterna…

多行文本在块元素中垂直居中

单行文本垂直居中对齐 在块元素中&#xff0c;让单行文本居中&#xff0c;可以使用line-height等于块元素的高&#xff0c;即可让该单行文本垂直居中对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><me…

Java:SpringMVC的使用(1)

目录第一章、SpringMVC基本了解1.1 概述1.2 SpringMVC处理请求原理简图第二章、SpringMVC搭建框架1、搭建SpringMVC框架1.1 创建工程【web工程】1.2 导入jar包1.3 编写配置文件(1) web.xml注册DispatcherServlet(2) springmvc.xml(3) index.html1.4 编写请求处理器【Controller…

Android 进阶——Framework核心 之Binder Java成员类详解(三)

文章大纲引言一、Binder Java家族核心成员关系图二、Binder Java家族核心成员源码概述1、android.os.IBinder1.1、boolean transact(int code, Parcel data, Parcel reply, int flags) send a call to an IBinder object1.2、String getInterfaceDescriptor()1.3、boolean ping…

【宝塔部署SpringBoot前后端不分离项目】含域名访问部署、数据库、反向代理、Nginx等配置

一定要弄懂项目部署的方方面面。当服务器上部署的项目过多时&#xff0c;端口号什么时候该放行、什么时候才会发生冲突&#xff1f;多个项目使用redis怎么防止覆盖&#xff1f;Nginx的配置会不会产生站点冲突&#xff1f;二级域名如何合理配置&#xff1f;空闲的时候要自己用服…

【生成式AI】谁拥有生成式 AI 平台?

文章目录市场的价值将增长点技术栈&#xff1a;基础架构、模型和应用程序生成式 AI 应用程序留存率和差异化方面举步维艰生成式 AI 应用程序公司面临的一些问题模型提供商尚未达到大规模商业规模基础设施供应商是目前的最大赢家系统性的护城河技术栈早期阶段出现在生成人工智能…

[个人笔记] Zabbix实现自定义脚本监控Agent端

系统工程 - 运维篇 第三章 Zabbix实现自定义脚本监控Agent端系统工程 - 运维篇系列文章回顾前言实施步骤前置条件Zabbix实现自定义脚本监控Agent端Zabbix实现ssh免密登录OpenWrt服务器编写自定义sh脚本监控OpenWrt&#xff0c;zabbix测试监控功能Windows及Linux安装Zabbix-Agen…

IDEA自定义自动导包设置

JetBrains公司的intellij Idea堪称JAVA编程界的苹果&#xff0c;用户体验非常好 下面介绍一下IDEA的一个能显著提升写代码效率的非常好用的功能设置—— Auto Import 在使用IDEA编程时&#xff0c;我们会经常使用到下面两个快捷键 CTRLALTO(Windows) 自动导包快捷键CTRLALTL(W…

安全渗透测试中的一款免费开源的超级关键词URL采集工具

安全渗透测试中的一款免费开源的超级关键词URL采集工具。 #################### 免责声明&#xff1a;工具本身并无好坏&#xff0c;希望大家以遵守《网络安全法》相关法律为前提来使用该工具&#xff0c;支持研究学习&#xff0c;切勿用于非法犯罪活动&#xff0c;对于恶意使…

flutter 升级到 3.7.3 报错 Unable to find bundled Java version

大家好&#xff0c;我是 17。 Android studio 是2020 年的版本&#xff0c;有点老&#xff0c;昨天突发想法&#xff0c;升级到了 Android Studio Electric Eel 2022.1。 计划今天和明天写那个 Flutter WebView 优化的文章&#xff0c;这篇是 在 Flutter 中使用 webview_flut…

Android-Service详解

前言 Service 是长期运行在后台的应用程序组件 。 Service 是和应用程序在同一个进程中&#xff0c;所以应用程序关掉了&#xff0c;Service也会关掉。可以理解为 Service是不能直接处理耗时操作的&#xff0c;如果直接把耗时操作放在 Service 的 onStartCommand() 中&#xff…