SpringCloud 架构组件简易比较

Posted 喜欢雨天的我

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud 架构组件简易比较相关的知识,希望对你有一定的参考价值。

文章目录

概要

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

架构

这里找了一个传统的SpringCloud的架构图 架构图来源

从此图中我们介绍各个组件之间的说明和功能描述。

  • 模块说明
模块名说明介绍
服务治理分为核心几块为: 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 busSpring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控
cloud streamSpring Cloud Stream是一个用于构建与共享消息传递系统相连的高度可扩展的事件驱动微服务的框架。
cloudTaskSpringCloud的定时任务
zuul服务网关 主要有限流 禁止IP 权限资源管理 和 负载均衡gateway
gateway服务网关 主要有限流 禁止IP 权限资源管理 和 负载均衡zuul

组件对比

Config VS nacos VS Apollo

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

spring configalibaba-nacosApollo
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 configalibaba-nacosApollo
单机读取客户端限制 7QPS15000 QPS读数据库 7500 QPS 读内存缓存 9000QPS
3节点集群读取21QPS45000 QPS内存读取27000 QPS
单机写5QPS1800 QPS压满CPU 1100QPS
3节点写5QPS6000QPS3300 QPS(CPU压满)

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

Eureka VS nacos VS consul

CAP 原则

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

gateway VS zuul 1.0

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

组件教程

以上是关于SpringCloud 架构组件简易比较的主要内容,如果未能解决你的问题,请参考以下文章

基于springCloud的分布式架构体系

结合业务场景讲解Spring Cloud常用组件(转)

介绍Spring Cloud微服务架构

好文,SpringCloud架构的各个组件的原理分析,建议收藏

微服务架构案例(05):SpringCloud 基础组件应用设计

微服务架构SpringCloud组件和概念介绍