0%

spring-cloud

MicroService

  • 服务治理:注册中心(注册和发现)、配置中心、网关
  • 服务调用:负载均衡
  • 服务防护:重试、熔断、降级、限流、预热

Service Management(服务治理)

注册中心

  • Zookeeper:支持CP,不适合注册中心,分布式协调服务
  • Etcd:支持CP,不适合注册中心,分布式键值存储系统
  • Eureka:支持AP,适合注册中心,专业的注册中心(但不维护了)
  • Consul:支持CP,不适合注册中心,专业的注册中心
  • Nacos:支持AP,适合注册中心,专业的注册中心

ps:注册中心要求高可用性,支持AP,所以目前Nacos最合适

配置中心

  • Nacos
  • SpringCloudConfig

ps:可以和注册中心一样选择Nacos,减少组件的维护成本

网关

网关对比

  • Nginx:支持所有语言的网关,可编程进行增强,也可以通过插件进行增强
  • Zuul:支持java语言的网关,可编程进行增强
  • SpringCloudGateway:支持java语言的网关,可编程进行增强

负载均衡对比

  • Nginx:服务端负载均衡
  • Ribbon:客户端负载均衡

Service Invocation(服务调用)

服务调用对比

  • RestTemplate:Http协议,性能相对较低
  • Feign:Http协议,性能相对较低
  • Dubbo:RPC协议,性能相对较高

ps:Feign可以支持声明式调用

客户端组件作用

  • Feign:客户端请求库(Request)
  • Ribbon:客户端请求负载均衡器(LoadBalance)
  • Hystrix:客户端请求断路器(Breaker)和限流器(Limiter)

ps:OpenFeign是Spring对Feign支持SpringMVC的封装,可以使用SpringMVC的注解

Service Shield(服务防护)

高并发五大利器

  • 缓存:提高性能(提高)
  • 降级:弃车保帅(防护)
  • 熔断:防止雪崩(防护)
  • 隔离:资源隔离(防护)
  • 限流:并发限制(限制)

防护三板斧

  • 降级:服务提供者兜底,服务提供者返回正常但返回的是缺省逻辑
  • 熔断:服务调用者兜底,服务调用者请求异常但是会执行备用逻辑
  • 限流:服务提供者不兜底,超出限制后直接抛出异常并拒绝服务

降级和熔断的区别

  • 降级:关闭次要服务来支持和保障主要服务所需的资源
  • 熔断:不调用依赖的服务而执行备用(fallback)逻辑

ps:熔断关闭时会执行 正常 逻辑,熔断开启时会执行 备用 逻辑

Timeout(超时)

Retry(重试)

Fallback(降级)

需要进行降级的场景

  • 熔断降级
    • 超时:请求超出时限
    • 失败:请求返回失败(状态码)
    • 异常:请求返回异常(网络故障、机器故障、服务故障)
  • 限流降级
    • 过载:请求过多导致负载高

Breaker(熔断)

Isolate(隔离)

Limiter(限流)

  • 计数
    • 固定窗口计数:无法应对流量集中在窗口边界两侧的突发大流量
    • 滑动窗口计数:可以应对流量集中在窗口边界两侧的突发大流量
  • 漏桶:流量漏出速度恒定,多余的流量会被丢弃,无法应对突发大流量
  • 令牌:令牌放入速度恒定,但取令牌的速度不限,可以应对突发大流量

WarmUp(预热)

ServiceMesh

SpringCloud

SpringCloudNetflix

  • 注册中心:Eureka
  • 配置中心:Archaius
  • 网关中心:Zuul
  • 服务调用:Feign + Ribbon
  • 服务防护:Hystrix

Eureka

Archaius

Zuul

Feign

Hystrix

SpringCloudAlibaba

  • 注册中心:Nacos
  • 配置中心:Nacos
  • 网关中心:无(可使用Zuul或者SpringCloudGateway)
  • 服务调用:Dubbo
  • 服务防护:Sentinel

Nacos

Dubbo

Sentinel

SpringCloudOfficial

  • 注册中心:无(可使用Nacos)
  • 配置中心:SpringCloudConfig、SpringCloudVault
  • 网关中心:SpringCloudGateway
  • 服务调用:SpringCloudOpenFeign
  • 服务防护:无(可使用Sentinel)

SpringCloudConfig

SpringCloudVault

支持配置信息加密存储

SpringCloudGateway

SpringNative

CommonService

统一认证平台 cas
统一授权平台 cas
统一发号平台

统一邮件平台
统一短信平台
统一电话平台

统一日志平台
统一监控平台
统一告警平台

统一通知平台
统一推送平台
统一营销平台

NotifyService(推送服务)

消息推送方案

  • 轮询(短轮询和长轮询)
  • WebSocket
  • SSE
  • 发布订阅(MQTT)
  • 第三方平台

NamingService(命名服务)

KMS(密钥管理服务)

PlatformService

MWS

  • 美团容器调度平台 Hulk
  • 美团服务发布平台 Plus
  • 美团服务治理平台 OCTO
  • 美团服务网关平台 Oceanus
  • 美团服务配置平台 MCC、Lion
  • 美团服务监控平台 Cat
  • 美团服务告警平台 Raptor
  • 美团任务调度平台 Crane
  • 美团链路追踪 MTrace
  • 美团全局ID Leaf
  • 美团KV存储 Squirrel、Cellar
  • 美团项目管理 Avatar
  • 美团环境管理 Cargo
  • 美团命名服务 MNS
  • 美团移动端推送服务 Pike
  • 美团移动端长链接 Shark

CloudService

service mesh spring cloud
docker docker compose docker swarm
k8s yarn mesos

一切基于网络的服务都可以上云
iaas 提供设施(infrastructure)
paas 提供平台(platform)
saas 提供服务(service)

设施 服务器 存储 网络 云电脑 云手机
平台 云计算 云存储 云相册 云媒体 云游戏
服务 cdn iot 云推送 云打印 云冲洗

只想买包辣条