何为微服务?
一种架构风格,将单体应用划分为小型的服务单元,微服务之间使用Http的API进行资源访问与操作。
微服务主要解决问题
高性能
独立性
容易扩展
便于管理
状态监控与警报
何为SpringCloud?
SpringCloud各个项目是基于SpringBoot封装的,并且通过自动配置的方式将这些框架绑定到Spring的环境中,SpringCloud可以理解为一个工具箱,提供各种工具,帮助我们快速构建分布式系统。
SpringCloud核心模块
Eureka
基于rest服务的分布式中间件,主要用于管理服务。业务组件注册到Eureka容器中,组件可以进行集群部署,Eureka主要维护这些服务的列表并自动检查它们的状态。
Ribbon
负载均衡框架,在微服务集群中为各个客户端的通信提供支持,它主要实现中间层应用程序的负载均衡。
负载均衡,可支持插拔式的负载均衡规则
支持多种协议
集成负载均衡功能的客户端
Feign
一个rest客户端,为了简化web service客户端的开发。Feign支持插件式的编码器和解码器,使用者可以通过该特性对请求和响应之间不同的封装与解析。当与Eureka和Ribbon集成时,具有负载均衡的能力,再加上Feign本身使用的简便性,与SpringCloud整合集中调用服务,会大大降低开发工作量。
Hystrix
容错框架,通过添加延迟阀值以及容错逻辑,帮助我们控制分布式系统间组件的交互。Hystrix通过隔离服务间的访问点,停止它们之间的级联故障,提供可回退操作的实现容错。
Zuul
为了微服务集群提供代理,过滤,路由等功能。能实现如下功能
身份验证和安全性
观察和监控
动态路由
负载分配
静态响应处理
路由的多样化
SpringCloud主要模块
Config
为分布式系统提供配置服务端和配置客户端,集中管理集群中的配置文件
Sleuth
服务跟踪框架,与ZipKin Apache HTrace和ELK等数据分析,服务跟踪系统进行整合,为服务跟踪,解决问题提供便利
Stream
构建消息驱动微服务的框架,在Spring Boot基础上整合Spring Integration来连接消息代理中间件
Bus
连接RabbitMQ,Kafka等消息代理的集群消息总线。