spring
核心功能:ioc、Aop、Di、注解式编程、提供了一种兼容以及支持外部插件的功能
优点:代码解耦、功能的横向扩展性、强大的第三方中间件的兼容性、轻量
spring boot
基于spring之上,“约定优于配置”的核心理念,将传统大量的bean注入的配置及框架的配置转化为更简洁可维护的配置方式,yml或properties文件
约定优于配置的体现主要是
1. maven 的目录结构
a) 默认有 resources 文件夹存放配置文件
b) 默认打包方式为 jar
2. spring-boot-starter-web 中默认包含 spring mvc 相关 依赖以及内置的 tomcat 容器,使得构建一个 web 应用 更加简单
3. 默认提供 application.properties/yml 文件
4. 默认通过 spring.profiles.active 属性来决定运行环境时 读取的配置文件
5. EnableAutoConfiguration 默认对于依赖的 starter 进行 自动装载
spring cloud
构建微服务架构(分布式之上)的技术体系
官方的解释是:spring cloud 提供了一些可以让开发者快速构建分布式应用的工具,这些服 务可以很好的工作在任何分布式环境下。
微服务应用的组成部分
01 网关
客户端发起一个服务请求时,先到达网关,有利于在网关层进行统一鉴权、认证、实现限流、请求日志统一记录、灰度发布、减少客户端的调用频次。
02 服务的通信和服务发现
服务拆分后将涉及到服务与服务的远程通信,使用http或rpc等协议,另外需要对服务的统一管理也是必不可少,需要加入服务发注册中心来实现服务的注册和发现功能。
03 负载均衡
当有多个服务提供的节点,需要负载均衡的机制,来实现客户端请求的分发。
04 熔断、限流、降级
熔断:当服务不可用时,后来的请求应将其熔断(停止后续服务),否则导致整个应用雪崩。
限流:设置最大请求数量,或用队列
降级:当整个系统的负载确实过高时,可以将某些功能降级,以保证核心功能正常工作。
05 统一配置中心
便于统一管理和维护配置
在spring cloud 中对应的基础设施功能实现由哪些技术支持呢?
1. 服务注册发现
Eureka/Consoul/zookeeper
2. 远程服务调用
远程调用基于 RestTemplate 针对 http 协议调用的封装
3. 负载均衡
负载 均衡采用 Ribbon
4. 断路器
断路器采用 hystrix;
5. 分布式消息
分布式消息基于 kafka、rabbitMQ
6. 配置中心
配置中心基于 config;
7. 链路监控
链路监控基于 sleuth.