Spring Cloud 概述

文章目录

  • 什么是Spring Cloud
  • 注册中心中间件
  • 配置中心中间件
    • Spring Cloud Config
    • Apollo
  • 网关中间件
    • Spring Cloud 第一代网络Zuul
    • Spring Cloud 第二代网络Gateway
  • 全链路监控中间件
  • 分布式事务
    • X/Open DTP模型与XA接口


什么是Spring Cloud

Spring Cloud是一种中间件,它目前由Spring官方开发与维护,基于Spring Boot开发,提供一套完整的微服务解决方案。包括服务注册于发现、配置中心、全链路监控、API网关、负载均衡、熔断器等选型中立的开源组件,可以随需扩展和替换。

注册中心中间件

因微服务众多,在需要知道有多少应用上线,以及某个服务有多少实例等问题。如果服务之间需要相互调用就需要写具体的IP和端口号,而在部署时候因扩/缩容,导致IP地址和端口号变动。服务调用机会出现问题。
因此需要将所有服务实例统一注册到一起进行管理,这个就是服务注册中心。

特性 Eureka Consul Zookeeper etcd
服务监控检查 可配支持 服务状态、内存、硬盘等 长连接、keeplive 连接心跳
多数据中心 - 支持 - -
KV存储服务 - 支持 支持 支持
一致性 - raft pasox faft
CAP AP CA CP CP
使用接口(多语言) http http和dns 客户端 http和grpc
watch支持 支持long polling/大部分增量 全量/支持long polling 支持 支持long polling

配置中心中间件

在分布式式系统中,由于存在多个服务实例,需要分别管理每个具体服务工程中的配置,上线需要检查每个上下服务的配置是否正确。在系统上线之后一旦要修改某个配置,就需要查找到指定的服务,并对当前服务所有实例进行修改并重启。因此需要把分布式系统中的配置信息抽象出来统一管理、并可实自动更新配置。这个管理中间件称为配置中心。

Spring Cloud Config

基于应用、环境、版本三个维度管理、配置存储支持Git、本地、数据库等,且无缝支持Spring里Environment和PropertySource的接口。
缺点没有可视化的管理平台。

Apollo

功能类似于Spring Cloud Config,是携程开源的配置中心,有可视化的管理平台。

网关中间件

包含:Gateway 和Zuul两种选择方案

  1. 统一接入功能:
    为各种无线应用提供统一的接入服务,提供一个高性能、高并发、高可靠的网关服务。还支持负载均衡、容灾切换和异地多活。
  2. 协议适配功能:
    网关对外的请求协议一般是HTTP或HTTP2协议,而后端提供访问的服务协议要么是REST协议要么是RPC协议。网关需要根据请求的协议进行适配,然后协议转发调用不同的协议提供的服务。
  3. 流量管控功能:
    网关作为所有请求流量的入口,当请求流程瞬间剧增,此时需要进行流量监控、流量调拨。当后端服务出现异常,服务不可用时,需要网关进行熔断和服务降级。在异地多活场景中需要根据请求流量进行分片,路由到不同的机房。
  4. 安全防护功能:
    网关需要对所有请求进行安全防护过滤,包含后端服务。通过与安全风控部门合作,对IP黑名单和URL黑名单封禁控制,做风控防刷,防恶意攻击等。

Spring Cloud 第一代网络Zuul

每个请求分配一个线程来处理。
是Netflix公司开源的网关组件,可以开箱即用。根据配置的路由规则或者默认的路由规则进行裸游转发和负载均衡。集成Hystrix实现网关层面降级功能;集成Ribbon使得整个框架具备弹性伸缩能力;集成Archaius可以进行配置管理等。需要灰度发布、降级、标签路由、限流、WAF封禁则需要自定义开发。

Spring Cloud 第二代网络Gateway

通过Netty实现(Netty的线程模型是多线程reactor模型,使用boos线程和worker线程接收并异步处理请求,具有强大的高并发处理能力)网络请求处理。
是Spring官方基于Spring 5.0、Spring Boot 2.0 和 Project Reactor登技术开发的网关,旨在为微服务提供一种简单、有效、统一的API路由管理方式。除了提供了Zuul类型功能还提供了:安全、监控/埋点、限流等。

全链路监控中间件

在微服务系统中,一个请求过来之后会通过多个服务,并且在每个服务中留下足迹和相关的日志信息。但是这些信息是分散在每一台应用主机下的,不利于问题排除和定位问题发生的根本原因。
因此需要利用全链路监控中间件收集、汇总分析日志信息,进行可视化展示和监控告警。

  1. 定位慢调用:包括慢Web服务、慢REST或RPC服务、慢SQL。
  2. 定位各种错误:包括4**、5**、Service Error。
  3. 定位各种异常:包括Error Exception、Fatal Exception。
  4. 展现依赖和拓扑:域拓扑、服务拓扑、trace拓扑。
  5. Trace调用链:将端到端的调用,以及附加在这次调用的上线文信息,异常日志信息,每一个调用点的耗时都呈现给用户进行展示。
  6. 应用告警:根据运维设定的告警规则,扫描指数数据,如违反告警规则,则将告警信息上报道中央告警平台。

PoinPoint:
Skywalking:
Sleuth:

分布式事务

大型应用拆分为分布式系统后,进程间的通信机制和故障处理措施变得更加复杂。
系统微服务后,一个功能可能需要调用多个服务并操作多个数据库实现,服务调用的分布式事务问题变得非常突出。
如何保证分布式事务数据一致性问题,

X/Open DTP模型与XA接口

一个业务操作涉及到多个数据源进行操作,那么原来单一的事物来控制就会不能满足(全局事物)数据的一致性要求。 是基于2PC实现的。

  1. AP(Application Program,应用程序):即需要使用分布式事务的应用服务。
  2. RM(Resource Manager,资源管理器):比如数据库或文件系统,提供对共享资源的访问,保障资源的ACID特性。
  3. TM(Transaction Manager,事务管理器):主要是给事物分配唯一标识,负责事物的启动、提交和回滚,保障全局事物的原子性。
  4. CRMs(Communication Resource Managers,通信资源管理器):负责控制分布式应用在TM domain(一组使用同一个TM的实例结合)之内跨TM domain之间的通信,该通信使用的是OSI IP(Open Systems Interconnection Distributed Transaction Processing)服务。
  5. 通信协议:由通信资源管理器支持,在分布式应用使用的通信协议。

你可能感兴趣的:(微服务,spring,cloud,eureka,java)