目录与学习目标

  1. 1:对微服务的理解
  2. 2:传统模式单体应用
  3. 3Springboot解决传统单体Web应用的最大问题
  4. 4:微服务治理解决方案 SpringCloud
  5. 5:为什么我们要选择SpringCloudAlibaba

1:对微服务的理解

现如今,随着互联网的发展,对于系统性能,架构均有了更高的要求。
以前传统的ssh时代的单体应用的机构模式已显力不从心,所以微服务架构应运而生,并且形成了越来越成熟的方案。

2:传统模式单体应用

    单体应用模式如SSH(SpringMvc、Spring、Hibernate)

    优点:
    开发和部署都非常方便,只需要考虑到单体应用如何实现业务逻辑,
    对于性能的扩展只需要复制部署到多个tomcat形成集群,用Nginx进行负载均衡,即可完成一个简单的分布式方案。

    缺点就是是把整个应用复制部署,没有细化到单个功能的性能管控。

image.png

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包这样的形式。

image.png

image.png

4:微服务治理解决方案 SpringCloud

当开始使用SpringBoot快速的将单体系统拆分成若干个微服务后,面临一大问题就是:
如何管理好这些微服务呢?答案:SpringCloud

如图所见:下面有微服务概念中的很多关键组件

1、注册发现中心:汇总管理所有微服务的信息,包括IP,端口,API列表,并提供给其他组件。 (推荐Nacos)

2、服务网关:负责对外统一提供API接口,网关可自行配置接口的转发规则,也可直接从注册中心获取接口信息。(推荐Gateway)

3、配置中心:统一管理所有配置信息,供所有微服务读取,具有更新通知、版本管理等功能(推荐Nacos)

4、限流:根据实际情况,对接口(QPS、并发数)做限制,保证系统的可用性(推荐Sentinel)

5、熔断降级:根据接口的当前状态,评估出不能正常提供服务的接口,让其熔断,防止整个系统因相互调用而雪崩(推荐Sentinel)

6、调用链路追踪:监控整个服务的调用生命周期,协助定位错误(推荐 SkyWalking)

7、远程服务调用:服务之间的相互调用技术(推荐 Feign)

实际上SpringCloud就是管理一个个单体的SpringBoot项目的框架。

image.png

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