微服务架构概述

news2025/1/19 16:59:33

微服务架构概述

  • 一、架构演变
    • 1.1 单体架构
    • 1.2 分布式架构
    • 1.3 微服务
  • 二、SpringCloud
    • 2.1 简介
    • 3.2 痛点
  • 三、SpringCloud Alibaba
    • 3.1 简介
    • 3.2 优点
    • 3.3 主要组件
    • 3.4 版本对应


一、架构演变

1.1 单体架构

讲业务的所有功能集中在一个项目中开发,打成一个包部署。
优点:架构简单,部署成本高。
缺点:耦合度高。
在这里插入图片描述

1.2 分布式架构

根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,成为一个服务。
优点:降低耦合度,有利于服务升级拓展。
缺点:运营成本增加了,架构复杂难度大。需要考虑的问题变多。

  • 服务拆分的粒度
  • 服务集群地址的维护
  • 服务之间如何实现远程调用
  • 服务健康状态的感知

在这里插入图片描述

1.3 微服务

微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。面向服务:微服务对外暴露业务接口。
  • 自治:团队独立、技术独立、数据独立、部署独立。
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。

微服务技术栈
在这里插入图片描述
微服务技术对比
在这里插入图片描述

二、SpringCloud

2.1 简介

SpringCloud是目前国内使用最广泛的微服务框架。官网地址: https://spring.io/projects/spring-cloud,
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:
在这里插入图片描述

3.2 痛点

  • SpringCloud部分组件停止维护和更新,给开发带来不便;
  • SpringCloud部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制;
  • SpringCloud配置复杂,难以上手,部分配置差别难以区分和合理应用。

三、SpringCloud Alibaba

3.1 简介

  • Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。中文文档:GitHub

  • 依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

3.2 优点

  • 阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用;
  • 成套的产品搭配完善的可视化界面给开发运维带来极大的便利;
  • 搭建简单,学习曲线低。

3.3 主要组件

  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

3.4 版本对应

  • 2022.x分之对应的是 Spring Cloud 2022 与 Spring Boot 3.0.x,最低支持 JDK 17。
  • 2021.x 分支对应的是 Spring Cloud 2021 与 Spring Boot 2.6.x,最低支持 JDK 1.8。
  • 2020.0 分支对应的是 Spring Cloud 2020 与 Spring Boot 2.4.x,最低支持 JDK 1.8。
  • 2.2.x 分支对应的是 Spring Cloud Hoxton 与 Spring Boot 2.2.x,最低支持 JDK 1.8。
  • greenwich 分支对应的是 Spring Cloud Greenwich 与 Spring Boot 2.1.x,最低支持 JDK 1.8。
  • finchley 分支对应的是 Spring Cloud Finchley 与 Spring Boot 2.0.x,最低支持 JDK 1.8。
  • 1.x 分支对应的是 Spring Cloud Edgware 与 Spring Boot 1.x,最低支持 JDK 1.7。

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

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

相关文章

SaaS架构实现理论(四)可伸缩多租户

目录1.伸缩性(Scalable)的概念2.应用服务器层的水平扩展2.1基于Session复制的水平扩展方式2.2基于Session Sticky的水平扩展方式2.3基于Cache的集中式Session实现水平扩展2.4三种水平扩展方式的比较3.数据库的水平扩展3.1数据库的垂直切分3.2数据库的读写…

ArcGIS基础实验操作100例--实验93插值模型的精度分析

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 空间分析篇--实验93 插值模型的精度分析 目录 一、实验背景 二、实验数据 三、实验步骤 (…

ESP-IDF:使用基本类型,指针,引用,指针的指针,指针的引用作为函数参数的几个例程

1.例程: /下面是使用基本类型,指针,引用,指针的指针,指针的引用作为函数参数的几个例程/ // 值拷贝 int add10(int a) { a 10; return a; } // 指针传参,是一种地址拷贝 void add101(int *a) { // int *…

(11)QWidget的使用(two)

目录 设置窗口图标和标题 设置窗口图标以及获取图标 设置窗口标题以及获取标题 窗口标题的特殊操作 设置窗口的状态 设置窗口的不透明度 设置窗口的状态 使用封装好的函数显示窗口 设置窗口标志 窗口标志简介 设置窗口图标和标题 设置窗口图标以及获取图标 void se…

Java在远程方法调用中运用反射机制

本案例将介绍反射机制在网络编程中的应用,实现如何在客户端通过远程方法调用服务器端的方法。 假定在服务器端有一个 HelloService 接口,该接口具有 getTime() 和 echo() 方法,具体代码如下: import java.util.Date; public int…

【C语言航路】第十一站:字符串、字符和内存函数

目录 一、字符串函数 1.strlen (1)strlen的库函数文档 (2)strlen的模拟实现 (3)strlen的注意事项 2.strcpy (1)strcpy的库函数文档 (2)strcpy的使用以…

如何使用机器学习进行图像识别|数据标注

什么是图像识别?图像识别是一种用于识别图像中的对象并将其分类为特定类别的机制,基于人类识别不同图像集中对象的方式。图像识别如何为人类工作?当我们看到一个物体或图像时,作为人类,我们能够立即准确地知道它是什么…

浅谈STL——适配器

一、适配器(Adapters) 它是一种设计模式,为STL中能够将一个类的接口转化为用户更加想要使用的接口,适配器就扮演者轴承、转换器的功能 就是一个wrapper的模式,将要修饰的接口进行二次包装,展露出可以更容…

紧急事故的流程管理

嵌套式职责分离 在事故处理中,让:每个人清楚自己的职责是非常重要的。有点反直觉的是,明嘶职费反而能够使每个人可以更独立自主地解决问题,因为他们不用怀疑和担心他们的同事都在干什么。 如果一个人目前要处理的事情大多了&…

[TPAMI 2022] 用深度神经网络解决欠定问题——考虑鲁棒性?

Solving Inverse Problems With Deep Neural Networks – Robustness Included?https://ieeexplore.ieee.org/abstract/document/9705105摘要在过去的五年中,深度学习方法已经成为解决各种反问题的最先进方法。在此类方法可以应用于安全关键领域之前,必…

2022年度总结和展望2023年

文章目录 前言 2022年的成就总结 2023年的行动目标 如何完成这些目标? 前言 从2018年更新CSDN第一篇的博文,我就和CSDN产生联系。当时想法很纯粹,就是将积累的知识写成文章,无论去到哪里都能查到,所以前面三年都是…

Python实现预测客户是否会购买房车险源码+数据集,基于伯努利朴素贝叶斯预测客户购买房车险源码,Python预测客户购买房车险

伯努利朴素贝叶斯预测客户购买房车险 根据2000年数据挑战赛保险公司的客户特征数据,预测客户是否会购买房车险。 使用伯努利朴素贝叶斯模型,我获得了更好的预测效果 完整代码下载地址:Python实现预测客户是否会购买房车险源码数据集 数据集…

中国化工发展的新态势

顺势而为的企业才可能有好的未来,在一年之初,回顾总结一下中国化工行业的发展态势,对企业认清形势,确定企业的行业发展方向和发展战略至关重要。 自2022年以来,中国快速增长的化工行业按收入计算一直是世界上最大的&am…

【Java、Redis】通过中心经纬度与半径获取范围内的结果集(类似附近的人)

文章目录需求解决方案什么是Redis GeoHashJava实现InitEquLongLatTask.javaControllerservicexml sql语句引用的pom依赖需求 通过百度地图的覆盖物功能,用户在页面上画圈选定某个区域,前端传输中心点经纬度与半径给后端,后端需要返回位置在圈…

表格存储 Tablestore 十年发展总结

作者:周赵锋 阿里云基础产品团队 ​表格存储Tablestore上线已有十年,随着业务规模变大,稳定性挑战也随之而来,需要不断优化架构来提升可用性。本文将为大家分享表格存储Tablestore在技术层面近年来的功能演进、技术架构演进以及稳…

与哈希函数有关的结构:布隆过滤器、一致性哈希

1、认识哈希函数 (out f(in data)) 输入参数in,其值域范围可以看作是无穷大的。输出函数out,其值域范围可能性很大,但是一定是有穷尽的哈希函数没有任何随机的机制,固定的输入一定是固定的输出输入无穷多但…

计算机基础——无处不网络

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.计算机网络概述 1.计算机网络发展史 二.计算机网络应用领域 三.计算机网…

基于YOLOv6m的接打电话检测识别分析系统

本身在实际项目开发应用中YOLO都是目标检测任务的绝对主力,从v3一直跟着到了v7,做了很多的项目,处理了很多的数据,当然了也积累了一些自己的成果和心得,这里主要是以不常用到的yolov6m系列的模型来开发构建接打电话行为…

python基础篇之函数

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm1000.2115.3001.5343 哔哩哔哩欢迎关注&…

最简最速搭建grpc分布式服务的Mac系统开发环境

文章目录环境详情基本原理什么是 Protobuf工具安装环境搭建编写服务类的实现启动服务客户端测试环境详情 golang 1.18 macOS Big Sur protobuf 3 基本原理 整个RPC过程就是: 客户端 发送 数据(以字节流的方式)服务端接收,并…