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

Spring Cloud Alibaba 微服务简介

微服务简介

1 什么是微服务

2014年,Martin Fowler(马丁·福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模的集中管理能力,服务可以用不同的编程语言与数据库等组件实现。

WeChat13cb5e0a22944a3c85e6d91ca10babbc.png

马丁·福勒是敏捷联盟的成员,于2001年,同其他16名合著者一起协助创作了“敏捷软件开发宣言”。他负责维护一个bliki网站—一种blog和wiki的混合衍生物,他还使控制反转(Inversion of Control)“依赖注入模式(Dependency Injection)”一词得到普及。

架构的演变

随着互联网的发展,网站应用的规模也不断的扩大,进而导致系统架构也在不断的进行变化,从互联网早起到现在,系统架构大体经历了下面几个过程:

WeChatb55c37f0bb53be8957590c529bb21e83.png

单体应用架构:

把所有功能都集中在一个应用中,统一部署,开发成本、部署成本和维护成本低

  • 优点:项目架构简单,适合用户量少的项目,开发成本低,项目部署在一个节点上,维护方便。
  • 缺点:功能集中在一个工程中,对于大型项目比一开发和维护,项目模块紧耦合,单点容错率低,无法对不同的模块功能进行针对性的优化和水平拓展

垂直应用架构:

所谓垂直应用架构,其实就是把之前的单体应用拆分成多个应用,以提升效率,比如电商系统可以拆分成:电商系统、后台系统、CMS系统

  • 优点:项目拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平拓展,同时不同的系统之间不会互相影响,提高容错率
  • 缺点:系统之间互相存在,无法进行相互调用,系统之间互相独立,会造成一部分功能的冗余

分布式架构:

随着业务的增加,在垂直应用架构中冗余的业务代码越来越多,就需要将冗余的部分抽取出来,统一做成业务层单独处理,变成一个单独的服务,控制层调用不同的业务层服务就能完成不同的业务功能,具体表现就是一个项目拆分成表现层和服务层两个部分,服务层中包含业务逻辑,表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现,这就是分布式架构。

  • 优点:抽取公共的功能作为服务层,提高代码复用行。
  • 缺点:系统间耦合度变高,调用关系错综复杂,难以维护。

SOA架构:

分布式架构中的缺点就是调用复杂,而且当服务越来越多,或者当某一个服务压力过大需要水平拓展和负载均衡,对于资源调度和治理就需要用到治理中心SOA(Service Oriented Architecture)为核心来解决,同时治理中心还可以帮助我们解决服务之间协议不同的问题。

  • 优点:使用治理中心(ESB\dubbo)解决了服务见调用关系的自动调节
  • 缺点:服务间会有依赖关系,一旦某个环节出错会影响较大(服务雪崩),服务关系复杂,运维、测试部署困难。

微服务架构:

微服务架构在某种程度上面架构SOA继续发展的下一步,它更加强调服务的“彻底拆分”,目的就是提高效率,微服务架构中,每个服务必须独立部署同时互不影响,微服务架构更加轻巧,轻量级。

微服务架构与SOA架构的不同

  1. 微服务架构比SOA架构会更加的精细,让专业的人去做专业的。
  2. 目的是提高效率每个服务之间互不影响,微服务架构中,每个服务需要独立部署
  3. SOA架构中可能数据库存储会发生共享,微服务强调每个服务都是单独数据库,保证每个服务之间互不影响。
  4. 微服务项目架构比SOA架构更加适合与互联网公司迅捷开发、快速迭代版本,因为粒度非常精细。

为何使用微服务呢?

WeChatc690c21a12ed31985403c3be5446e01c.png

微服务就像集群作战,可以提升性能

WeChate3645eab5fa6b9086451566cb00ebadb.png

微服务架构:

WeChat16099fb7486aa74bf6f6c13e79467e67.png

  • 优点:服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
  • 缺点:分布式系统开发的技术成本高(容错、分布式事务等),复杂性更高,每个微服务进行分布式独立部署,当进行模块调用的时候,分布式将会变得更加麻烦。

Spring Cloud 发展历史

Spring Cloud netflix -> Spring Cloud Alibaba

  1. 2020-12-22日Spring 官方博客宣布,Spring Cloud 2020.0.0正式发布。2020.0.0是第一个使用新的版本号命名方案的Spring Cloud 发行版本。在此之前Spring Cloud 使用英国伦敦地铁站的命名方式来命名一个大版本(train version),如果不按照新的版本号命名的话,本次的版本号应该是Ilford。
  2. 更新版本没有什么大惊小怪的,但是本次更新却正式开启了Spring Cloud Netflix 体系的终结进程。Netflix 公司是目前微服务落地中最成功的公司。它开源了诸如EurekaHystrixZuulFeignRibbon 等等广大开发者所知微服务套件,统称为Netflix OSS 。在当时Netflix OSS 成为微服务组件上事实的标准。但是在2018年Netflix 公司宣布其核心组件HystrixRibbonZuulEureka 等进入维护状态 ,不再进行新特性开发,只修BUG。这直接影响了Spring Cloud 项目的发展路线,Spring 官方不得不采取了应对措施,在2019年的在 SpringOne 2019 大会中,Spring Cloud 宣布 Spring Cloud Netflix项目进入维护模式 ,并在2020年移除相关的Netflix OSS 组件。
  3. Spring Cloud Aalibaba 成为了主流

image.png

image.png

2 Spring Cloud Alibaba

简介

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

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

主要功能

  • 服务限流降级 :默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
  • 服务注册与发现 :适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。
  • 分布式配置管理 :支持分布式系统中的外部化配置,配置更改时自动刷新。
  • 消息驱动能力 :基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
  • 分布式事务 :使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
  • 阿里云对象存储 :阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • 分布式任务调度 :提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
  • 阿里云短信服务 :覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

组件

[Sentinel] :阿里巴巴源产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

[Nacos] :一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

[RocketMQ] :一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

[Dubbo] :Apache Dubbo™ 是一款高性能 Java RPC 框架。

[Seata] :阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

[Alibaba Cloud OSS] : 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

[Alibaba Cloud SchedulerX]: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。

、任何地点存储和访问任意类型的数据。

[Alibaba Cloud SchedulerX]: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。

[Alibaba Cloud SMS] : 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

相关文章:

Spring Cloud Alibaba 微服务简介

微服务简介 1 什么是微服务 2014年,Martin Fowler(马丁福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动…...

【调试】GDB使用总结

启动 在shell下敲gdb命令即可启动gdb,启动后会显示下述信息,出现gdb提示符。 ➜ example gdb GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3: GNU GPL v…...

基于Spring、Spring MVC、MyBatis的招聘管理系统

文章目录项目介绍主要功能截图:首页账户管理招聘建议部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 …...

软件测试基础

文章目录前言一、软件测试入门1.什么是软件测试?2.测试和开发的区别3.调试和测试的区别4.一些常问面试题5.测试人员需要具备的素质二、软件测试基础1.需求2.测试用例3.Bug4.软件的生命周期5.开发模型三、Bug1.如何创建bug2.Bug的级别3.Bug的生命周期4.跟开发产生争执…...

【算法基础】链表

一、单链表例题:实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k个插入的数后面的数;在第 k� 个插入的数后插入一个数。现在要对该链表进行 M次操作,进行完所…...

[AUTOSAR][Fls模块] Flash Driver Module

Flash Driver Module--jianqiang.xue一、 简介二、 措施方式一:将FLASH操作程序作为Bootloader组件的一部分固化在存储器中方式二:通过通讯口将该部分代码从上位机下载到指定的RAM方式三:将Flash功能函数作为数据运行(推荐!&#…...

如何正确选择好用的投票平台微信公众平台投票链接链接投票平台

“年度人物楷模”网络评选投票_免费链接投票_作品投票通道_扫码投票怎样进行现在来说,公司、企业、学校更多的想借助短视频推广自己。通过微信投票小程序,网友们就可以通过手机拍视频上传视频参加活动,而短视频微信投票评选活动既可以给用户发…...

gocd部署应用

产品需要在多个环境部署测试,为了提高部署测试效率,故计划使用CD工具,jenkins确实足够强大,但是使用部署功能是需要安装插件的,再说自己本身只用部署功能,故决定找一个小巧的CD工具,经过一番查找…...

P2P视频聊天技术分析

整个P2P视频过程需要知道双方的媒体类型、流和候选者,所以这里就会用到一下技术: ​ 信令服务器socket.io ​ 状态机 ​ ICE服务器 ​ WebRTC框架 ​ 媒体协商 信令服务器Socket.io 信令服务器说白了作用就是发消息的中转站,A把msg发到…...

MyBatis 的一级、二级缓存机制

目录标题缓存什么是缓存为什么使用缓存什么样的数据能使用缓存,什么样的数据不能使用适用于缓存不适用于缓存MyBatis 一级缓存、二级缓存关系1. 一级缓存1.1 什么是一级缓存mybatis1.2 一级缓存配置1.3 什么情况下会命中一级缓存mybatis清除一级缓存的几种方法1.4 内…...

剑指 Offer 65. 不用加减乘除做加法

摘要 剑指 Offer 65. 不用加减乘除做加法 一、位运算 有符号整数通常用补码来表示和存储,补码具有如下特征: 正整数的补码与原码相同;负整数的补码为其原码除符号位外的所有位取反后加 11。可以将减法运算转化为补码的加法运算来实现。符…...

5年软件测试年薪30w+,我的坎坷之路谁又知道

在深圳做了五年软件测试工作,从之前的一脸懵的点点点,到现在会自动化测试,说一点点非计算机专业人员从事软件测试的心得体会,仅供参考交流。 大部分测试在公司没啥地位,当然如果你懂技术就还行,单纯点点点…...

【Opencv--自适应图像二值化】cv2.adaptiveThreshold()

【Opencv–adaptiveThreshold】自适应阈值图像二值化 文章目录【Opencv--adaptiveThreshold】自适应阈值图像二值化1. 介绍2. adaptiveThreshold函数2.1 函数调用2.2 补充说明3. 代码示例4. 效果4.1 原图(ori.img)4.2 处理后5. 参考1. 介绍 在这里 cv2.…...

洛谷P8601[蓝桥杯][2013年第四届真题]剪格子

题目描述如图 11 所示,33 的格子中填写了一些整数。我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 60。本题的要求就是请你编程判定:对给定的 mn 的格子中的整数,是否可以分割为两个部分,使…...

配置alias实现快速生成.gitignore文件

git工具:版本控制开发工具。 cscope工具:用于浏览C源码的工具,类似于ctags。在代码根目录下执行cscope -Rbq,然后产生三个索引文件(cscope.out、cscope.in.out和cscope.po.out三个文件)。 在Linux下使用vi…...

MySQL数据库调优————GROUP BY及DISTINCT优化

GROUP BY 三种处理GROUP BY的方式 松散索引扫描(Loose Index Scan)紧凑索引扫描(Tight Index Scan)临时表(Temporary table) 三种方式的性能一次递减 松散索引扫描 无需扫描满足条件的所有索引键即可返…...

LRU缓存算法

双向链表哈希表(非线程安全) https://leetcode.cn/problems/lru-cache/solutions/259678/lruhuan-cun-ji-zhi-by-leetcode-solution/ /*** LRU算法: 哈希表双向链表实现* 1. 双向链表按照被使用的顺序来存储, 靠近头部的节点是最近使用的, 靠近尾部的节…...

@Configuration注解

Configuration注解介绍 Configuration注解,用于标注一个类是一个spring的配置类(同时,也是一个bean),配置类中可以使用ComponentScan、Import、ImportResource 和 Bean等注解的方式定义beanDefinition。 Target(Elem…...

基于springboot+vue的食疗系统

基于springbootvue的食疗系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍&…...

sklearn学习-朴素贝叶斯

文章目录一、概述1、真正的概率分类器2、sklearn中的朴素贝叶斯二、不同分布下的贝叶斯1、高斯朴素贝叶斯GaussianNB2、探索贝叶斯:高斯朴素贝叶斯擅长的数据集3、探索贝叶斯:高斯朴素贝叶斯的拟合效果与运算速度总结一、概述 1、真正的概率分类器 算法…...

C++11三大核心特性深度解析:类型特征、时间库与原子操作

C11三大核心特性深度解析&#xff1a;类型特征、时间库与原子操作 引言 C11标准的发布标志着C语言进入了现代编程的新纪元。在众多令人瞩目的新特性中&#xff0c;类型特征&#xff08;<type_traits>&#xff09;、时间库&#xff08;&#xff09;和原子操作&#xff0…...

3个神奇技巧让你的Windows 11系统优化效率翻倍

3个神奇技巧让你的Windows 11系统优化效率翻倍 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and customize your Windo…...

网站优化对企业营销有什么作用_SEO优化能带来哪些好处

网站优化对企业营销有什么作用_SEO优化能带来哪些好处 在当前数字化时代&#xff0c;企业的在线存在感已经成为衡量其市场竞争力的重要指标。在这种背景下&#xff0c;网站优化&#xff08;特别是搜索引擎优化&#xff0c;SEO&#xff09;不仅仅是一个技术细节&#xff0c;而是…...

5分钟搞定Node.js+ws搭建实时聊天室(附完整前端代码)

5分钟实现高互动WebSocket聊天室&#xff1a;Node.jsws全栈实战指南 从零构建实时通信系统 在数字化协作时代&#xff0c;实时通信已成为在线应用的基础能力。想象这样一个场景&#xff1a;团队远程协作时&#xff0c;成员间的消息需要毫秒级同步&#xff1b;在线教育平台中&am…...

Win11Debloat终极指南:快速清理Windows 11系统,性能提升51%的免费神器

Win11Debloat终极指南&#xff1a;快速清理Windows 11系统&#xff0c;性能提升51%的免费神器 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other c…...

Isaac Sim 6 利用Replicator实现高效语义分割与实例分割(实践指南5.10)

1. 为什么选择Isaac Sim生成分割数据集&#xff1f; 在计算机视觉项目中&#xff0c;语义分割和实例分割是两项基础但极其耗时的任务。传统的数据标注方式需要人工逐像素标注&#xff0c;一个1000张图片的数据集可能需要团队花费数周时间。而使用Isaac Sim的Replicator工具&…...

OpenClaw对比测试:千问3.5-9B与其他模型在自动化任务中的表现

OpenClaw对比测试&#xff1a;千问3.5-9B与其他模型在自动化任务中的表现 1. 测试背景与动机 作为一个长期使用OpenClaw进行个人工作流自动化的技术爱好者&#xff0c;我最近遇到了一个现实问题&#xff1a;当需要处理复杂任务链时&#xff0c;不同的大模型在OpenClaw框架下的…...

如何构建 Flink SQL 任务的血缘分析

版本一&#xff1a;干燥苦涩、缺乏深度&#xff08;反面回答素材&#xff09;面试者语气&#xff1a;&#xff08;机械地背诵&#xff0c;没有眼神交流&#xff0c;缺乏实践细节&#xff09;“关于 Flink SQL 的血缘分析&#xff0c;我认为主要分为以下几个步骤&#xff1a;首先…...

Altium Designer 22 实战:用这个隐藏技巧,为DIP插件焊盘穿上‘防烫服’

Altium Designer 22实战&#xff1a;用丝印层为DIP焊盘打造双重防护 手工焊接DIP插件时&#xff0c;烙铁温度过高或操作不当导致绿油层损坏&#xff0c;进而引发短路问题&#xff0c;是硬件工程师经常遇到的痛点。特别是在生产线上&#xff0c;工人为了效率往往将烙铁温度调至最…...

告别背包焦虑:TQVaultAE如何彻底改变《泰坦之旅》装备管理体验

告别背包焦虑&#xff1a;TQVaultAE如何彻底改变《泰坦之旅》装备管理体验 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 对于《泰坦之旅》玩家来说&#xff0c;最令人沮丧…...