前言:
最近发现Spring Cloud的应用越来越多了,微服务的概念在一般的互联网公司上面几乎都会使用到,于是准备一套Spring Cloud Alibaba的学习文章,文章写到一定阶段,会进行实战篇,比如搭建注册通信的框架,以及微服务之间如何进行发现以及通信的处理。
框架篇
Spring到Spring Boot,随着Spring的不断发展,越来越多的组件集成到框架中。Spring框架也从一个小巧的IOC容器变成了一套大而全的框架集合。开发人员为了实现组件的整个工作,往往需要在xml文件、java注解中完成各种bean的配置,从而使的Spring的使用越来越难,大大降低了开发的效率。
使用Spring Boot可以大大的简化Spring应用的开发工作,在Spring Boot中无论官方组件还是框架都会提供各种start来方便开发者来依赖和集成。由于采用了依赖约定大于配置的思想,开发者可以做很少的配置工作就可以完成框架集成的工作,往往开发者只需要很少的代码量就可以实现以前大量配置文件才能做到的功能。
同时Spring Boot还是一套面向生产环境设计的框架,配置外化,运行情况检查功能,可以很方便的在系统外部实现对系统的管理。同时SpringBoot还是一个运行时容器。通过内嵌Tomcat等使程序的运行不在依赖传统的应用服务器。这一点在云原生很有 意义
Spring 官方对Spring Boot的特色如下:
- 创建独立的Spring的应用程序
- 直接嵌入Tomcat
- 提供依赖项,简化构件配置
- 尽可能自动配置Spring和三方类库
- 提供可用于生产的功能,例如指标,运行状况检查和外部化配置
- 完全没有代码生成,也不需要xml配置
spring官网的给出的架构图如下:
Spring Cloud是一系列Microservice,微服务的实现,围绕这些微服务做各种的辅助信息的功能。例如:分布式跟踪、服务注册、配置服务等,都围绕微服务所依赖的支持特性功能,Spring Cloud是以微服务为核心分布式系统的一个构件标准。
图中深色的部分,其实就是Spring Cloud的标准,一共有三层,中间颜色最深的部分就是整个微服务最核心的部分,包括了rpc调用一级服务注册与发现。第二层,也就是围绕着最核心的这一圈,是一些辅助微服务更好的工作,包括了负载均衡、路由、网关、断路器,还有就是追踪等等这些内容。再外层的话,主要是写分布式云环境里面的通用能力
最外面的这一圈,是Spring Cloud Alibaba对Spring Cloud的实现。右上部分是对于Spring Cloud标准的实现。
目前,Spring Cloud Alibaba包含以下组件:
开源部分:
- Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性
- Nacos:一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台
- RocketMQ :一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务
- Dubbo:Apache Dubbo是一款高性能JAVA RPC框架
- Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案
平台服务部分
- Alibaba Cloud OSS:阿里云对象存储服务(Object Storage Service,简称OSS),是阿里巴巴提供的海量、安全、低成本、高可靠的存储服务。在任何应用、任何时间、任何地点存储和访问任意类型的数据。
- Alibaba Cloud Schedule X:阿里中间件团队开发一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时任务调度服务
- Alibaba Cloud SMS:覆盖全球的短信服务、友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道
分布式配置
- 简介:
-
- Nacos提供用于存储配置和其他元数据的Key、Value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用Spring Cloud Alibaba Nacos Config,可以在Nacos Server集中管理Spring Cloud应用的外部属性配置
- Spring Cloud Ablibaba Nacos Config是Config Server和Client的替代方案,客户端和服务器上的概念与Spring Environment和PropertySource有着一致的抽象,在特殊的bootstrap阶段,配置被加载到Spring环境中。当应用程序通过部署管道从开发到测试再到生产时,可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有的内容。Nocos的获取和启动方式可以参考官网
- 学习目标
-
- 使用Nacos Config作为Spring Cloud分布式配置
- 使用Nacos Config实现Bean动态刷新
- 了解Nacos Config高级配置
- 详细内容
-
- 快速上手,使用Nacos Config作为外部化配置源
- 多文件扩展名支持:以YAML文件扩展名为例,讨论Nacos Config多文件扩展名支持
- 动态配置更新:演示@ RefreshScope特性,实现Bean动态刷新
- 运维特性:演示Nacos config高级外部化配置以及Endpoint