初识SpringCloud

SpringCloud是什么?
参考链接:
https://www.fangzhipeng.com/spring-cloud.html
一、概念定义
Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。
Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成。
Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式。
Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

二、Spring Cloud的项目的位置
Sping Cloud是Spring的一个顶级项目,Spring的顶级项目列表如下:
• Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作了。
• Spring Boot:旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。
• Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。
• Spring Cloud:微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。
• Spring XD:是一种运行时环境(服务器软件,非开发框架),组合spring技术,如spring batch、spring boot、spring data,采集大数据并处理。
• Spring Data:是一个数据访问及操作的工具包,封装了很多种数据及数据库的访问相关技术,包括:jdbc、Redis、MongoDB、Neo4j等。
• Spring Batch:批处理框架,或说是批量任务执行管理器,功能包括任务调度、日志记录/跟踪等。
• Spring Security:是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
• Spring Integration:面向企业应用集成(EAI/ESB)的编程框架,支持的通信方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。
• Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。
• Spring AMQP:消息队列操作的工具包,主要是封装了RabbitMQ的操作。
• Spring HATEOAS:是一个用于支持实现超文本驱动的 REST Web 服务的开发库。
• Spring Mobile:是Spring MVC的扩展,用来简化手机上的Web应用开发。
• Spring for Android:是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,提供RestTemplate来访问Rest服务。
• Spring Web Flow:目标是成为管理Web应用页面流程的最佳方案,将页面跳转流程单独管理,并可配置。
• Spring LDAP:是一个用于操作LDAP的Java工具包,基于Spring的JdbcTemplate模式,简化LDAP访问。
• Spring Session:session管理的开发工具包,让你可以把session保存到redis等,进行集群化session管理。
• Spring Web Services:是基于Spring的Web服务框架,提供SOAP服务开发,允许通过多种方式创建Web服务。
• Spring Shell:提供交互式的Shell可让你使用简单的基于Spring的编程模型来开发命令,比如Spring Roo命令。
• Spring Roo:是一种Spring开发的辅助工具,使用命令行操作来生成自动化项目,操作非常类似于Rails。
• Spring Scala:为Scala语言编程提供的spring框架的封装(新的编程语言,Java平台的Scala于2003年底/2004年初发布)。
• Spring BlazeDS Integration:一个开发RIA工具包,可以集成Adobe Flex、BlazeDS、Spring以及Java技术创建RIA。
• Spring Loaded:用于实现java程序和web应用的热部署的开源工具。
• Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。
三、Spring Cloud的子项目
Spring Cloud包含了很多子项目,如:

• Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,支持应用配置的外部化存储,支持客户端配置信息刷新、加解密配置内容等
• Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
• Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
Netflix Eureka:一个基于rest服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。实现cap中的ap,每个客户端都有一份副本,这样不会在server挂了不可用;默认90秒没收到服务的心跳信息则会注销该服务,提供自我保护模式,防止网络异常导致注销大量服务;client默认30秒向server发送心跳;client会缓存服务注册表中的信息,可以提高性能,降低server压力,高可用。
Netflix Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。熔断,基于archaius实现动态配置。通过/health基于查看断路器是否打开,默认是5秒内20次失败,则会打开。dashboard监控单个,turbine聚合多个。turbine可以配置mq进行收集信息,客户端需要引入mq,修改注解为@EnableTurbineStream,并移除配置,采用mq配置即可。
Netflix Ribbon:客户端负载均衡的服务调用组件。负载均衡 配合 eureka 实现通过虚拟机主名称调用服务。虚拟主机名称不能有"_",否则调用时会报错。自定义ribbon属性 clientName.ribbon.[ILoadBalancer|IRule|IPing|ServerList|ServerListFilter]实现类支持其他非eureka支持的 实现负载均衡,只需配置clientName.ribbon.listOfServers:[host:port,host2:port2]。
Netflix Feign:基于Ribbon和Hystrix的声明式服务调用组件。声明式REST调用 整合了 eureka、ribbon和hystrix。支持请求或响应压缩。
hytrix支持:
熔断时,可以通过FallbackFactory检查回退的原因;
如果要监控,需要单独引入hystrix并开启nableCircuitBreaker注解;
配置feign.hystrix.enabled是否禁用熔断,全局 也可以通过configuration指定配置类,局部禁用熔断。
Netflix Zuul:微服务网关,提供动态路由,访问过滤等服务。默认整合了Eureka、Ribbon、Hystrix等,可以实现如下功能:
身份认证与安全;审查与监控;动态路由;压力测试;负载分配;静态响应处理;多区域弹性
Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Sleuth:链路监控
Zipkin :链路监控收集 配合 sleuth使用

• Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。
• Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。
• Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。
• Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。
• Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。
• Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。
• Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。
• Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。
补充:
断路器(Curcuit Breaker)模式
在分布式环境下,特别是微服务结构的分布式系统中, 一个软件系统调用另外一个远程系统是非常普遍的。这种远程调用的被调用方可能是另外一个进程,或者是跨网路的另外一台主机, 这种远程的调用和进程的内部调用最大的区别是,远程调用可能会失败,或者挂起而没有任何回应,直到超时。更坏的情况是, 如果有多个调用者对同一个挂起的服务进行调用,那么就很有可能的是一个服务的超时等待迅速蔓延到整个分布式系统,引起连锁反应, 从而消耗掉整个分布式系统大量资源。最终可能导致系统瘫痪。
断路器(Circuit Breaker)模式就是为了防止在分布式系统中出现这种瀑布似的连锁反应导致的灾难。
一旦某个电器出问题,为了防止灾难,电路的保险丝就会熔断。断路器类似于电路的保险丝, 实现思路非常简单,可以将需要保护的远程服务调用封装起来,在内部监听失败次数, 一旦失败次数达到某阀值后,所有后续对该服务的调用,断路器截获后都直接返回错误到调用方,而不会继续调用已经出问题的服务, 从而达到保护调用方的目的, 整个系统也就不会出现因为超时而产生的瀑布式连锁反应。

参考网址: https://www.fangzhipeng.com/spring-cloud.html
https://www.cnblogs.com/lexiaofei/p/6808152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值