Spring Cloud简介
什么是微服务(Microservice)
微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩展。由于有了轻量级的通信协作基础,所以这个微服务可以通过不同的语言进行开发编写。
目前主流的微服务框架:Dubbo、 Spring Cloud、thrift、Hessian等。微服务框架适合的场景
- 我们把整个系统根据业务拆分成几个子系统。
- 每个子系统可以部署多个应用,多个应用之间使用负载均衡。
- 需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。
- 所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。
- 服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。
- 需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。
- 还需要一个监控功能,监控每个服务调用花费的时间等。
初探Spring Cloud
Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具,为微服务架构中的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
Spring Cloud包含多个子项目:
- Spring Cloud Config 配置管理工具,支持使用git存储配置内容,并支持客户端配置信息刷新、加密/解密配置内容等。
- Spring Cloud Netflix 核心组件,对多个Netflix进行整合。
- Eureka 服务治理组件,包含服务注册中心、服务注册与发现机制的实现
- Hystrix 容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟启动和为故障提供强大的容错能力。
- Ribbon 客户端负载均衡的服务调用组件
- Feign 基于 Ribbon和Hystrix的声明式服务调用组件
- Zuul 网关组件,提供智能路由、过滤访问等功能
- Archaius 外部化配置组件
- Spring Cloud Bus 事件、消息总线,用于传播集群中的状态变化或者事件,以触发后续的处理,比如来动态刷新配置
- Spring Cloud Cluster 针对ZooKeeper、Redis、Hazelacst、Consul的选举算法和通用状态模式的实现
- Spring Cloud Cloudfoundry 与Pivotal Cloudfoundry的整合支持
- Spring Cloud Consul 服务发现与配置管理工具
- Spring Cloud Stream 通过Redis、Rabbit或者Kafka实现的消费微服务,可以通过简单的声明式模型来发送和接受消息。
- Spring Cloud AWS 简化整合aws的组件
- Spring Cloud Security 安全工具包,提供Zuul代理中对于OAuth2客户端请求中的中继器
- Spring Cloud Sleuth Spring Cloud应用的分布式跟踪实现,可以完美整合ZipKin
- Spring Cloud ZooKeeper 基于ZooKeeper的服务发现与配置管理组件
- Spring Cloud Starters Spring Cloud的基础组件,基于Spring Boot风格项目的基础依赖模块
- Spring Cloud CLI 用于Groovy中快速创建Spring Boot项目的Spring Boot CLI插件
- …