分布式架构SpringCloud
SpringCloud是什么?
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发。
Spring Boot是什么?
Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud包含哪些组件?
如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等
Spring Cloud正是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成。
Spring Cloud是一个相对比较新的微服务框架,才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。
Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全居琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
各个组件都有什么作用?
1.Spring Cloud Eureka 服务发现 服务中心
Eureka两个组件组成:Eureka服务器和Eureka客户端
主要作用:每个Spring Boot 都可以注册到Eureka服务端,被注册的服务称之为客户端,我们可以在Eureka的Web页面观察到每个服务的状态,是否掉线,是否有负载均衡。
2.Srpign Cloud Ribbon 客户端负载均衡
Ribbon主要提供客户侧的软件负载均衡算法。 简单点说就说让单体服务开启多个端口,让服务调用者通过 Ribbon调用不同的客户端,可以减轻单体架构的唯一性。
负载均衡的算法有以下4种:默认使用随机负载均衡算法
简单轮询负载均衡加权响应时间负载均衡区域感知轮询负载均衡随机负载均衡
3.Spring Cloud Config 配置中心
配置中心,配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。
通俗点说就说把我们的配置信息等一些不唯一性的值,通过Config组件动态刷新配置
4. Spring cloud Hystrix 熔断器
熔断器,容错管理工具,当某个服务宕机时,Hystrix组件断路器、资源隔离与自我修复功能。
断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。
还可以作为服务降级来使用,服务宕机,自动进入降级处理,避免长时间等待接口时间,造成服务器堵塞。
5.Spring Cloud Zuul 服务网关,智能路由
在微服务架构模式下,后端服务的实例数一般是动态的,对于客户端而言很难发现动态改变的服务实例的访问地址信息。因此在基于微服务的项目中为了简化前端的调用逻辑。
把不同的服务统一路径去请求接口
它的具体作用就是服务转发,接收并转发所有内外部的客户端调用。使用Zuul可以作为资源的统一访问入口,同时也可以在网关做一些权限校验等类似的功能。
6.Spring Cloud Feign 使用HTTP请求远程服务
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
通过Feign, 我们能把HTTP远程调用对开发者完全透明,得到与调用本地方法一致的编码体验。这一点与阿里Dubbo中暴露远程服务的方式类似,区别在于Dubbo是基于私有二进制协议,而Feign本质上还是个HTTP客户端。如果是在用Spring Cloud Netflix搭建微服务,那么Feign无疑是最佳选择。
特点:Feign 采用的是基于接口的注解Feign 整合了ribbon
更多SpringCloud组件教程
我是于一,更多SpringCloud,SpringBoot 可以私信我!
#微服务#