目录
一、是什么
SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。
SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶
和springboot的关系
Springboot | Springcloud |
---|---|
专注于快速、方便的开发单个微服务个体 | 关注全局的服务治理框架 |
可以离开Springcloud独立使用开发项目 | 离不开Springboot,属于依赖关系 |
二、为什么
- SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发
- SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,它们都可以用SpringBoot的开发风格做到一键启动和部署。
- Springboot将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包
三、有什么(五脏六腑)
(一)服务的注册与发现(Eureka)
服务注册与发现,是服务治理最重要的问题,我们只有将所有的服务都注册到统一的注册中心上才能更好的将这些服务管理起来,服务间调用时也可以从注册中心获取到服务
(二)服务消费者(rest+Ribbon(负载均衡))
(三)服务消费(Feign)
使用Feign和RestTemplate都可以进行服务间调用,这样服务间就可以进行通信解决了另一个重要问题服务调用。这里Ribbon发挥的是一个客户端的负载均衡器的作用。
(四)断路器(Hystrix)
(五)断路器监控(Hystrix Dashboard)
断路器是为了更好的保证我们服务的可用性,当某个服务出问题时,不会因为这个服务阻塞导致整个系统都瘫痪,从而增强了我们服务的可用性。
(六)路由网关(Zuul) (Gateway)
如果我们直接把服务暴露给用户既对用户不友好也可能会带来安全隐患,所以我们就有了路由网关这个角色来负责请求的路由转发和过滤。
(七)分布式配置中心(Spring Cloud Config)
由于微服务架构服务众多而且每个服务都有不同的配置文件(因为环境不同可以一个服务有多个),所以为了方面服务配置文件可以进行统一管理,更好的进行维护和更新,分布式配置中心Config应运而生。
(八)消息总线(Spring Cloud Bus)
前一个问题讲到了每个服务都有一些配置信息,那么配置信息更新了我们该怎么办,手动一个个去更新?当然不是,Spring Cloud 提供了 Spring Cloud Bus 组件,它通过轻量消息代理连接各个分布的节点。当配置信息更新的时候,我们只要更新一个节点的配置,这个更新就会被广播到这个分布式系统中。
(九) 服务链路追踪(Spring Cloud Sleuth)
在微服务系统中,服务之间可以相互调用,因此我们一个请求可能会一条调用链,而整个系统会存在一张调用网,其中任意一个服务调用失败或网络超时都可能导致整个请求失败。因为调用关系的复杂,这给问题的定位造成了极大的困难,这也是必须提供服务链路追踪的原因。
Spring Cloud 为我们提供了 Spring Cloud Sleuth 组件,它能够跟进一个请求到底有哪些服务参与,参与的顺序是怎样的,从而达到每个请求的步骤清晰可见。借助服务链路追踪,我们可以快速定位问题。
(十) 。。。。。。
相关博客地址:
【Springcloud】第一篇 十分钟了解微服务