SpringCloud.大话SpringCloud
Posted hs5201314tx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud.大话SpringCloud相关的知识,希望对你有一定的参考价值。
学习一个东西,首先要搞清楚这个东西是什么,有什么用,怎么用。最近会坚持写博客,将最近学习的SpringCloud的过程记录下来,很多东西往往看了一遍过一段时间就会遗忘,用博客记录下来是一个很好的方式,在整理的过程中才能查漏补缺,知道自己哪些地方掌握的不牢,哪些地方可能是之前学习没有想到的地方。
一、什么是SpringCloud
在说SpringCloud之前,不得不提一下微服务,微服务是可以独立部署,水平扩张,独立访问(或者有单独的数据库)的服务单元。当一个单体系统越来越庞大时,带来的业务逻辑混乱,相互关联复杂等问题越来越凸显,而微服务则专注于单一的任务,通过微服务之间的相互调用实现业务联系,SpringCloud则是这些这些微服务的大管家,通过服务注册,集群,负载均衡,熔断机制,配置中心,消息总线,网关等来监控整个服务的运行。
SpringCloud是一系列有序框架的集合,通过SpringBoot简化了基础分布式系统的开发,如服务注册,集群,负载均衡,熔断机制,配置中心,消息总线,网关都可以通过SpringBoot一键启动和部署,SpringBoot专注于单体服务的开发,实现快速开发部署,SpringCloud则专注于全局管理,管理整个微服务的生态。最终给开发者一套简便,易于开发维护的分布式系统。
二、SpringCloud组成
SpringCloud由Spring Cloud Netflix(Eureka、Hystrix、Zuul..)、Spring Cloud Config、Spring Cloud Bus、Spring Cloud for Cloud Foundry、Spring Cloud Cluster、Spring Cloud Consul、Spring Cloud Security、Spring Cloud Sleuth、Spring Cloud Data Flow、Spring Cloud Stream、Spring Cloud Task、Spring Cloud Zookeeper、Spring Cloud Connectors、Spring Cloud Starters、Spring Cloud CLI这些组件组成,下面就给大家详细介绍下几个常见的
1.Spring Cloud Netflix
核心组件,地位仅次于老大,是整个微服务的核心,老大的 各项服务都依赖于它。包括Eureka、Hystrix、Zuul等小弟。
Eureka(服务注册中心)
用于微服务的各项服务的注册与发现,所有的微服务都要到注册中心报道,同样想要调用任何服务也要通过服务注册中心调用。可以简化微服务之间的调用关系。
Hystrix(熔断器)
当某个微服务出现故障时,其他调用它的服务也会因为连续请求无响应,导致其他服务也出现故障,导致故障扩散到整个系统,导致服务出现雪崩效应,此时就需要熔断器,其作用旨在通过熔断机制控制服务和第三方库节点,对延迟和故障提供更强大的容错能力。当某个小弟无响应时,会让这个小弟下线让其他的小弟先顶上来,或者告诉你这个小弟挂掉,别在这傻傻的排队了。
Zuul(网关路由)
简化前端的请求逻辑,所有的请求都通过网关,由Zuul根据路由规则将请求转发到相应的微服务,用大白话解释就是个看大门的,想找我老大和下面的小弟先通过我再说。在这个过程中Zuul可以实现单点登录,路由转发,限流熔断,日志监控,安全认证,负载均衡这些基础功能。
2.Spring Cloud Config(配置中心)
Spring Cloud 由大量的子项目组成,每个项目都有自己的配置文件,在开发和维护时会造成遗忘等问题的出现,通过配置中心可以实现配置文件的统一管理,目前支持本地存储、GIT、SVN。
3.Spring Cloud Bus(事件、消息总线)
用于集群中传播状态变化(如配置状态改变),确保各微服务之间的消息通畅。
Spring Cloud for Cloud Foundry(一下都是来自纯洁的微笑的博客,这些我都没怎么用到,没学过)
Cloud Foundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题
其实就是与CloudFoundry进行集成的一套解决方案,抱了Cloud Foundry的大腿。
Spring Cloud Cluster
Spring Cloud Cluster将取代Spring Integration。提供在分布式系统中的集群所需要的基础功能支持,如:选举、集群的状态一致性、全局锁、tokens等常见状态模式的抽象和实现。
如果把不同的帮派组织成统一的整体,Spring Cloud Cluster已经帮你提供了很多方便组织成统一的工具。
Spring Cloud Consul
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对.
Spring Cloud Consul 封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。
其它小弟
Spring Cloud Security
基于spring security的安全工具包,为你的应用程序添加安全控制。这个小弟很牛鼻专门负责整个帮派的安全问题,设置不同的门派访问特定的资源,不能把秘籍葵花宝典泄漏了。
Spring Cloud Sleuth
日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案。
Spring Cloud Data Flow
-
Data flow 是一个用于开发和执行大范围数据处理其模式包括ETL,批量运算和持续运算的统一编程模型和托管服务。
-
对于在现代运行环境中可组合的微服务程序来说,Spring Cloud data flow是一个原生云可编配的服务。使用Spring Cloud data flow,开发者可以为像数据抽取,实时分析,和数据导入/导出这种常见用例创建和编配数据通道 (data pipelines)。
-
Spring Cloud data flow 是基于原生云对 spring XD的重新设计,该项目目标是简化大数据应用的开发。Spring XD 的流处理和批处理模块的重构分别是基于 Spring Boot的stream 和 task/batch 的微服务程序。这些程序现在都是自动部署单元而且他们原生的支持像 Cloud Foundry、Apache YARN、Apache Mesos和Kubernetes 等现代运行环境。
-
Spring Cloud data flow 为基于微服务的分布式流处理和批处理数据通道提供了一系列模型和最佳实践。
Spring Cloud Stream
Spring Cloud Stream是创建消息驱动微服务应用的框架。Spring Cloud Stream是基于Spring Boot创建,用来建立单独的/工业级spring应用,使用spring integration提供与消息代理之间的连接。数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。
一个业务会牵扯到多个任务,任务之间是通过事件触发的,这就是Spring Cloud stream要干的事了
Spring Cloud Task
Spring Cloud Task 主要解决短命微服务的任务管理,任务调度的工作,比如说某些定时任务晚上就跑一次,或者某项数据分析临时就跑几次。
Spring Cloud Zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
操作Zookeeper的工具包,用于使用zookeeper方式的服务发现和配置管理,抱了Zookeeper的大腿。
Spring Cloud Connectors
Spring Cloud Connectors 简化了连接到服务的过程和从云平台获取操作的过程,有很强的扩展性,可以利用Spring Cloud Connectors来构建你自己的云平台。
便于云端应用程序在各种PaaS平台连接到后端,如:数据库和消息代理服务。
Spring Cloud Starters
Spring Boot式的启动项目,为Spring Cloud提供开箱即用的依赖管理。
Spring Cloud CLI
基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。
下一章将具体介绍SpringCloud的Eureka组件。
真正伤害你的,从来不是事情本身,而是你对事情的看法。没人有可以让你痛苦那么久,除非你自己愿意。
以上是关于SpringCloud.大话SpringCloud的主要内容,如果未能解决你的问题,请参考以下文章
springcloud教程,springcloud指南,springcloud中文手册,springcloud项目实战,springcloud源码分享