文章目录
- 前言
- 一、架构演进
- 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的安装启动,更多内容将在下一篇介绍