微服务架构Spring Cloud学习笔记1——基本概念

基本概念

  • Spring Cloud是一种微服务开发模板,模板中包含了许多常用组件,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线等,Spring Cloud基于云原生的思想
  • 云原生(Cloud Native)是一种软件开发风格,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组。Cloud Native既包含技术(微服务,敏捷基础设施),也包含管理(DevOps,持续交付,康威定律,重组等)。Cloud Native也可以说是一系列Cloud技术、企业管理方法的集合
  • Spring Cloud是基于Spring Boot的, 用于管理Spring Boot创建的各个微服务应用
  • Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式

Spring Cloud Config

  • spring cloud config是分布式配置中心组件
  • 在分布式系统中,每一个功能模块都能拆分成一个独立的服务,一次请求的完成,可能会调用很多个服务协调来完成
  • spring cloud config支持配置文件放在在配置服务的内存中,也支持放在远程Git仓库里
  • config server用来管理所有的配置文件,维护的时候需要更改配置时,只需要在本地更改后,推送到远程仓库,所有的服务实例都可以通过config server来获取配置文件,为了保证系统的稳定,配置服务端config server可以进行集群部署
  • 每个服务实例向config server获取配置文件,相当于配置服务的客户端config client
  • 别人的架构图
    在这里插入图片描述

Spring Cloud Bus

  • Spring cloud bus通过轻量消息代理连接各个分布的节点
  • 作用是管理和传播所有分布式项目中的消息
  • 其实本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和RabbitMQ
  • 别人的架构图
    在这里插入图片描述

Spring Cloud Netflix

针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

Netflix Eureka

  • Eureka是服务发现组件

参考什么是服务发现

  • 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步
  • 当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取
  • 当Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态
  • 服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例
  • 别人的架构图
    在这里插入图片描述

Netflix Hystrix

  • 容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力
  • 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。为了解决这个问题,业界提出了断路器模型(引用)
  • 当失败的请求达到一个阈值(默认5秒失败20次),断路器生效,在一段时间内,所有尝试调用这个service的请求都会立即失败。在时间窗口过期后,断路器允许一小部分请求过去验证service是否已经恢复正常
  • 别人的逻辑图
    在这里插入图片描述

Netflix Ribbon

  • 主要功能是提供客户端的软件负载均衡算法
  • Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等
  • 别人的架构图
    在这里插入图片描述

Netflix Feign

  • Feign是spring cloud中的调用框架,通常与ribbon,hystrix等组合使用
  • 参考文章

Netflix Zuul

  • zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用
  • zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架
  • Zuul做为网关层,自身也是一个微服务,跟其它服务Service-1,Service-2, … Service-N一样,都注册在eureka server上,可以相互发现,同时又以服务名为ContextPath的方式创建路由映射
    在这里插入图片描述
  • zuul的核心是一系列的filters
  • zuul把Request route到 用户处理逻辑 的过程中,这些filter参与一些过滤处理,比如Authentication,Load Shedding等
  • 别人的架构图
    在这里插入图片描述
    参考文章

Netflix Archaius

  • archaius是基于java的配置管理类库,主要用于多配置存储的动态获取
  • 在云平台开发中可以将其用作分布式配置管理依赖构件
  • 能够实现动态类型化属性、配置改变时的回调机制、轮询框架、JMX,通过Jconsole检查和调用操作属性
    组合配置
  • 别人的架构图
    在这里插入图片描述

Spring Cloud Sleuth

  • Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了Dapper,Zipkin和HTrace操作
  • Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它
  • Trace:一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要创建一个trace
  • Annotation:用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束
    • cs - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始
    • sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网络延迟
    • ss - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服务端需要的处理请求时间
    • cr - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间
  • 架构图
    在这里插入图片描述
  • 案例

Spring Cloud Data Flow

  • Spring Cloud DataFlow用于开发和执行大范围数据处理包括ETL、批量计算和持续计算的统一编程模型和托管服务
  • 开发者可以通过Spring Cloud DataFlow,在数据获取、实时分析、批处理等常见用例中执行数据流的创建和编排
  • 参考文档

Spring Cloud Security

  • 安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。
  • 参考文档

Spring Cloud Consul

  • 封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成
  • 各种服务发现工具的比较
    在这里插入图片描述
    参考文档

Spring Cloud Zookeeper

  • 操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现
  • ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能
  • 参考文档

Spring Cloud Stream

  • Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架
  • 他通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动
  • 目前仅支持RabbitMQ、Kafka、Redis
  • 应用通过Spring Cloud Stream插入的input和output通道与外界交流
    在这里插入图片描述
  • 参考文章

Spring Cloud CLI

  • 提供命令行工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值