springcloud学习手册-什么是springcloud?

导读 | springcloud 概念

springboot框架

了解springcloud前先简单了解一下springboot框架

springboot是由 Pivotal团队提供的新框架,它设计目的是用来简化新spring应用的初始搭建以及开发过程。它的核心思想就是约定大于配置,它使用了特定的方式来进行配置,简化开发人员的工作。其实:springboot并不是什么新框架,它其实整合了众多框架,像maven整合了很多jar一样,方便开发人员初始化工程和开发过程。

什么是springcloud?

springcloud在springboot的基础上提供了一系列针对分布式场景的基础设施。SpringCloud是一系列框架的有序集合,它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,它包含了服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等内容,它用 SpringBoot的开发风格做到一键启动和部署。Spring其实并没有重复制造轮子,它主要就是将各家开发的比较成熟服务框架组合起来,通过SpringBoot风格进行再封装、屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。大家可以理解springcloud是个类似“全家桶”套餐,大家想吃鸡腿吃鸡腿,想吃汉堡吃汉堡。

如下是springcloud组件架构图:

结合这张图介绍一下springcloud主要应用过程:

  1. 所有请求(来自移动端、客户端等)统一通过 网关服务(Zuul proxy)来访问内部服务。
  2. 网关接收到请求后,从注册中心(Eureka)获取可用微服务。
  3. 其中 Ribbon 主要用于均衡负载作用,它可以判断并分发具体的请求到后端的具体应用服务实例,起到分发压力的作用。
  4. 微服务(services)之间通过 Feign 进行通信处理业务,保持服务一致性。
  5. Hystrix 负责处理服务超时熔断。
  6. Turbine 监控服务间的调用和熔断相关指标。

从上面这张图主要可以看出springcloud 主要包含如下几下核心功能:

  1. 分布式/版本化配置。
  2. 服务注册和发现( Netflix Eureka)。
  3. 路由
  4. 服务和服务之间的调用。
  5. 负载均衡。
  6. 断路器 (Hystrix)
  7. 分布式消息传递 (bus)。

下面简单说一下这些核心功能以及都有具体是做什么用的:

Netflix Eureka:Eureka负责服务的注册于发现,如果学习过Zookeeper的话,就可以很好的理解,Eureka的角色和 Zookeeper的角色差不多,都是服务的注册和发现,构成Eureka体系的包括:服务注册中心、服务提供者、服务消费者。

Netflix Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。比如突然某个服务出现了故障,当请求多时,就会发生严重的阻塞影响整体服务的响应。Hystrix会发现某个不在状态不稳定服务,让其它服务调过来响应。

Netflix Zuul:Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。可以实现动态获取配置,原理是每隔60s(默认,可配置)从配置源读取一次内容,这样修改了配置文件后不需要重启服务就可以使修改后的内容生效,前提使用archaius的API来读取。

Spring Cloud Config:俗称的配置中心,配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。方便以后统一管理、升级装备。

Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

Spring Cloud for Cloud Foundry:Cloud Foundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

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容器可以无缝集成。

springcloud还包含其它组件,咱们这里重点不再介绍.大家可以上网查一下

声明:文章属于个人原创,转载请注明文章出处

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2017-12-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WindCoder

优化WordPress性能的高级指南

虽然玩wordpress,但对wordpress和php内部了解不多,这篇文章算是自己的视野扩展吧,不足之处,欢迎指出,老规矩,能力强的可以直接读原文。

391
来自专栏Golang语言社区

NSQ:分布式的实时消息平台--简介

源码下载地址: https://github.com/bitly/nsq NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在Gi...

3846
来自专栏程序猿DD

Spring Cloud构建微服务架构:服务网关(基础)【Dalston版】

通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了。比如下图所示: ? 我们使用Spring Clou...

1897
来自专栏Java架构师学习

前阿里开发工程师的分享微服务之基于Docker的分布式企业级实践前言Microservice 和 Docker服务发现模式服务端发现模式服务注册第三方注册模式 Third party registra

前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Docker 的技术体系的...

3768
来自专栏java达人

Netty 长连接服务

来源:Dozer's Technology Blog 链接:https://www.dozer.cc/2014/12/netty-long-connectio...

4958
来自专栏CSDN技术头条

服务端接口自动化测试工具大全及适配环境解析

在互联网时代,服务端测试已经成为一个重要的产品保障手段,各对此公司实施的方法和技术也不同,本文我们就来讨论一下。 互联网服务端接口自动化是各个公司都需要一部分业...

3616
来自专栏Golang语言社区

NSQ:分布式的实时消息平台--简介

源码下载地址: https://github.com/bitly/nsq NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在Gi...

4156
来自专栏云技术

腾讯云存储专家深度解读基于Ceph对象存储的混合云机制

  毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目。如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储、对...

8.7K13
来自专栏Netkiller

分布式计划任务设计与实现

分布式计划任务设计与实现 摘要 本文主要通过分布式计划任务软件设计讲述分布式软件开发。 我的系列文档 Netkiller Architect 手札 Netk...

2745
来自专栏Golang语言社区

NSQ:分布式的实时消息平台--简介

源码下载地址: https://github.com/bitly/nsq NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在Gi...

2966

扫描关注云+社区