Spring Cloud(一) 简介

Spring Cloud简介

  1. 什么是微服务(Microservice)

      微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩展。由于有了轻量级的通信协作基础,所以这个微服务可以通过不同的语言进行开发编写。
      目前主流的微服务框架:Dubbo、 Spring Cloud、thrift、Hessian等。

  2. 微服务框架适合的场景

    1. 我们把整个系统根据业务拆分成几个子系统。
    2. 每个子系统可以部署多个应用,多个应用之间使用负载均衡。
    3. 需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。
    4. 所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。
    5. 服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。
    6. 需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。
    7. 还需要一个监控功能,监控每个服务调用花费的时间等。

初探Spring Cloud

  Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具,为微服务架构中的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
  Spring Cloud包含多个子项目:

  1. Spring Cloud Config 配置管理工具,支持使用git存储配置内容,并支持客户端配置信息刷新、加密/解密配置内容等。
  2. Spring Cloud Netflix 核心组件,对多个Netflix进行整合。
    1. Eureka 服务治理组件,包含服务注册中心、服务注册与发现机制的实现
    2. Hystrix 容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟启动和为故障提供强大的容错能力。
    3. Ribbon 客户端负载均衡的服务调用组件
    4. Feign 基于 Ribbon和Hystrix的声明式服务调用组件
    5. Zuul 网关组件,提供智能路由、过滤访问等功能
    6. Archaius 外部化配置组件
  3. Spring Cloud Bus 事件、消息总线,用于传播集群中的状态变化或者事件,以触发后续的处理,比如来动态刷新配置
  4. Spring Cloud Cluster 针对ZooKeeper、Redis、Hazelacst、Consul的选举算法和通用状态模式的实现
  5. Spring Cloud Cloudfoundry 与Pivotal Cloudfoundry的整合支持
  6. Spring Cloud Consul 服务发现与配置管理工具
  7. Spring Cloud Stream 通过Redis、Rabbit或者Kafka实现的消费微服务,可以通过简单的声明式模型来发送和接受消息。
  8. Spring Cloud AWS 简化整合aws的组件
  9. Spring Cloud Security 安全工具包,提供Zuul代理中对于OAuth2客户端请求中的中继器
  10. Spring Cloud Sleuth Spring Cloud应用的分布式跟踪实现,可以完美整合ZipKin
  11. Spring Cloud ZooKeeper 基于ZooKeeper的服务发现与配置管理组件
  12. Spring Cloud Starters Spring Cloud的基础组件,基于Spring Boot风格项目的基础依赖模块
  13. Spring Cloud CLI 用于Groovy中快速创建Spring Boot项目的Spring Boot CLI插件