SpringCloud之Nacos

一、微服务介绍

1. 什么是微服务

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

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

2.架构的演变

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

  1. 单体应用架构

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

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

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

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

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

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

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

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

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

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

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

为何使用微服务呢?

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

微服务架构:

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

3.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。
  1. 更新版本没有什么大惊小怪的,但是本次更新却正式开启了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 组件。
  1. Spring Cloud Alibaba 成为了主流

4. Spring Cloud Alibaba

https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

4.1 简介

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

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

4.2 主要功能

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

4.3 组件介绍

  • [Sentinel] :阿里巴巴源产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • [Nacos] :一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • [RocketMQ] :一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • [Dubbo] :Apache Dubbo™ 是一款高性能 Java RPC 框架。
  • [Seata] :阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  • [Alibaba Cloud OSS] : 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • [Alibaba Cloud SchedulerX]: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
  • [Alibaba Cloud SMS] : 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

4.3 版本说明

https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

课程中使用的版本

  • SpringCloud:2020.0.1
  • SpringCloudAlibaba:2021.1
  • SpringBoot:2.4.2
  • NacosServer:2.2.3

二、Nacos介绍

1. Nacos介绍

Nacos(Naming Configuration Service) 是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序

服务发现是微服务架构中的关键组件之一。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

2. 什么是Nacos?

  • Nacos = 注册中心+配置中心组合
  • Nacos支持几乎所有主流类型的“服务”的发现、配置和管理,常见的服务如下:
    Kubernetes Service
    gRPC & Dubbo RPC Service
    Spring Cloud RESTful Service

3. 为何使用Nacos?

为何使用注册中心呢?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

eNSP学习——配置通过Telnet登陆系统

实验内容: 模拟公司网络场景。R1是机房的设备,办公区与机房不在同一楼层,R2和R3模拟员工主机, 通过交换机S1与R1相连。 为了方便用户的管理,需要在R1上配置Telnet使员工可以在办公区远程管理机房设备。 为…

德施曼智能锁×去哪儿跨界联名,送你一场说走就走的新年旅行~

2024年农历新年即将来临,智能锁行业领军企业德施曼携手中国领先在线旅游平台去哪儿,紧扣“旅游过年”的新年趋势,推出“新年去哪儿,德施曼替你看家”跨界联名活动,为广大用户带来一场说走就走的旅行。 德施曼X去哪儿 …

学习笔记之——3D Gaussian SLAM,SplaTAM配置(Linux)与源码解读

SplaTAM全称是《SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM》,是第一个(也是目前唯一一个)开源的用3D Gaussian Splatting(3DGS)来做SLAM的工作。 在下面博客中,已经对3DGS进行了…

让CHAT对springSecurity原理进行简述

CHAT回复:Spring Security是Spring框架中用于实现认证和授权功能的安全框架。其主要原理基于Filter机制,可以实现基于角色或者资源URL的访问控制。 具体来说,Spring Security通过一系列的Filter对Web请求进行拦截,然后根据用户提供…

短视频代运营抖音项目规划管理计划模板

【干货资料持续更新,以防走丢】 短视频代运营抖音项目规划管理计划模板 部分资料预览 资料部分是网络整理,仅供学习参考。 短视频代运营模板(完整资料包含以下内容) 目录 具体的表格设计和内容可能因不同的情况和需求而有所变…

基于YOLOv8深度学习的葡萄簇目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

k8s------Pod、Label、NameSpace

一、Pod: Kubernetes中的最小调度对象 1.1 说明 Pod(容器组)是k8s创建和调度的最小单元。一个Pod封装多个容器(container)、存储资源(volume)、一个独立网络ip和管理控制容器运行方式。 Pod可以单独运行一个容器,也可以兼容多个容器运行,多个容器共享…

CentOS 7.9 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境,客观条件不得不用的话,优选7.9版本,8.5版本次之,最次6.10版本(比如说Oracle 11GR2就建议在6版本上部署)! 引导和开始安装 选择倒计时结…

CS架构抓包——Fiddler+ Proxifier

Fiddler 1、配置好fiddler作为代理服务器的端口号,允许https代理 捕获https连接 fiddler在端口侦听8888端口,捕获http请求 Proxifier 1、proxifier允许启用http代理服务器 2、CS客户端添加代理服务器的IP地址及端口号 3、添加代理规则:使用f…

警惕!Citrix NetScaler ADC 和 NetScaler Gateway漏洞风险通告

近日,亚信安全CERT监控到Citrix发布了NetScaler ADC 和 NetScaler Gateway的安全公告,披露了2个安全漏洞CVE-2023-6548和CVE-2023-6549。其中CVE-2023-6548为远程代码执行漏洞,该漏洞可导致 NetScaler 管理接口和未修复的NetScaler 实例易遭远…

第5章 现代通信网

文章目录 5.1 通信网概述5.1.1 通信网的构成要素5.1.2 通信网的发展演进 5.2 交换与控制5.2.1 交换的基本概念1、电路交换2、报文交换3、分组交换4、3种交换技术的比较 5.2.2 IP交换1、IP交换机的构成2、IP 交换的工作原理 5.2.3 IP多媒体子系统 5.3 传输网5.3.1 有线传输1、光…

将x, y, z 列表变成 [x,y,z]格式

如下图所示表格 方法: //处理数据 将x y z 合并成[x,y,z]let dealData (xList, yList, zList) > {let result []for(let i 0; i < yList.length; i){for(let j 0; j < xList.length; j){result.push([xList[j],yList[i], zList[i*yList.length j]])}}return re…

2024 CKA 题库 | 11、创建 PVC

不等更新题库 文章目录 11、创建 PVC题目:考点&#xff1a;参考链接:解答:更换 context创建 pvc创建 pod修改 pvc 并记录 11、创建 PVC 题目: 设置配置环境&#xff1a; [candidatenode-1] $ kubectl config use-context ok8sTask 创建一个新的 PersistentVolumeClaim&#x…

VUE--组件通信(非父子)

一、非父子通信 --- event bus 事件总线 作用&#xff1a;非父子组件之间进行简易的消息传递 步骤&#xff1a; 1、创建一个都能访问到的事件总线&#xff08;空vue实例&#xff09;--- utils/EventBus.js import Vue from vue export default new Vue({}) 2、 接收方&…

test测试

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

静态分析工具的评估测试

原文链接&#xff1a;静态分析工具的评估测试-云社区-华为云 0. 前言 忙忙碌碌又一年&#xff0c;似乎始终都在工具的误报、漏报、能力对比三个问题之间打转转。说“反思”也好、“回溯”也好、“复盘”也好&#xff0c;也和同事、朋友、同行讨论过多次测试用例对这个三个问题…

新书速览|ASP.NET Core+Vue.js全栈开发训练营

使用ASP.NET 7与Vue.js 3构建功能丰富、高效的Web应用程序ASP.NET、Vue.js、全栈开发、Web应用开发 本书内容 《ASP.NET CoreVue.js全栈开发训练营》旨在为读者提供一个全面、实用的学习资源&#xff0c;以掌握使用ASP.NET Core 7和Vue.js 3构建功能丰富、高效的Web应用程序的技…

编程和数值计算平台:MATLAB R2023a(Win/Mac)激活版

MATLAB R2023a是一款强大的数值计算和科学编程软件&#xff0c;广泛应用于工程、科学和数学领域。 win版&#xff1a;https://soft.macxf.com/soft/3541.html?idMzE5MTM%3D mac版&#xff1a;https://www.macz.com/mac/9321.html?idOTI2NjQ5Jl8mMjcuMTg2LjkuOTg%3D 以下是MAT…

【Linux修行路】基本指令

目录 推荐 前言 1、重新认识操作系统 1.1 操作系统是什么? 1.2操作系统的作用 1.3 我们在计算机上的所有操作 1.4 Linux操作的特点 2、Linux基本指令 2.1 ls 指令 2.2 pwd 命令 2.3 cd 指令 2.3.1 Linux中的目录结构 2.3.2 绝对路径和相对路径 2.3.3 cd 指令 …

SpringCloud整合Zookeeper代替Eureka案例

文章目录 本期代码下载地址zookeeper简介zookeeper下载安装新建服务提供者测试 新建消费者测试 本期代码下载地址 地址:https://github.com/13thm/study_springcloud/tree/main/days4 zookeeper简介 zookeeper是一个分布式协调工具&#xff0c;可以实现注册中心功能 关闭Lin…