SpringCloud 架构组件简易比较

文章目录

  • 概要
  • 架构
  • 组件对比
    • Config VS nacos VS Apollo
      • 性能对比
    • Eureka VS nacos VS consul
    • gateway VS zuul 1.0
  • 组件教程

概要

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

架构

这里找了一个传统的SpringCloud的架构图 架构图来源
SpringCloud 架构组件简易比较_第1张图片
从此图中我们介绍各个组件之间的说明和功能描述。

  • 模块说明
模块名 说明介绍
服务治理 分为核心几块为: 1. 服务注册发现 2. 服务监控 3. 熔点处理 4. 链路追踪 5. 高可用配合中心 依托服务治理 可以很好使 微服务 高可用
存储层 各个服务的存储依托,常见的NOSQL 和 关系SQL 数据库 以及实时性较高的 时序数据库
服务层 服务层 核心分为如下几块: 1. 网关层 用来进行分发和负载均衡 以及权限检验 2. 服务之间的连通 (主要有Feign 和 ribbion 2种方式)
接入层 接入层 是外部连入 微服务系统 前 服务器做的 负载均衡、 内容分发网络、 防止DDOS攻击、防火墙 等

题外话: 微服务的opsdev和 环境发布 可以使用 Rancher平台进行有效的管理。

  • 组件介绍
组件名 说明介绍 可替换的第三方组件
config 通过Git或SVN等版本控制器 存放配置文件 ,拉取远程地址的配置文件并启动时加载到系统内 或 同步Bus 更新配置值 Alibaba-nacos Apollo
Eureka 微服务的注册和发现 ,具有最终一致性 consul (强一致性)/ zookpeer(强一致性)/ Alibaba-nacos(强一致性)
BootAdmin 主要管理服务的健康状态 、 当前处于活跃状态的会话数量、当前应用的并发数、延迟以及其他度量信息 Prometheus + grafana
hystrix 熔断器 和 降级处理 暂无
turbine 集群监控 主要管理hystrix 整合为一个整体的dashborad
sleuth 服务链路追踪 一般集成Zipkin
cloud bus Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控
cloud stream Spring Cloud Stream是一个用于构建与共享消息传递系统相连的高度可扩展的事件驱动微服务的框架。
cloudTask SpringCloud的定时任务
zuul 服务网关 主要有限流 禁止IP 权限资源管理 和 负载均衡 gateway
gateway 服务网关 主要有限流 禁止IP 权限资源管理 和 负载均衡 zuul

组件对比

Config VS nacos VS Apollo

微服务配置内容高可用,主要是进行远程配置文件修改和配置,方便管理生产环境。那我们比对一下现在 最常用的配置中心。 这里以 spring config 和 alibaba nacos 对比

spring config alibaba-nacos Apollo
git仓库管理 ✔️
可视化界面 ✔️ ✔️
是否支持注册发现 ✔️
支持配置环境分割 ✔️ ✔️ ✔️
支持灰度发布 ✔️ ✔️
Spring是否无缝接入 ✔️ ✔️
配置动态变更 ✔️(繁琐) ✔️(简单) ✔️(简单)
支持集群 ✔️ ✔️ ✔️

性能对比

硬件环境
Nacos和Apollo使用同样的数据库(32C128G),部署Server服务的机器使用的8C16G配置的容器,磁盘是100G SSD。
版本
Spring Cloud Config使用2.0.0.M9版本,Apollo使用1.2.0 release版本,Nacos使用0.5版本。

spring config alibaba-nacos Apollo
单机读取 客户端限制 7QPS 15000 QPS 读数据库 7500 QPS 读内存缓存 9000QPS
3节点集群读取 21QPS 45000 QPS 内存读取27000 QPS
单机写 5QPS 1800 QPS 压满CPU 1100QPS
3节点写 5QPS 6000QPS 3300 QPS(CPU压满)

备注: 每秒查询率(QPS,Queries-per-second)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准

Eureka VS nacos VS consul

CAP 原则

  • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
  • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
  • 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
    CAP 无法三者都获取,因此选择两种即可。
alibaba-nacos Eureka consul zookpeer
一致性协议 CP+AP AP CP CP
健康检查 TCP/HTTP/MYSQL/Client Beat Client Beat TCP/HTTP/gRPC/Cmd Keep Alive
负载均衡策略 权重/metadata/Selector Ribbon Fabio
雪崩保护
自动注销实例 支持 支持 不支持 支持
访问协议 HTTP/DNS HTTP HTTP/DNS TCP
监听支持 支持 支持 支持 支持
多数据中心 支持 支持 支持 不支持
跨注册中心同步 支持 不支持 支持 不支持
SpringCloud集成 支持 支持 支持 不支持
Dubbo集成 支持 不支持 不支持 支持
K8S集成 支持 不支持 支持 不支持

gateway VS zuul 1.0

spring gateway zuul 1.0
spring-cloud-gateway-bench 官方压测工具 Requests/sec: 32213.38 Requests/sec: 20800.13
阻塞IO 非阻塞IO 阻塞IO

组件教程

  • Springboot —Eureka使用
  • Springboot —服务消费者(restTempleate+ribbon)
  • Springboot —服务消费者(Feign)
  • Springboot —断路器(Hystrix)
  • Springboot —路由网关(zuul)
  • Springboot —分布式配置中心(Spring Cloud Config)
  • Springboot —消息总线(Spring Cloud Bus)

你可能感兴趣的:(后端--开发)