目录与学习目标
1:对微服务的理解2:传统模式单体应用3:Springboot解决传统单体Web应用的最大问题4:微服务治理解决方案 SpringCloud5:为什么我们要选择SpringCloudAlibaba
1:对微服务的理解
现如今,随着互联网的发展,对于系统性能,架构均有了更高的要求。
以前传统的ssh时代的单体应用的机构模式已显力不从心,所以微服务架构应运而生,并且形成了越来越成熟的方案。
2:传统模式单体应用
单体应用模式如SSH(SpringMvc、Spring、Hibernate)
优点:
开发和部署都非常方便,只需要考虑到单体应用如何实现业务逻辑,
对于性能的扩展只需要复制部署到多个tomcat形成集群,用Nginx进行负载均衡,即可完成一个简单的分布式方案。
缺点就是是把整个应用复制部署,没有细化到单个功能的性能管控。

3:Springboot解决传统单体Web应用的最大问题
Springboot 具有一个最大的特点:具备一个 自动装配的功能
能够快速解决掉各种繁杂的配置问题
另外SpringBoot 的 spring-boot-starter-web(下图有其包含的Maven包)
直接解决了传统Web的痛点:交互与部署问题
Springboot的 spring-boot-starter-web它实际上和springmvc框架解决的是同一件事,
就是如何对外提供服务(api),并且在使用层面,代码注解也是是很相似的。
技术区别:
SpringMVC
1:首先需要建立一个java web项目
2:java Web项目通过web.xml的配置接入springmvc(可以看成是servlet的封装)入口
3:最终把java web项目部署到容器中(比如tomcat)
4:通过 springmvc 与外部进行交互
SpringBoot的spring-boot-starter-web
则可以直接看成是一个tomcat和java web应用的集装箱;
只需要按照约定配置好 核心配置文件(比如application.yml),写好你的控制器(controller),
然后再加上一个main方法,就可以直接启动 tomcat+你的应用,部署后,也是直接用jar命令来启动一个Jar包这样的形式。


4:微服务治理解决方案 SpringCloud
当开始使用SpringBoot快速的将单体系统拆分成若干个微服务后,面临一大问题就是:
如何管理好这些微服务呢?答案:SpringCloud
如图所见:下面有微服务概念中的很多关键组件
1、注册发现中心:汇总管理所有微服务的信息,包括IP,端口,API列表,并提供给其他组件。 (推荐Nacos)
2、服务网关:负责对外统一提供API接口,网关可自行配置接口的转发规则,也可直接从注册中心获取接口信息。(推荐Gateway)
3、配置中心:统一管理所有配置信息,供所有微服务读取,具有更新通知、版本管理等功能(推荐Nacos)
4、限流:根据实际情况,对接口(QPS、并发数)做限制,保证系统的可用性(推荐Sentinel)
5、熔断降级:根据接口的当前状态,评估出不能正常提供服务的接口,让其熔断,防止整个系统因相互调用而雪崩(推荐Sentinel)
6、调用链路追踪:监控整个服务的调用生命周期,协助定位错误(推荐 SkyWalking)
7、远程服务调用:服务之间的相互调用技术(推荐 Feign)
实际上SpringCloud就是管理一个个单体的SpringBoot项目的框架。

5:为什么我们要选择SpringCloudAlibaba
SpringCloudAlibaba实际上对我们的SpringCloud2.x和1.x实现拓展组件功能.
1.nacos 分布式配置中心+分布式注册中心=Eureka+config
2.目的是为了推广阿里的产品,如果使用了SpringCloudAlibaba,最好使用alibaba整个体系产品
SpringCloudAlibabad对比SpringCloud的优势:
| 框架 |
SpringCloud |
SpringCloudAlibaba |
| 注册中心 |
Eureka |
nacos |
| 消息中间件 |
无(第三方替代方案:RabbitMQ) |
RocketMQ |
| 分布式事务解决方案 |
无(第三方替代方案:2pc) |
Seata |
| 分布式调度服务 |
无(第三方替代方案:xxl-job) |
Alibaba Cloud SchedulerX |
| 短信平台 |
无 |
Alibaba Cloud SMS |
| 分布式配置中心 |
SpringCloudConfig |
nacos |
| 熔断降级 |
Hystrix |
Sentinel |