SpringCloud认识微服务

文章目录

    • 1.1.单体架构
    • 1.2.分布式架构
    • 1.3.微服务
    • 1.4.SpringCloud
    • 1.5.总结


在这里插入图片描述

随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?

微服务架构是一种架构模式,它是将单一的应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在独立的进程中,服务于服务之间采用轻量级的通信机制互相协作(通常是基于 HTTP 协议的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署不同的服务器中。另外,应当避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具进行构建。




1.1.单体架构

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

在这里插入图片描述

单体架构的优缺点如下:

优点:

  • 架构简单
  • 部署成本低

缺点:

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

1.2.分布式架构

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

在这里插入图片描述

分布式架构的优缺点:

优点:

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

缺点:

  • 服务调用关系错综复杂

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

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

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


1.3.微服务

微服务的架构特征:

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

在这里插入图片描述

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

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

但方案该怎么落地?选用什么样的技术栈?全球的互联网公司都在积极尝试自己的微服务落地方案。

其中在Java领域最引人注目的就是SpringCloud提供的方案了。


1.4.SpringCloud

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

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

其中常见的组件包括:

  • 服务注册发现
  • 服务远程调用
  • 统一配置管理
  • 统一网管路由
  • 服务链路监控

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

在这里插入图片描述

我们的版本是 Hoxton.SR10,因此对应的SpringBoot版本是2.3.x版本。


1.5.总结

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

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

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

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

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

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


微服务架构是一种通过将应用程序拆分为小型自治服务来构建软件系统的方法,每个服务都有自己的独立职责,可以单独部署、扩展和更新。微服务架构的出现是为了解决传统单块式架构在开发、部署、可维护性等方面的挑战,以提高灵活性、可扩展性和可靠性。

以下是微服务架构的一些趋势:

  • 分布式架构: 微服务架构是一种分布式架构,各个微服务之间通过网络通信进行交互,每个微服务可以独立部署在不同的服务器上,实现水平扩展。

  • 容器化与部署自动化: 微服务架构通常与容器化技术(如Docker、Kubernetes)结合使用,以实现更高效的部署和管理。容器化技术可以提供轻量级、一致的运行环境,并简化微服务的部署和扩展。

  • 自动化运维与DevOps: 微服务架构需要配合自动化运维工具和DevOps实践,以实现持续集成、持续交付和自动化测试,提高开发和部署的效率,同时确保系统的稳定性和可靠性。

  • 服务网格与API网关: 为了简化微服务之间的通信和管理,服务网格被引入来提供服务发现、负载均衡、故障恢复等功能。API网关作为微服务架构的入口,可以统一管理和调度外部请求,并提供安全性和监控功能。

  • 事件驱动架构: 在微服务架构中,采用事件驱动架构可以实现服务之间的解耦合和异步通信,使系统更加灵活和可扩展。

微服务架构正在成为软件开发的主流趋势,但在应用微服务架构时需要考虑到诸多挑战和复杂性,包括服务拆分、服务治理、跨服务通信、数据一致性等方面。因此,在实践微服务架构时需要综合考虑技术选型、团队能力、业务需求等因素,以确保其能够带来预期的好处和价值。



在这里插入图片描述



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

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

相关文章

三种方法用c语言求最大公约数以及最小公倍数

学习目标: 掌握求最大公约数(最小公倍数)的三种基本方法 学习内容: 1.一大一小取其小,剖根问底取公约 意思是从一大一小两个数当中,我们取较小的那个数(min)进行剖析,试…

【Ubuntu】解决Ubuntu 22.04开机显示器颜色(高对比度/反色)异常的问题

使用Ubuntu 22.04时强制关机了一下(make -j16把电脑搞崩了),开机后系统显示的颜色异常,类似高对比度或反色,如下图。看着很难受,字体也没办法辨认。还好之前遇到过类似的问题,应该是一个配置文件…

JavaWeb——005 请求响应 分层解耦(Postman、三层架构、IOC、DI、注解)

SpringBootWeb请求响应 这里写目录标题 SpringBootWeb请求响应前言1. 请求1.1 Postman1.1.1 介绍1.1.2 安装 1.2 简单参数1.2.1 原始方式1.2.2 SpringBoot方式1.2.3 参数名不一致 1.3 实体参数1.3.1 简单实体对象1.3.2 复杂实体对象 1.4 数组集合参数1.4.1 数组1.4.2 集合 1.5 …

创建型设计模式 - 建造者设计模式 - JAVA

建造者设计模式 一. 简介二. 使用场景分析三. 代码案例3.1 创建ComputerBuilder 类3.2 修改子类3.3 修改工厂3.4 测试 四. 建造者模式案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都…

探索 SPA 与 MPA:前端架构的选择与权衡

查看本专栏目录 关于作者 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas&#x…

Python 实现 OSC 指标计算 (变动速率线):股票技术分析的利器系列(14)

Python 实现 OSC 指标计算 (变动速率线):股票技术分析的利器系列(14) 介绍算法公式 代码rolling函数介绍核心代码计算OSC 完整代码 介绍 OSC(变动速率线)是一种技术指标,通过计算价格的变动速率…

飞行员还是电话接线员?软件开发人员消亡的预测是荒谬的

Stability AI 首席执行官 Emad Mostaque最近因其大胆的预测“五年内将不再有程序员”而成为头条新闻。虽然此类声明在社交媒体上很受欢迎,但它们并不能准确反映创造力在复杂软件开发中的作用的现实。是的,人工智能将深刻改变软件工程行业,但这…

Spring的定时任务不生效、不触发,一些可能的原因,和具体的解决方法。

1 . 未在启动类上加 EnableScheduling 注解 原因:未在Spring Boot应用主类上添加EnableScheduling注解或未在XML配置文件中配置定时任务的启用。解决方法:确保在应用的配置类上添加EnableScheduling注解,启用定时任务。 2 . cron 表达式书写…

R语言使用dietaryindex包计算NHANES数据多种健康饮食指数 (HEI等)(1)

健康饮食指数 (HEI) 是评估一组食物是否符合美国人膳食指南 (DGA) 的指标。Dietindex包提供用户友好的简化方法,将饮食摄入数据标准化为基于指数的饮食模式,从而能够评估流行病学和临床研究中对这些模式的遵守情况,从而促进精准营养。 该软件…

自动从金蝶取数,做BI报表的工具,快来长见识!

技术越进步,分析工具越智能,如今做数据分析、数据可视化,不仅能连接金蝶系统,更能直接从金蝶ERP中取数做分析,自动输出BI数据可视化分析报表。这就是奥威-金蝶BI方案。 是骡子是马,牵出来遛遛就知道&#…

【C++】拿下! C++中的内存管理

内存管理 1 C 的内存分布2 C语言的内存管理3 C的内存管理3.1 内置类型操作3.2 自定义类型操作 4 operator new与operator delete函数(重点)5 new和delete的实现原理5.1 内置类型5.2 自定义类型new的原理delete的原理new T[ N ] 的原理lete[]的原理 6 总结…

day02_前后端环境搭建(前端工程搭建,登录功能说明,后端项目搭建)

文章目录 1. 软件开发介绍1.1 软件开发流程1.2 角色分工1.3 软件环境1.4 系统的分类 2. 尚品甄选项目介绍2.1 电商基本概念2.1.1 电商简介2.1.2 电商模式B2BB2CB2B2CC2BC2CO2O 2.2 业务功能介绍2.3 系统架构介绍2.4 前后端分离开发 3. 前端工程搭建3.1 Element-Admin简介3.2 El…

idea打包报错,clean、package报错

一、idea在打包时,点击clean或package报错如下: Error running ie [clean]: No valid Maven installation found. Either set the home directory in the configuration dialog or set the M2_HOME environment variable on your system. 示例图&#xf…

深入理解分库、分表、分库分表

前言 分库分表,是企业里面比较常见的针对高并发、数据量大的场景下的一种技术优化方案,所谓"分库分表",根本就不是一件事儿,而是三件事儿,他们要解决的问题也都不一样,这三个事儿分别是"只…

C语言:字符函数 字符串函数 内存函数

C语言:字符函数 & 字符串函数 & 内存函数 字符函数字符分类函数字符转换函数tolowertoupper 字符串函数strlenstrcpystrcatstrcmpstrstrstrtok 内存函数memcpymemmovememsetmemcmp 字符函数 顾名思义,字符函数就是作用于字符的函数,…

【MySQL | 第一篇】undo log、redo log、bin log三者之间的区分?

undo log、redo log、bin log三者之间的区分? 从 产生的时间点、日志内容、用途 三方面展开论述即可 1.undo log——撤销日志 时间点:事务开始之前产生,根据当前版本的数据生成一个undo log,也保存在事务开始之前 作用&#xf…

【亚马逊云新春特辑②】构生成式 AI 文生图工具之借助ControlNet进行AI绘画创作【生成艺术二维码】

文章目录 1.1 生成艺术二维码1)制作基础二维码2)确定艺术风格3)生成艺术二维码4)结果优化 AIGC 的可控性是它进入实际生产最关键的一环。在此之前,许多用户希望 AI 生成的结果尽可能符合要求,但都不尽如人意…

linux centos7.9改dns和ip

vi /etc/sysconfig/network-scripts/ifcfg-ens32 :wq后 重启网络服务 systemctl restart network —————————————————————————— 篇外话题 软件下载 xshell可以从腾讯软件中心下载

使用 C++23 协程实现第一个 co_yield 同步风格调用接口--Qt计算排列组合

上一篇介绍了 co_await 的例子。与 co_await 类似,在C23的协程特性里, co_yield 用于从协程执行过程中暂停,并返回值。这个功能乍一听起来很奇怪,网上的例子大多是用一个计数器来演示多次中断协程函数,返回顺序的计数值…

【MySQL】DCL

DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 1. 管理用户 在MySQL数据库中,DCL(数据控制语言)是用来管理用户和权限的语句集合。通过DCL语句,可以创建、修改、删…