- 1. 应用系统架构的演变
- 2. Spring Cloud Alibaba介绍
- 3. 开发示例
- 3.1 版本的选择
- 3.2 nacos安装
- 3.3 创建工程
- 3.3.1 创建父工程
- 3.3.2 创建服务提供者模块
- 3.3.2 服务消费者
- 3.4 测试
1. 应用系统架构的演变
单应用架构 -> 应用服务器和数据库服务器分离 -> 应用服务器集群 -> 数据库压力变大,数据库读写分离 ->
引入缓存机制缓解数据库的压力 -> 数据库的水平/垂直拆分(数据库分库分表) -> 应用的拆分(微服务)
从系统架构上可以大体分为两种:单体应用, 分布式应用
1)单体应用
缺陷:
- 启动速度慢,一个进程包含了所有的业务逻辑,涉及到的启动模块过多,导致系统的启动、重启时间周期过长
- 模块耦合度高,迭代速度慢,修改难度大
- 系统错误隔离性差,任何一个模块的错误均可能造成整个系统的宕机
- 可伸缩性差,系统的扩容只能只对这个应用进行扩容,不能做到对某个功能点进行扩容
优点:
- 容易部署,整个项目就一个war包,部署特别方便
- 容易运行,只要启动一个war应用就可以了
2)分布式应用
缺点:
- 可维护性差;应用流程常常垮多个微服务,不易进行问题的定位
- 开发难度大;垮服务的调用通常是不同的机器,甚至是不同的机房,开发人员需要处理超时、网络异常等问题
- 应用级别的需求变动常常波及多个服务
优点:
- 分而治之;单个服务功能内聚,复杂性低;方便团队的拆分和管理
- 可伸缩;能够单独的对指定的服务进行伸缩
- 迭代周期短;支持快速的迭代开发
- 独立部署,独立开发
常用的微服务分布式框架:
1)dubbo: 阿里开源的微服务框架,
2)springcloud: 基于spring,springboot的开源微服务框架
2. Spring Cloud Alibaba介绍
2018 年 10 月 31 日的凌晨,Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器,并在 Maven 中央库发布了第一个版本。Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。
此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统
** 主要功能包括:**
- 服务限流降级:默认支持 Servlet、Feign、RestTemplate、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
- 服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。
- 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
- 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。