当前位置: 首页 > news >正文

Spring Cloud之微服务

目录

微服务

微服务架构

微服务架构与单体架构

特点

框架

总结

SpringCloud

常用组件

与SpringBoot关系

版本


微服务

微服务:从字面上理解即:微小的服务;

微小:微服务体积小,复杂度低,一个微服务通常只提供单个业务功能的服务。

微服务架构

        微服务架构是一种系统架构的设计风格。微服务架构提倡将一个单一的应用程序拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间使用轻量级通信机制(通常是 HTTP RESTFUL API)进行通讯;

        小型服务都是围绕着某个特定的业务进行构建的,每一个服务只专注于完成一项任务并把它做好 

微服务架构与单体架构

        单体架构是微服务架构出现之前业界最经典的软件架构类型,许多早期的项目采用的也都是单体架构。单体架构将应用程序中所有业务逻辑都编写在同一个工程中,最终经过编译、打包,部署在一台服务器上运行。

特点

1.独立性:每个微服务都是相对独立的,拥有自己的代码库、数据库和团队

2.模块化:微服务架构将应用程序拆分为若干个小型服务,每个服务都是一个模块。这种模块化可以让开发人员更加专注于单一功能点的开发,提高应用程序的可维护性和可扩展性

3.松耦合:微服务之间采用API进行通信,服务之间的耦合度较低

4.可伸缩性:由于每个微服务都是独立的,可以按需进行水平扩展,从而提高整体应用程序的性能和可伸缩性

5.容错性:由于微服务之间是相对独立的,当某个服务出现故障时,不会影响整个应用程序的运行

6.简化部署:每个微服务可以独立部署,因此可以更快速地推出新功能和更新,同时也可以更容易地完成部署和回滚操作

7.原子性:微服务应该执行单一的业务功能,这样可以保证服务的原子性和可复用性

8.运维简化:由于微服务架构将应用程序拆分成若干小型服务,因此可以更轻松地进行监控和故障排除,提高运维效率

框架

Spring Cloud:它能够基于 REST 服务来构建服务,帮助架构师构建出一套完整的微服务技术生态链。

Dropwizard:用于开发高性能和 Restful 的 Web 服务,对配置、应用程序指标、日志记录和操作工具都提供了开箱即用的支持。

Restlet: 该框架遵循 RST 架构风格,可以帮助 Java 开发人员构建微服务。

Spark:最好的 Java 微服务框架之一,该框架支持通过 Java 8 和 Kotlin 创建微服务架构的应用程序。

Dubbo:由阿里巴巴开源的分布式服务治理框架。

总结

        微服务架构在解决应用程序扩展、维护和升级等方面具有明显的优势。但微服务架构同时也带来了部署、运维、网络通信、数据一致性和安全性等方面的挑战,需要在实际应用中根据需求灵活选择。

SpringCloud

Spring Cloud 是一款基于 Spring Boot 实现的微服务框架。

常用组件

与SpringBoot关系

        Spring Boot 和 Spring Cloud 都是 Spring 大家族的一员,它们在微服务开发中都扮演着十分重要的角色,两者之间既存在区别也存在联系

1.Spring Boot 和 Spring Cloud 分工不同;Spring Boot 是一个基于 Spring 的快速开发框架,它能够帮助开发者迅速搭 Web 工程。在微服务开发中,Spring Boot 专注于快速、方便地开发单个微服务;Spring Cloud 专注于全局微服务的协调和治理工作,是微服务架构下的一站式解决方案

2.Spring Cloud 是基于 Spring Boot 实现的

3.Spring Boot 和 Spring Cloud 依赖项数量不同;Spring Boot 属于一种轻量级的框架,构建 Spring Boot 工程所需的依赖较少;Spring Cloud 是一系列微服务框架技术的集合体,它的每个组件都需要一个独立的依赖项

4.Spring Cloud 不能脱离 Spring Boot 单独运行;Spring Boot 不需要 Spring Cloud,就能直接创建可独立运行的工程或模块;Spring Cloud 是基于 Spring Boot 实现的,它不能独立创建工程或模块,更不能脱离 Spring Boot 独立运行

虽然 Spring Boot 能够用于开发单个微服务,但它并不具备管理和协调微服务的能力,因此它只能算是一个微服务快速开发框架,而非微服务框架

版本

Spring Cloud 包含了许多子项目(组件),这些子项目都是独立进行内容更新和迭代的,各自都维护着自己的发布版本号

相关文章:

Spring Cloud之微服务

目录 微服务 微服务架构 微服务架构与单体架构 特点 框架 总结 SpringCloud 常用组件 与SpringBoot关系 版本 微服务 微服务:从字面上理解即:微小的服务; 微小:微服务体积小,复杂度低,一个微服…...

Linux命令(104)之date

linux命令之date 1.date介绍 linux命令date用来设置和显示系统日期和时间 2.date用法 date [参数] date参数 参数说明-s修改并设置时间-d可以显示以前和未来的时间%H小时%M分钟%S秒%X等价于%H %M %S%F显示当前所有时间属性%Y完整年份%m月%d日%A星期的全称 3.实例 3.1.当前…...

微信小程序投票管理系统:打造智能、便捷的投票体验

前言 随着社交网络的兴起和移动互联网的普及,人们对于参与和表达意见的需求越来越强烈。在这个背景下,微信小程序投票管理系统应运而生。它为用户提供了一个智能、便捷的投票平台,使用户可以轻松创建和参与各种类型的投票活动。本文将详细介…...

【算法训练-动态规划 五】【二维DP问题】编辑距离

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【动态规划】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...

Windows电脑如何录制电脑桌面?

如果你使用的电脑是Windows系统,那你是不是想知道如何在Windows电脑上录制电脑桌面? 本文以win10为例,好消息是,Windows 10电脑自带录屏工具,你可以直接使用此录屏工具轻松录制视频,而无需下载其他第三方软…...

ubuntu18.04双系统安装(2023最新最详细)以及解决重启后发现进不了Ubuntu问题

目录 一.简介 二.安装教程 1.首先确定了电脑的引导格式是UEFIGPT还是BIOSMBR 2. 使用Windows磁盘管理划分足够的磁盘空间 3. 开始安装 三.重启后发现自动进入WIN10系统了,进不了Ubuntu? 一.简介 Linux是一种自由和开放源代码的操作系统内核&#x…...

Springboot + screw 数据库快速开发文档

1、方式1 引入依赖 <dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.5</version></dependency> /*** 文档生成 Springboot2.X screw数据库快速开发文档&#xff08;74&…...

2 第一个Go程序

概述 在上一节的内容中&#xff0c;我们介绍了Go的前世今生&#xff0c;包括&#xff1a;Go的诞生、发展历程、特性和应用领域。从本节开始&#xff0c;我们将正式学习Go语言。Go语言是一种编译型语言&#xff0c;也就是说&#xff0c;Go语言在运行之前需要先进行编译&#xff…...

Leetcode—2678.老人的数目【简单】

2023每日刷题&#xff08;八&#xff09; Leetcode—2678.老人的数目 int countSeniors(char ** details, int detailsSize){ int ans 0; int i; int tens 0; int ones 0; for(i 0; i < detailsSize; i) { tens ((details i) 11) - ‘0’; ones ((details i) 12)…...

解决 /bin/bash^M: bad interpreter: No such file or directory

问题描述 linux 系统中知行*.sh 文件报/bin/bash^M: bad interpreter: No such file or directory 原因&#xff1a; .sh文件是在windows系统编写的&#xff0c;在linux执行就有问题 解决过程 转化下格式执行如下命令 # dos2unix app.sh 结果bash: dos2unix: command not …...

Spring Cloud之服务注册与发现(Eureka)

目录 Eureka 介绍 角色 实现流程 单机构建 注册中心 服务提供者 服务消费者 集群搭建 注册中心 服务提供者 自我保护机制 原理分析 Eureka 介绍 Eureka是spring cloud中的一个负责服务注册与发现的组件&#xff0c;本身是基于REST的服务&#xff0c;同时还提供了…...

Rust-后端服务调试入坑记

这篇文章收录于Rust 实战专栏。这个专栏中的相关代码来自于我开发的笔记系统。它启动于是2023年的9月14日。相关技术栈目前包括&#xff1a;Rust&#xff0c;Javascript。关注我&#xff0c;我会通过这个项目的开发给大家带来相关实战技术的分享。 如果你关注过我的Rust 实战里…...

Flask四种配置方式

Flask是一个轻量级的Python Web框架&#xff0c;被广泛应用于Web开发中。Flask提供了多种配置方式&#xff0c;可以根据不同的需求和场景进行选择。本篇博客将介绍Flask的几种配置方式&#xff0c;并提供相关代码示例。 Flask应用程序的配置对象 在Flask中&#xff0c;应用程序…...

基于nodejs+vue备忘记账系统mysql

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…...

使用Vscode创建一个C_Hello程序

Vscode用来学习C语言语法确实很方便。问题是安装好了&#xff0c;不会用&#xff0c;或编译失败&#xff0c;也是常有的事情&#xff0c;其中一个原因就是不会创建工作区。下面介绍使用Vscode创建一个C语言工作区。有时候看着很简单&#xff0c;时间久了&#xff0c;我竟然忘记…...

【31】c++设计模式——>模板方法模式

模板方法模式通常由以下几个部分组成&#xff1a; 1.抽象基类&#xff08;Abstract Base Class&#xff09;&#xff1a;抽象基类定义了一个算法的骨架&#xff0c;其中包含了模板方法和一些基本操作方法。模板方法在抽象基类中被声明为虚函数&#xff0c;它定义了算法的流程&…...

docker和K8S环境xxl-job定时任务不执行问题总结

文章目录 xxl-job 任务调度原理1 问题1 时区导致的任务没有执行的问题解决方案 2 执行器注册和下线导致的问题&#xff08;IP问题&#xff09;解决方案 3 问题3 调度成功&#xff0c;但是执行器的定时任务未执行4 问题4 数据库性能问题&#xff0c;导致查询任务和操作日志数据卡…...

【Leetcode】218.天际线问题(Hard)

一、题目 1、题目描述 城市的 天际线 是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回 由这些建筑物形成的 天际线 。 每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, righti, heighti] 表示: l…...

try catch finally代码块的作用

try-catch-finally 代码块是用于处理程序中可能发生的异常情况的一种结构。它的作用在于&#xff1a; try 代码块中的代码用于包含可能会引发异常的代码。catch 代码块用于捕获并处理 try 代码块中抛出的异常。可以通过 catch 代码块中的逻辑来处理异常&#xff0c;如打印错误…...

【Sentinel】Sentinel簇点链路的形成

说明 一切节点的跟是 machine-root&#xff0c;同一个资源在不同链路会创建多个DefaultNode&#xff0c;但是在全局只会创建一个 ClusterNode machine-root/\/ \EntranceNode1 EntranceNode2/ \/ \DefaultNode(nodeA) DefaultNode(nodeA)|…...

CanMV K230 家用电器电流识别 预告

数据采集&#xff1a;家用电器电流采集 数据分析&#xff1a;电流波形与特征 识别方法&#xff1a; 硬件设置&#xff1a; 算法部署&#xff1a; 电器可能包括&#xff1a;手机充电器、电脑、电视、热水壶等...

别再乱用sudo了!麒麟KYLINOS下用ACL实现安全的精细化权限控制

麒麟KYLINOS权限管理革命&#xff1a;用ACL替代sudo的精细化控制实战 在麒麟KYLINOS操作系统中&#xff0c;许多管理员习惯性地使用sudo或简单粗暴的chmod 777来解决权限问题&#xff0c;这种"一刀切"的做法实际上为系统安全埋下了重大隐患。想象一下这样的场景&…...

别再为交叉项头疼了!手把手教你用MATLAB时频工具箱搞定WVD、PWVD和SPWVD

别再为交叉项头疼了&#xff01;手把手教你用MATLAB时频工具箱搞定WVD、PWVD和SPWVD 信号处理工程师和研究者们常常面临一个棘手问题&#xff1a;如何从复杂的非平稳信号中提取清晰的时频特征&#xff1f;Wigner-Ville分布&#xff08;WVD&#xff09;系列方法作为经典解决方案…...

Perplexity财经数据查询失效的4个致命信号,第3个95%用户仍在踩坑——附权威校验脚本(Python版)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity财经数据查询失效的4个致命信号&#xff0c;第3个95%用户仍在踩坑——附权威校验脚本&#xff08;Python版&#xff09; 信号一&#xff1a;HTTP状态码非200但响应体含“success”: true Perplexit…...

生态数据分析避坑指南:你的Mantel检验结果可靠吗?聊聊距离算法选择与共线性控制

生态数据分析避坑指南&#xff1a;你的Mantel检验结果可靠吗&#xff1f;聊聊距离算法选择与共线性控制 生态数据分析中&#xff0c;Mantel检验作为一种常用的空间相关性分析方法&#xff0c;被广泛应用于物种分布与环境因子关系的研究。然而&#xff0c;许多研究者在实际操作中…...

3步实现B站缓存视频智能转换:高效保存珍贵学习资源

3步实现B站缓存视频智能转换&#xff1a;高效保存珍贵学习资源 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站缓存视频无法在其他…...

Perplexity到底值不值得替代搜索引擎?37小时实测+127次对比查询,答案出人意料

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity到底值不值得替代搜索引擎&#xff1f;37小时实测127次对比查询&#xff0c;答案出人意料 实测设计与数据采集方法 我们构建了覆盖技术文档、学术论文、实时新闻、API调试、开源项目溯源五大…...

消息平台接入实战:Hermes Agent 实现微信/钉钉日常任务自动化的 4 步配置

1. 微信/钉钉自动化不是“接个API就完事”,而是上下文边界的重新定义 大多数人第一次配置 Hermes Agent 接入微信或钉钉时,会下意识打开官方文档,复制粘贴几行 webhook 配置,跑通一条“收到消息→回复‘你好’”的 demo 就以为大功告成。我试过三次——第一次在测试环境里…...

GX Works3实战:基于TCP+SLMP协议与三菱FX5U的工业互联配置详解

1. 从零开始搭建FX5U通信环境 第一次接触三菱FX5U系列PLC时&#xff0c;我被它小巧的机身和强大的性能惊艳到了。这款PLC虽然体积只有传统Q系列的一半大小&#xff0c;但处理能力却提升了两倍以上。不过在实际项目中&#xff0c;最让我头疼的就是通信配置问题——特别是从老项…...

利用Taotoken CLI工具一键配置多开发环境与团队协作密钥

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken CLI工具一键配置多开发环境与团队协作密钥 基础教程类&#xff0c;指导团队负责人或希望简化配置流程的开发者使用Ta…...