【SpringCloud】初步认识微服务

news2024/11/26 0:50:38

文章目录

  • 1.认识微服务
    • 1.1微服务由来
    • 1.2为什么需要微服务?
  • 2.两种架构
    • 2.1.单体架构
    • 2.2.分布式架构
  • 3.微服务的特点
  • 4.SpringCloud
  • 5.总结
  • 最后说一句

1.认识微服务

随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。那么什么是微服务呢?

1.1微服务由来

微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。

1.2为什么需要微服务?

在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高。到后面引入了SOA服务化,但是,由于 SOA 早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,比如:J2EE。这导致很多企业的遗留系统很难对接,切换时间太长,成本太高,新系统稳定性的收敛也需要一些时间。最终 SOA 看起来很美,但却成为了企业级奢侈品,中小公司都望而生畏。

2.两种架构

2.1.单体架构

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aaYk1kc6-1681877649445)(新建 Markdown.assets/image-20210713202807818.png)]

单体架构的优缺点如下:

优点:

  • 架构简单
  • 部署成本低

缺点:

  • 耦合度高(维护困难、升级困难)

2.2.分布式架构

分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8cqnsTQ2-1681877649446)(新建 Markdown.assets/image-20210713203124797.png)]

分布式架构的优缺点:

优点:

  • 降低服务耦合
  • 有利于服务升级和拓展

缺点:

  • 服务调用关系错综复杂

分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:

  • 服务拆分的力度如何界定?
  • 服务之间如何调用?
  • 服务的调用关系如何管理?

人们需要制定一套行之有效的标准来约束分布式架构。

3.微服务的特点

  • 单一职责:微服务拆分力度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ggUn2rdH-1681877649447)(新建 Markdown.assets/image-20210713203753373.png)]

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。

因此,可以认为微服务是一种经过良好架构设计的分布式架构方案

其中在Java领域最引人受欢迎的就是SpringCloud提供的方案了。

4.SpringCloud

SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

其中常见的组件包括:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tuBNf7xt-1681877649447)(新建 Markdown.assets/image-20210713204155887.png)]

另外,SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rJfjzZs0-1681877649448)(新建 Markdown.assets/image-20210713205003790.png)]

5.总结

  • 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统

  • 分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝

  • 微服务:一种良好的分布式架构方案

    ①优点:拆分粒度更小、服务更独立、耦合度更低

    ②缺点:架构非常复杂,运维、监控、部署难度提高

  • SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

最后说一句

感谢大家的阅读,文章通过网络资源与自己的学习过程整理出来,希望能帮助到大家。

才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以提出来,我会对其加以修改。

在这里插入图片描述

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

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

相关文章

K8s基础10——数据卷、PV和PVC、StorageClass动态补给、StatefulSet控制器

文章目录 一、数据卷类型1.1 临时数据卷(节点挂载)1.2 节点数据卷(节点挂载)1.3 网络数据卷NFS1.3.1 效果测试 1.4 持久数据卷(PVC/PV)1.4.1 效果测试1.4.2 测试结论 二、PV、PVC生命周期2.1 各阶段工作原理…

华为机试真题 数组奇偶排序

人寄语: 准备面试华为外包德科,记录一下一些面试题; 牛客网代码提交的坑,可以看一下下面的第一道题,ide本地编译通过,牛客网死活不通过,提交代码提示:返回非0。原因分析   查询得知,结果非零的意思的代码退出的时候不是以正常的0退出的,而是非0状态,也就是代码出错…

操作系统进程线程(三)—进程状态、同步互斥、锁、死锁

Linux下同步机制 POSIX信号量:可用于进程同步,也可用于线程同步POSIX互斥锁条件变量:只能用于线程同步。 进程同步的四种方法 临界区 对临界资源进行访问。 同步和互斥 同步:多个进程因为合作产生直接制约关系,使…

教你如何正确使用ChatGPT

目录 前言 一、ChatGPT Sidebar 二、免费镜像 三、共享账号 总结 前言 ChatGPT 是一种基于深度学习技术的自然语言处理工具,能够用于文本生成、语言翻译等任务。然而,其使用需要一定的技术基础和相关知识,不少用户可能会遇到一些问题。…

从功能到自动化,4个月时间我是如何从点工进入互联网大厂的

1、知识体系化 不知不觉,入行软件测试也有五个年头。待过创业公司也待过上市公司。做过功能测试、自动化测试也做过性能测试。做过测试新人也做过测试组长。如果要是从这5年中说出最宝贵的经验,我想应该是知识体系化。那么什么是知识体系化,…

SViT 实验记录

目录 一、网络的搭建 1、Conv Stem 2、各阶段的模块 3、3X3卷积 二、前向传播过程 1、Stem 2、各阶段中的基本模块STT Block 1)CPE模块 2)STA模块 网络结构 一、网络的搭建 论文中的结构原图 基本模块 1、Conv Stem (patch_embed): PatchEmbed…

算法修炼之练气篇——练气十三层

博主:命运之光 专栏:算法修炼之练气篇 目录 题目 1023: [编程入门]选择排序 题目描述 输入格式 输出格式 样例输入 样例输出 题目 1065: 二级C语言-最小绝对值 题目描述 输入格式 输出格式 样例输入 样例输出 题目 1021: [编程入门]迭代法求…

【Selenium上】——全栈开发——如桃花来

目录索引 Selenium是什么:下载和配置环境变量:1. 基本使用:导入五个常用包:基本代码: 实例引入:声明不同浏览器对象:访问页面: Selenium是什么: Selenium是一个用于Web应…

Cesium入门之四:基于Vue3+Vite+Cesium构建三维地球场景

Cesium官网中提供了基于webpack配置Cesium的方法,但是这种方法太繁琐,而且使用webpack时程序启动没有Vite启动快,因此,这里选择vite创建vue3cesium构建项目 创建vue3项目 新建CesiumProject文件夹,在该文件夹上点击右…

clang-format configurator - 交互式创建 clang-format 格式配置文件

clang-format configurator - 交互式创建 clang-format 格式配置文件 clang-format configurator https://zed0.co.uk/clang-format-configurator/ clang-format-configurator https://github.com/zed0/clang-format-configurator Interactively create a clang-format confi…

minikube,搭建+镜像加速,坚持 3 分钟,带你玩的明明白白

一、 安装 cri-docker 下载安装 # 在 https://github.com/Mirantis/ 下载 https://github.com/Mirantis/tar -xvf cri-dockerd-0.3.1.amd64.tgzcp cri-dockerd/cri-dockerd /usr/bin/chmod x /usr/bin/cri-dockerd# 确认已安装版本 cri-dockerd --version配置启动文件 cri-do…

一篇让你精通JWT,妥妥的避坑指南~

视频教程传送门:JWT 两小时极简入门:JWT实战应用与防坑指南~_哔哩哔哩_bilibiliJWT 两小时极简入门:JWT实战应用与防坑指南~共计12条视频,包括:01.课程介绍与前置知识点、02.JWT概念、03.JWT组成等,UP主更多…

一个例子让你彻底弄懂分布式系统的CAP理论

1 推荐的文章 下面这篇知乎文章是我见过的最简单易懂的一篇,把CAP定义以及为什么AP和CP只能二选一以及场景特定下选AP还是CP作为系统目标等讲解明明白白 谈谈分布式系统的CAP 2 个人对上面这篇文章的的一些补充 可用性可以人为设置一个阈值,比如用户体…

openPOWERLINK源码(最新)在stm32单片机上的移植指南

最近着了powerlink的道,连续几晚十二点前没睡过觉。不得不说兴趣这东西劲太大了,让人睡不着。喜欢上研究POWERLINK,最新版的源码结构挺清晰的,移植并测试了嵌入式linux作为从站和电脑主站之间的通信,挺有趣的。接下来想…

路由器配置方法(固定地址)

前言 由于学校给分配了IP地址,因此我们的路由器接入的时候不能选择自动接入方式,而要选择固定地址方式。 step 1 我们首先先将路由器接上网线,这里注意一定要接wan口 因为路由器分为两个口,wan口是入口,lan口是出口…

第十二届蓝桥杯青少组国赛Python真题,包含答案

第十二届蓝桥杯青少组国赛Python真题 一、选择题 第 1 题 单选题 设sHi LanQiao,运行以下哪个选项代码可以输出“LanQiao”子串 () 答案:A 第 2 题 单选题 已知a-2021.0529,运行以下哪个选项代码可以输出“2021.05”() 答案:…

2023.05.12 C高级 day4

有m1.txt m2.txt m3.txt m4.txt,分别创建出对应的目录,m1 m2 m3 m4 并把文件移动到对应的目录下 #!/bin/bash for i in 1 2 3 4 dotouch m$i.txtmkdir m$imv m$i.txt ./m$i/m$i.txt done 运行结果 2. 使用break关键字打印九九乘法表,提示&am…

【2023/05/12】Z3

Hello!大家好,我是霜淮子,2023倒计时第7天。 Share Listen,my heart,to the whispers of the world with which it makes love to you. 译文: 静静的听,我的心呀,听那世界的低语,这是它对你求…

黑客必备工具:Hydra的完整安装和使用指南

安装Hydra 1.安装必要的依赖库 在终端中执行以下命令,安装Hydra所需的依赖库: sudo apt-get install build-essential checkinstall libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebi…

经典HTML前端面试题总结

经典HTML前端面试题总结 1. 1简述一下你对 HTML 语义化的理解?.1.2 标签上 title 与 alt 属性的区别是什么?1.3 iframe的优缺点?1.4 href 与 src?1.5 HTML、XHTML、XML有什么区别1.6 知道img的srcset的作用是什么?1.7 …