【入门SpringCloud(一)】什么是SpringCloud?

一、概述

集群(Cluster):同一种软件服务的多个服务节点共同为系统提供服务过程,称之为该软件服务集群。

分布式(Distribute):分布式是一种系统架构,是将系统中的不同组件分布在不同的计算机上执行,分布式系统是由多个独立计算机节点组成的系统,分布式系统的设计需要考虑许多重要的因素,例如通信方式、数据的一致性。因此分布式系统的设计和实现需要使用适当的技术和工具,例如分布式算法、消息队列、负载均衡等等。不同的软件集群共同为一个系统提供服务,这个系统则称之为分布式系统。

微服务(Micro Service):微服务是一种架构,这种架构是将单个的整体应用程序分割成更小的项目关联的独立的服务。一个服务通常实现一组独立的特性或功能,包含自己的业务逻辑和适配器(有点像将应用程序强遵循单一职责原则的感觉)。各个微服务之间的关联通过暴露 api 来实现。这些独立的微服务不需要部署在同一个虚拟机,同一个系统和同一个应用服务器中。

为什么微服务?

单体应用

在这里插入图片描述

# 1. 优点
-	单体架构模式在项目初期很小的时候开发方便,测试方便,部署方便,运行良好
# 2. 缺点
-	应用随着时间的推进,加入的功能越来越多,最终会变得巨大,一个项目中很有可能数百万行的代码,互相之间繁琐的jar包。
-	久而久之,开发效率低,代码维护困难。
-	还有一个如果想整体应用采用新的技术,新的框架或者语言,那是不可能的。
-	任何模块的漏洞或者错误都会应用这个应用,降低系统的可靠性。

微服务架构应用

在这里插入图片描述

# 1. 优点
-	将服务拆分成多个单一职责的小的服务,进行单独部署,服务之间通过网络进行通信。
-	每个服务应该有自己单独的管理团队,高度自治
-	服务各自有自己的单独的职责,服务之间松耦合,避免因一个模块的问题导致服务崩溃
# 2. 缺点
-	开发人员要处理分布式系统的复杂性
-	多服务运维难度,随着服务的增加,运维的压力也在增大
-	服务治理 和 服务监控 关键

Spring Cloud 就是用来处理微服务架构中可能会出现的问题的,它内部有各种各样的组件,各个组件就是用来处理这些问题的。所以可以说Spring Cloud是一种处理微服务架构应用的工具(框架)。

架构的演变过程

在这里插入图片描述

  1. 单一架构(All In One)

起初当网站流量很小时,将所有功能都写在一个应用里面,对整个应用进行部署,以减少部署节点和成本。对于这个架构简化增删改查的工作量的数据访问框架(ORM)是关键。

  1. 垂直架构

当访问量逐渐增大,单一应用增加器带来的加速度越来越小,提升效率的方法之一是将应用拆分成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

  1. 分布式服务架构(Tomcat集群、MySQL集群、Redis集群)

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务架构(RPC)是关键。

RPC:远程过程调用 作用:服务间通信一种手段

OSI七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

  1. SOA 面向服务体系架构 微服务(Micro Service)

当服务越来越多,容量的评估,小服务的资源的浪费等问题逐渐出现,此时需要增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高及其利用率的资源调度和治理中心(SOA)是关键。

微服务的解决方案

在这里插入图片描述

a. 国内的阿里系SpringBoot + Dubbo + Zookeeper	最早期b. Spring Cloud 技术栈Spring Cloud netflix	
最早期(基于Netflix公司开源的组件进行封装,提供了微服务一栈式解决方案)Spring Cloud  Spring	
自己封装的服务解决方案(在Spring Cloud Netflix基础上封装了阿里巴巴的微服务的解决方案)Spring Cloud  alibaba	
阿里巴巴解决方案(目前Spring官方趋势整在逐渐吸收Netflix组件的精华,并在此基础进行二次封装优化,打造Spring专有的解决方案)

二、SpringCloud简介

Spring Cloud 是 Java 语言的微服务框架(微服务是一种思想,是一种架构,而Spring Cloud是对它的实现,它可以用来管理微服务的方方面面),它依赖于 Spring Boot,有快速开发、持续交付和容易部署等特点。Spring Cloud组件很多,涉及微服务的方方面面,方便我们去管理。

Spring Cloud 在开发部署上继承了 Spring Boot 的一些优点,提高其在开发和部署上的效率。**Spring Cloud 的首要目标就是通过提供一系列开发组件和框架,帮助开发者迅速搭建一个分布式的微服务系统。**Spring Cloud 是通过包装其他技术框架来实现的,例如包装开源的 Netflix OSS 组件,实现了一套通过基于注解、Java 配置和基于模版开发的微服务框架。Spring Cloud 提供了开发分布式微服务系统的一些常用组件,例如服务注册和发现、配置中心、熔断器、远程调用、智能路由、微代理、控制总线、全局锁、分布式会话等等。

学习网址:

Spring Cloud官方文档地址

Spring Cloud Alibaba 的文档

版本对应关系可以在对应文档查看。

三、SpringCloud常用组件表

在这里插入图片描述

服务的注册和发现。(eureka、nacos、consul)

服务的负载均衡。(ribbon、dubbo)

服务的相互调用。(openFeign、dubbo)

服务的容错。(hystrix、sentinel)

服务网关。(gateway、zuul)

服务配置的统一管理。(config-server、nacos、apollo)

服务的消息总线。(bus)

服务安全组件。(Security,Oauth2.0)

服务监控。(admin)(jvm)

链路追踪。(sleuth+zipkin)

微服务架构风格图(来自动力节点)

img

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

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

相关文章

Mac 安装配置adb命令环境(详细步骤)

一、注意:前提要安装java环境。 因为android sdk里边开发的一些包都是依赖java语言的,所以,首先要确保已经配置了java环境。 二、在Mac下配置android adb命令环境,配置方式如下: 1、下载并安装IDE (andr…

springboot + (mysql/pgsql) + jpa 多数据源(不同类数据源)

配置文件: spring:datasource:primary:jdbc-url: jdbc:mysql://host:3306/数据库?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&failOverReadOnlyfalse&serverTimezoneAsia/Shanghai&zeroDateTimeBehaviorconvertToNullusername…

LLaMA系列 | LLaMA和LLaMA-2精简总结

文章目录 1、LLaMA1.1、模型结构1.2、训练方式1.3、结论 2、LLaMA-22.1、相比LLaMA1的升级2.3、模型结构2.3.1、MHA, MQA, GQA区别与联系 2.4、训练方式 1、LLaMA 🔥 纯基座语言模型 《LLaMA: Open and Efficient Foundation Language Models》:https:/…

Unity3d C#快速打开萤石云监控视频流(ezopen)支持WebGL平台,替代UMP播放视频流的方案(含源码)

前言 Universal Media Player算是视频流播放功能常用的插件了,用到现在已经不知道躺了多少坑了,这个插件虽然是白嫖的,不过被甲方和领导吐槽的就是播放视频流的速度特别慢,可能需要几十秒来打开监控画面,等待的时间较…

机器学习笔记 - 什么是keras-core?

一、keras-core 简而言之,Keras Core 是 Keras API 的新多后端实现,支持 TensorFlow、JAX 和 PyTorch。 可以使用如下命令简单安装 pip install keras-core Keras 是一个用 Python 编写的用于深度学习的用户友好工具。它旨在与 AI 领域的另一个主要参与者TensorFlow一起使用…

Spring学习笔记之spring概述

文章目录 Spring介绍Spring8大模块Spring特点 Spring介绍 Spring是一个轻量级的控制反转和面向切面的容器框架 Spring最初的出现是为了解决EJB臃肿的设计,以及难以测试等问题。 Spring为了简化开发而生,让程序员只需关注核心业务的实现,尽…

SpringBoot启动流程及自动配置

SpringBoot启动流程源码: 1、启动SpringBoot启动类SpringbootdemoApplication中的main方法。 SpringBootApplication public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplication.class, …

ubuntu 配置NAT配置内网网关服务器

本次完全参考 Ubuntu20.04服务器开启路由转发让局域网内其他电脑通过该服务器连接外网 ubuntu 官方防火墙文档 Security - Firewall 本人从前的操作 Ubuntu 18.04 通过 ufw route 配置网关服务器 网关 配置内网DNS 服务器 背景知识 从前总认为既然UFW简化了 iptables &…

Eureka 学习笔记2:客户端 DiscoveryClient

版本 awsVersion ‘1.11.277’ DiscoveryClient # cacheRefreshTask // 配置shouldFetchRegistry if (clientConfig.shouldFetchRegistry()) {// 配置client.refresh.intervalint registryFetchIntervalSeconds clientConfig.getRegistryFetchIntervalSeconds();// 配置expB…

深入理解Zookeeper分布式锁的概念及原理

深入理解Zookeeper分布式锁的概念及原理 1. 引言 在分布式系统中,锁是一种重要的机制,用于协调多个节点之间的并发访问。在大规模分布式系统中,实现高效且可靠的分布式锁是一个挑战。本篇博客将深入探讨Zookeeper分布式锁的概念及其原理&am…

HTML+CSS+JavaScript:轮播图的自动播放、手动播放、鼠标悬停暂停播放

一、需求 昨天我们做了轮播图的自动播放,即每隔一秒自动切换一次 今天我们增加两个需求: 1、鼠标点击向右按钮,轮播图往后切换一次;鼠标点击向左按钮,轮播图往前切换一次 2、鼠标悬停在轮播图区域中时,…

Verilog语法学习——LV5_位拆分与运算

LV5_位拆分与运算 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 题目描述: 现在输入了一个压缩的16位数据,其实际上包含了四个数据…

Layui网页模板

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>会员管理</title><link href"layui/c…

JAVA IO 的 Windows、Linux文件路径差异

因为文件路径是字符串拼接的&#xff0c;所以之前的路径是这样 D:\pics/bankslip/2023/08/01\fe68a2c16ecb498f89a88f9472a1361e.png /root/temp/bankslip/2023/08/01\fe68a2c16ecb498f89a88f9472a1361e.png 左斜杠、右斜杠都有的情况 那么在windows中这样的路径是正常的&#…

ComPDFKit 转档SDK OCR表格识别功能

我们非常高兴地宣布&#xff0c;适用于 Windows、iOS、Android 和服务器的 ComPDFKit 转档SDK 1.8.0 现已发布&#xff01;在该版本中&#xff0c;OCR 功能支持了表格识别&#xff0c;优化了OCR文字识别率。PDF to HTML 优化了html 文件结构&#xff0c;使转换后的 HTML 文件容…

css 四角边框移动效果

块是长宽相等的正方形&#xff0c;大小浏览器分辨率变化而变化利用平移变化translate来时实现边框到达鼠标划到的块&#xff0c;坐标是鼠标滑到块的offsetLeft和offsetTop <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&quo…

誉天程序员-SpringMVC回顾:五种接参方式

1、GET查询串传参&#xff1a; 2、RESTFul形式传参&#xff08;参数少&#xff09; 3、form表单传参 4、混合传参&#xff0c;查询串表单 5、终极王者&#xff0c;json传参&#xff08;参数多&#xff09; package com.book.admin.controller;import com.book.admin.entity.Us…

从互联网到云时代,Apache RocketMQ 是如何演进的?

作者&#xff1a;隆基 2022 年&#xff0c;RocketMQ 5.0 的正式版发布。相对于 4.0 版本而言&#xff0c;架构走向云原生化&#xff0c;并且覆盖了更多业务场景。 消息队列演进史 操作系统、数据库、中间件是基础软件的三驾马车&#xff0c;而消息队列属于最经典的中间件之一…

用python需要下载软件吗,python需要安装哪些软件

大家好&#xff0c;本文将围绕安装python需要什么样的电脑配置展开说明&#xff0c;python需要安装哪些软件是一个很多人都想弄明白的事情&#xff0c;想搞清楚用python需要下载软件吗需要先了解以下几个事情。 编程这东西很神奇。对于那些知道如何有用和有趣的这个工具,对于Xi…

Windows 实例如何开放端口

矩池云 Windows 实例相比于 Linux 实例&#xff0c;除了在租用机器的时候自定义端口外&#xff0c;还需要在 Windows防火墙中添加入口规则。接下来将教大家如何设置 Windows 防火墙&#xff0c;启用端口。 租用成功后通过 RDP 链接连接服务器&#xff0c;然后搜索防火墙&#x…