SpringCloud简介
Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等。
SpringCloud与微服务关系?
SpringCloud是微服务的一种实现,所以你要掌握好SpringCloud,首先你要理解清楚:
什么是微服务?
微服务的概念源于Martin Fowler所写的一篇文章“Microservices”,微服务架构是一种架构模式,一个大型复杂软件应用由一个或多个微服务组成。
- 系统中的各个微服务可被独立部署,各个微服务之间是松耦合的;
- 每个微服务仅关注于完成一件任务并很好地完成该任务,每个任务代表着一个小的业务能力;
- 微服务它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值;
- 每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通:通常是基于HTTP的RESTfulAPI,或者基于RPC通信;
- 每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
微服务目前主流就Spring Cloud这套系列和Dubbo,相关的比较也可以参考:阿里P8架构师谈:微服务Dubbo和Spring Cloud架构设计、优劣势比较
Spring Cloud的工作原理
1.Spring Cloud Netflix
Spring Cloud Netflix 集成众多Netflix的开源软件:Eureka, Hystrix, Zuul, Archaius,组成了微服务的最重要的核心组件。
2.Netflix Eureka
服务中心,用于服务注册与发现,一个基于 REST 的服务,用于定位服务。
3.Netflix Hystrix
熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
4.Netflix Zuul
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。
5.Netflix Archaius
配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能,可以实现动态获取配置。
6.Spring Cloud Config
配置中心,利用git集中管理程序的配置。
7.Spring Cloud Bus
事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
8.Spring Cloud Ribbon
Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。
SpringCloud架构及流程
通过这张图,可以比较清楚的了解到各组件配置使用运行机制。
主要分为如下6大运行流程:
1、请求统一通过API网关:Zuul来访问内部服务;
2、网关接收到请求后,从注册中心Eureka获取可用服务;
3、由Ribbon进行均衡负载后,分发到后端具体实例;
4、微服务之间通过Feign进行通信处理业务;
5、Hystrix负责处理服务超时熔断等;
6、Turbine监控服务间的调用和熔断相关指标,用于后续的监控与分析。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》