Spring Cloud常见的组件有哪些?并且说说其作用,简述spring cloud的核心组件及其功能
如何解决写爬虫IP受阻的问题?立即使用。
本教程运行环境:windows7系统,java8版本8,DELL G3电脑。
Spring Cloud全家桶组件
在介绍春云世家桶之前,先介绍一下网飞。网飞是一家伟大的公司,在Spring Cloud项目中扮演着重要的角色。网飞提供许多组件,包括Eureka、Hystrix、Zuul、Archaius等。在微服务架构中非常重要。Spring在网飞的基础上封装了一系列组件,命名为:Spring Cloud Eureka、Spring Cloud Hystrix、Spring Cloud Zuul等。这里,分别介绍每个组件:
(1)Spring Cloud Eureka
我们使用微服务。微服务的本质是各种API接口的调用,那么我们如何生成这些接口,生成后又如何调用呢?如何管理?
答案是春云尤里卡。我们可以在Spring Cloud Eureka上注册自己定义的API接口,负责服务的注册和发现。如果你学过《动物园管理员》,就能很好的理解。Eureka的作用类似于Zookeeper,是服务的注册和发现。尤里卡的体系包括:服务注册中心、服务提供者和服务消费者。
如上图所述(图片来自网络):
1.由两个Eureka服务注册中心组成的服务注册中心主从复制集群;
2.然后在服务提供者上注册中心注册、续费、下线服务;
3.服务消费者将服务列表拉至Eureka注册中心并在本地维护(这也是客户端发现模式的机制体现!);
4.然后服务消费者根据从Eureka服务注册中心获得的服务列表选择服务提供商来消费服务。
(2)Spring Cloud Ribbon
在Spring Cloud Eureka上,描述了服务如何注册,在哪里注册,服务消费者如何获取服务生产者的服务信息。然而,Eureka只维护服务生产者、注册中心和服务消费者之间的关系。真正的服务消费者通过Spring Cloud Ribbon调用服务生产者提供的数据。
在(1)中,提到了服务消费者从注册中心获取服务生产者的服务列表,并在本地维护。这种客户端发现的模式是服务消费者选择合适的节点访问服务生产者提供的数据,选择合适节点的过程由Spring Cloud Ribbon完成。
云带状客户端负载均衡器由此而来。
(3)Spring Cloud Feign
在上面的(1)和(2)中,我们以最简单的方式实现了服务注册发现和服务调用。如果用Ribbon调用服务,可以感觉到Ribbon的使用方式还是有些复杂,于是Spring Cloud Feign应运而生。
Cloud Feign是一个声明式的web服务客户端,这使得编写Web服务客户端更加容易。用Feign创建一个接口,并对其进行注释。它有可插入的注释支持,包括佯注释和JAX-RS注释。Feign还支持可插拔的编码器和解码器。Spring Cloud在Spring MVC中加入了注释,Spring Web默认使用HTTPMessageConverters,Spring Cloud集成了Ribbon和Eureka提供的负载均衡HTTP客户端Feign。
简单的可以理解为:Spring Cloud Feign的出现让Eureka和Ribbon的使用更加方便。
(4)Spring Cloud Hystrix
在(1)、(2)、(3)中,我们知道使用Eureka注册和发现服务,使用Ribbon实现服务的负载均衡调用,使用Feign可以简化我们的编码。然而,这些还不足以实现高可用的微服务架构。
比如当一个服务失败,而服务的调用方并不知道服务已经失败,如果此时调用和释放请求的数量不断增加,那么最终会等待失败的依赖方形成任务积压,最终导致自身服务的瘫痪。
Cloud Hystrix就是为了解决这种情况,防止持续访问失败的服务。Hystrix的意思是:断路器。断路器本身就是一种开关器件,在我们家中用于电路保护,防止电流过载。当线路发生短路时,断路器能及时切换故障电器,防止过载、发热甚至火灾等严重后果。
(5)Spring Cloud Config
当微服务不多时,各种服务的配置管理相对简单,但当微服务节点数以百计时,服务配置的管理就变得复杂了。
在分布式系统中,由于服务数量庞大,为了便于服务配置文件的统一管理和实时更新,需要分布式配置中心组件。在Spring Cloud中,有一个分布式配置中心组件Spring Cloud Config,它支持将配置服务放在配置服务的内存中(即本地)和远程Git存储库中。在Cpring云配置组件中,有两个角色,一个是配置服务器,一个是配置客户端。
配置服务器用于存储配置属性,可以存储在Git仓库、SVN仓库、本地文件等。配置客户端用于读取服务属性。
(6)Spring Cloud Zuul
我们在春云网飞使用Eureka实现服务注册中心和服务注册与发现;服务之间通过Ribbon或Feign实现服务消费和负载均衡;通过Spring Cloud Config实现应用多环境的外化配置和版本管理。为了使服务集群更加健壮,使用Hystrix的融化机制来避免微服务架构中单个服务的异常导致的故障传播。
让我们来谈谈这种架构需要做的一些事情及其缺点:
1.首先,它破坏了服务的无状态特性。为了保证外部服务的安全性,我们需要控制服务的访问权限,而开放服务的权限控制机制会贯穿和污染开放服务的整个业务逻辑,带来最直接的问题就是会破坏服务集群中REST API的无状态特性。从具体开发和测试的角度来看,除了考虑实际的业务逻辑,我们还需要额外的可持续控制和处理接口访问。
2.其次,现有的接口不能直接重用。当我们需要将外部服务访问到一个已有的集群内访问接口时,我们不得不在原接口上添加检查逻辑或者添加代理调用来实现权限控制,因此不能直接重用原接口。
怎样才能解决以上问题?让我们进入本文的主题:服务网关!
为了解决上述问题,我们需要把权限控制之类的东西拿出我们的服务单元,而这些逻辑最适合的地方就是在外部访问的前端。我们需要一个更强大的负载平衡器,这就是本文将在未来介绍的:服务网关。
网关是微服务架构不可或缺的一部分。在通过服务网关向外部系统提供REST API的过程中,不仅具有服务路由和负载均衡的功能,还具有权限控制的功能。春云网飞中的Zuul就扮演了这样一个角色,它为微服务架构提供了前门保护,同时将权限控制这一繁重的非业务逻辑内容迁移到服务路由层面,使服务集群体可以具有更高的复用性和可测试性。
(7)Spring Cloud Bus
(5)Spring Cloud Config中,我们知道的配置文件可以通过Config Server存放在Git等地方,通过Config Client读取,但是我们的配置文件不可能一直是常量。当配置文件改变时,我们如何更新它们?
最简单的方法就是重新检查Config客户端进行重新采集,但是Spring Cloud绝对不会让你这么做。Spring Cloud Bus提供了一个操作,允许我们在不关闭服务的情况下更新配置。
春云巴士官方含义:消息巴士。
当然,动态更新服务配置只是消息总线的一种用途,还有很多其他用途。
总结
春云的成分不止这些。通过以上口水的介绍,应该可以有个大概的了解,但是各个组件的功能远不止以上所述,每个组件还有很多其他的功能点。这里的介绍希望带你入门,不要害怕微服务这么大的概念。
有关编程的更多信息,请访问:编程视频!这就是春云的七个组成部分的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。