Spring Cloud 学习笔记01----微服务简介

简介

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

Spring Cloud 包括了多个子项目:

  • Spring Cloud Config:配置管理工具,支持使用Git 存储配置内容,可以使用它实现应用配置的外部化存储,并支持客户端信息刷新。加密/解密配置内容等。
  • Spring Cloud Netflix: 核心组件,对多个Netflix OSS 开源套件进行整合。
    • Eureka: 服务治理组件,包括服务注册中心,服务注册与发现机制的实现。
    • Hystrix: 容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力。
    • Ribbon: 客户端负载均衡的服务调用组件。
    • Feign: 基于Ribbon和Hystrix的声明式服务调用组件。
    • Zuul: 网关组件,提供智能路由、访问过滤等功能。
    • Archaius: 外部化配置组件。
    • Spring Cloud Bus: 事件、消息总线,用于传播集群中的状态变化或事件,已触发后续的处理,比如用来动态刷新配置等。
    • Spring Cloud Cluster: 针对Zookeeper、Redis、Hazelcatst、Consul的选举算法和通用状态模式的实现。
    • Spring Cloud Stream: 通过Redis、Rabbit或者Kafka实现的消费微服务,可以通过简单的声明式模型来发送和接收消息。
    • Spring Cloud ZooKeeper: 基于ZooKeeper的服务发现和配置管理组件。

微服务架构

简单来说,微服务架构就是将应用从存储开始垂直拆分成一系列小的web 服务,这些服务可以独立的编译及部署。服务之间通过各自暴露的Api 接口(诸如 RESTful API)相互通讯。

功能和使用场景

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

设计原则

  1. 单一职责原则
  2. 服务自治原则
  3. 轻量级通信机制
  4. 微服务粒度

整体架构图

在这里插入图片描述

架构图说明

  1. Eureka 负责服务的注册与发现,很好地将各服务连接起来。
  2. Hystrix 负责监控服务之间的调用情况,连续失败多次进行熔断保护。
  3. Hystrix dashboard,Turbine负责监控Hystrix的熔断情况并给予图形化的展示
  4. Spring Cloud Config 提供了同一个的配置中心服务
  5. 当配置文件发生变化的时候,Spring Cloud Bus通知各服务去获取罪行的配置信息
  6. 所有对外的请求和服务,我们都通过Zuul来进行转发,起到API网关的作用。
  7. 监控我们使用Sleuth+Zipkin+SpringAdmin将所有的请求数据记录下来,方便我们进行后续分析。

版本说明

由于Spring Cloud 不像Spring 社区其他的一些项目那样相对独立,它是一个拥有诸多子项目的大型综合项目,可以说是对微服务架构解决方法的综合套件组合,其包含的各个子项目也都独立进行着内容的更新与迭代,各自都维护着自己的发布版本号。因此每一个Spring Cloud的版本都会包含多个不同版本的子项目,为了管理每个版本的子项目清单,避免Spring Cloud的版本号与其子项目的版本号相混淆,没有采用版本号的方式,而是通过命名的方式。
当一个版本的Spring Cloud 项目的发布内容积累到一个临界点或者一个严重的bug解决可用后,就会发布一个“service release ” 版本,简称SRX版本。其中X是一个递增的数字,所以Brixton.SR5就是Brixton的第5个 Release版本。

引用

《Spring Cloud微服务实战》
http://blog.didispace.com/spring-cloud-starter-dalston-1/




作者:码农飞哥

微信公众号:码农飞哥