SpringCloud详解01-SpringCloudAlibaba、Nacos

文章目录

  • 前言
  • 一、架构演进
    • 1、web1.0阶段
    • 2、web2.0阶段
    • 3、垂直架构
    • 4、分布式架构
  • 二、SpringCloud基本概念
    • 1.特点
    • 2.SpringCloud和SpringCloudAlibaba
    • 3.SpringCloudAlibaba体系
      • 核心组件
  • 三、SpringCloudAlibaba
    • 1、注册中心Nacos
    • 2、Nacos安装和启动
  • 总结


前言

本篇记录一下SpringCloud学习


一、架构演进

SpringCloud是目前市面上应用最广泛的分布式架构技术,在SpringCloud之前,web应用程序的架构经过多次升级,才发展到今天的地步。

1、web1.0阶段

在这个时期,由于带宽不足,这时的项目大多是内容少,用户量也不多,甚至有一些项目不需要对外开放,对安全性和稳定性的要求是不高的。
单体架构就足以应对。

在这里插入图片描述

2、web2.0阶段

随之到来的Web2.0阶段,实现了ADSL拨号上网,宽带提速,最高可以达到8M,用户量也就不断增加,一些门户网站也开始活跃,项目就需要考虑安全性和稳定性。
在基于上面的单体架构图中,无法满足Web2.0对项目的需求。
在单体架构的基础上去搭建集群。
在搭建集群之后,可以提升项目的稳定性,并且并发能力增强,还可以避免单点故障。

在这里插入图片描述
集群架构也有一系列在实际应用场景中不得不面对的问题

  • 用户的请求到底要发送到哪台服务器上。如何保证请求平均的分发给不同的服务器,从而缓解用户量增加的压力。
  • 编写项目时,如果用户登录成功了,将用户的标识放到Session域中,在搭建集群之后,数据共享问题。
  • 当数据量特别庞大时,如果还直接去数据库查询,速度很慢,如何提升查询效率。
  • 针对大家在搜索一些数据时,where content like ‘%#{xxx}%’
  • 等等……

在这里插入图片描述

为了解决上述的问题,需要使用到三门技术。

  • Nginx - 解决用户请求平均分发。
  • Redis - 解决数据共享并实现缓存功能。
  • ElasticSearch - 解决搜索数据的功能。

3、垂直架构

比如项目包含了三个模块,用户模块,商品模块,订单模块。如果商品模块压过大,一般最直接有效的方式就是搭建集群。在单体架构的集群上去搭建,效果相对比较差。
随着项目的不断更新,项目中的功能越来越多,最严重可能会导致项目无法启动。
但是单体架构中,完美的体现了低内聚,高耦合,避开了开发的准则。
为了解决上述的各种问题,演进出了垂直架构。

在这里插入图片描述

4、分布式架构

随着项目的不断迭代,新老功能之间需要相互交互,服务器和服务器之间是需要通讯的。
项目一般是分为三层的,Controller,Service,Dao。 导致程序变慢的重灾区,一般是Service和Dao,在搭建集群时,确实针对三层都搭建集群,效果不是很好。
架构从垂直架构演变到了分布式架构。
分布式架构落地的技术,国内常用的方式有两种

  • Dubbo RPC(通讯方式)
  • SpringCloud HTTP(通讯方式)

在这里插入图片描述
分布式服务
传统垂直架构改造的核心就是要对应用进行服务化,服务化改造用到核心技术就是分布式服务框架。
将不同的功能拆分出来,放在不同的服务器上,就是服务化,使用RPC服务框架对业务进行拆分之后,随着服务数增多,就需要进行服务治理,有效管控服务,提升服务运行期质量,防止业务服务代码架构腐化。

二、SpringCloud基本概念

1.特点

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

简而言之,SpringCloud是一套简单易懂、易部署和易维护的分布式系统开发工具包。使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。

2.SpringCloud和SpringCloudAlibaba

Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本,到目前 2020 年 3 月发布 Hoxton.SR3 版本,已经历经了 4 年时间。这 4 年时间里,Spring Cloud 一共发布了 46 个版本,支持的组件数从 5 个增加到 21 个。回顾 Spring Cloud 的发展历史,Spring Cloud 一度泛指 Spring Cloud Netflix,无论是 Spring 的母公司 Pivotal(VMWare) 对应的商业化产品 Cloud Foundry 内部的 Spring Cloud Services(Spring Cloud 商业化服务) 支持 Netflix Eureka,Netflix Hystrix,还是 Pivotal 官网 blog 上与 Netflix 相互背书,或者是 Spring Cloud 服务注册/发现模型借鉴 Netflix Eureka;可见两者关系十分紧密。
随着 Netflix 宣布 Eureka 2.0 不再开发,Hystrix、Ribbon、Archaius 不再维护,Zuul 被 Spring Cloud Gateway 代替。Spring Cloud 也宣布这些模块对应的在 spring-cloud-netflix 项目里的模块也不再维护,并且在 RoadMap 中宣布 Ilford 版本发布的时候删除这些维护模块。Netflix 在 Spring Cloud 历史中会逐渐消失。不过4年的发展,让SpringCloud的实现者也不仅仅是只有Netflix。

SpringCloudAlibaba
与 Netflix 的“删库”不同,Spring Cloud Alibaba 是阿里中间件团队主导的一个新生项目,正处于高速迭代中。
其次,对于中国用户来说,Spring Cloud Alibaba 还有一个非常特殊的意义:它将曾经红极一时的 Dubbo,以及阿里巴巴的强力消息中间件 RocketMQ 融入 Spring Cloud 体系。最后,对于 Spring Cloud Alibaba 的上手学习成本很低,所以目前在国内市场,SpringCloudAlibaba占有绝对的市场份额。

3.SpringCloudAlibaba体系

官方给出的体系介绍如下图所示
在这里插入图片描述

核心组件

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

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

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

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

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

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

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

三、SpringCloudAlibaba

1、注册中心Nacos

nacos是阿里巴巴研发的一个集注册中心与配置中心于一体的管理平台,使用其他非常的简单

文档地址:https://nacos.io/zh-cn/docs/what-is-nacos.html

下载地址为:https://github.com/alibaba/nacos/releases
在这里插入图片描述

2、Nacos安装和启动

  • 将下载好的压缩包解压到一个英文目录下
  • 修改bin目录下的startup.cmd文件,默认启动为集群模式,改为独立模式运行,修改内容如下:
set MODE="cluster"  	  #默认配置是集群模式
set MODE="standalone"     #修改后的内容

然后双击startup.cmd 启动,启动成功后可以看到如下界面:

在这里插入图片描述

访问:http://localhost:8848/nacos/#/login
在这里插入图片描述

默认的登录名和密码是:nacos/nacos

nacos的主页如下图所示:
在这里插入图片描述
到此,nacos启动完成


总结

本篇主要介绍了架构的演进,和分布式架构的一些特点,以及SpringCloudAlibaba的基本体系,和注册中心nacos的安装启动,更多内容将在下一篇介绍

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

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

相关文章

ChatGPT研究分享:机器第一次开始理解人类世界

0、为什么会对ChatGPT感兴趣一开始,我对ChatGPT是没什么关注的,无非就是有更大的数据集,完成了更大规模的计算,所以能够回答更多的问题。但后来了解到几个案例,开始觉得这个事情并不简单。我先分别列举出来&#xff0c…

每日学术速递3.17

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Breaking Common Sense: WHOOPS! A Vision-and-Language Benchmark of Synthetic and Compositional Images 标题:打破常识:哎呀!合成和合成图像…

【Redis】搭建哨兵集群

目录 集群结构 准备实例和配置 启动 测试 集群结构 这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。如图: 三个sentinel实例信息如下: 节点IPPORTs1192.168.150.10127001s2192.168.150.10127002s3192.168.150.…

python并发编程多线程

在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起,是一个…

C语言指针操作(十)动态内存分配与指向它的指针变量

目录 一、什么是内存的动态分配 二、怎样建立内存的动态分配 2.1用malloc函数开辟动态存储区 2.2用calloc函数开辟动态存储区 2.3用realloc函数重新分配动态存储区 2.4用free函数释放动态存储区 三、void指针类型 四、举例说明 一、什么是内存的动态分配 全局变量是分…

redis持久化的几种方式

一、简介 Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持…

【蓝桥杯专题】 贪心(C++ | 洛谷 | acwing | 蓝桥)

菜狗现在才开始备战蓝桥杯QAQ 文章目录【蓝桥杯专题】 (C | 洛谷 | acwing | 蓝桥)1055. 股票买卖 IIAcWing 104. 货仓选址传递糖果AcWing 112. 雷达设备付账问题乘积最大AcWing 1247. 后缀表达式P【蓝桥杯专题】 (C | 洛谷 | acwing | 蓝桥&…

Flink 应用案例——求网页访问量Top N 实时计算(附可执行代码)

在学习了Flink之后,笔者通过以下案例对Flink API 进行简单复习 目录 案例要求 前置准备 编写主程序(点此跳转至代码) 运行截图 案例要求 以下数据 为某网站的访问日志 现要求通过以下数据 统计出最近10s内最热门的N个页面(即…

【3.17】MySQL索引整理、回溯(分割、子集问题)

3.1 索引常见面试题 索引的分类 什么是索引? 索引是一种数据结构,可以帮助MySQL快速定位到表中的数据。使用索引,可以大大提高查询的性能。 按「数据结构」分类:Btree索引、Hash索引、Full-text索引。 InnoDB 存储引擎创建的聚簇…

漫画:什么是快速排序算法?

这篇文章,以对话的方式,详细着讲解了快速排序以及排序排序的一些优化。 一禅:归并排序是一种基于分治思想的排序,处理的时候可以采取递归的方式来处理子问题。我弄个例子吧,好理解点。例如对于这个数组arr[] { 4&…

优思学院|六西格玛DMAIC,傻傻搞不清?

DMAIC还是搞不清? DMAIC是一个用于过程改进和六西格玛的问题解决方法论。它是以下五个步骤的缩写: 定义(Define):明确问题,设定项目的目标和目的。绘制流程图,并收集数据,以建立未来…

基于bearpi的智能小车--Qt上位机设计

基于bearpi的智能小车--Qt上位机设计 前言一、界面原型1.主界面2.网络配置子窗口模块二、设计步骤1.界面原型设计2.控件添加信号槽3.源码解析3.1.网络链接核心代码3.2.网络设置子界面3.3.小车控制核心代码总结前言 最近入手了两块小熊派开发板,借智能小车案例,进行鸿蒙设备学…

01背包问题c++

问题 问题介绍 有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。 第 i 种物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第…

基于Transformer的交通预测模型部分汇总【附源代码】

交通预测一直是一个重要的问题,它涉及到交通运输系统的可靠性和效率。随着人工智能的发展,越来越多的研究者开始使用深度学习模型来解决这个问题。其中,基于Transformer的交通预测模型在近年来备受关注,因为它们具有优秀的建模能力…

设计模式之桥接模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、桥接模式是什么? 桥接模式是一种结构型的软件设计模式,将抽象部分与实现部分分离,使他们可…

像ChatGPT玩转Excel数据

1.引言 最近ChatGPT的出现,把人工智能又带起了一波浪潮。机器人能否替代人类又成了最近热门的话题。 今天我们推荐的一个玩法和ChatGPT有点不一样。我们的课题是“让用户可以使用自然语言从Excel查询到自己想要的数据”。 要让自然语言可以从Excel中查数据&#…

通过百度文心一言大模型作画尝鲜,感受国产ChatGPT的“狂飙”

3月16日下午,百度于北京总部召开新闻发布会,主题围绕新一代大语言模型、生成式AI产品文心一言。百度创始人、董事长兼首席执行官李彦宏,百度首席技术官王海峰出席,并展示了文心一言在文学创作、商业文案创作、数理推算、中文理解、…

用Qt画一个温度计

示例1 以下是用Qt绘制一个简单的温度计的示例代码&#xff1a; #include <QPainter> #include <QWidget> #include <QApplication> class Thermometer : public QWidget { public:Thermometer(QWidget *parent 0); protected:void paintEvent(QPaintEvent …

【Hive】配置

目录 Hive参数配置方式 参数的配置方式 1. 文件配置 2. 命令行参数配置 3. 参数声明配置 配置源数据库 配置元数据到MySQL 查看MySQL中的元数据 Hive服务部署 hiveserver2服务 介绍 部署 启动 远程连接 1. 使用命令行客户端beeline进行远程访问 metastore服务 …

LC-146.LRU 缓存

题解&#xff1a;https://leetcode.cn/problems/lru-cache/solution/lru-ce-lue-xiang-jie-he-shi-xian-by-labuladong/ 文章目录[146. LRU 缓存](https://leetcode.cn/problems/lru-cache/)思路从0开始实现使用LinkedHashMap实现拓展&#xff1a;[460. LFU 缓存](https://leet…