SpringCloud简介

一、SpringCloud是什么?

SpringCloud是分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。

SpringCloud最擅长的就是集成,把其他框架拿过来集成到自己的项目中。

SpringCloud也是一样,它将现在非常流行的一些技术融合到了一起,实现了诸如:服务发现注册、配置管理、服务发现、智能路由、负载均衡、熔断器、控制总线、集群状态等功能。其主要涉及的组件包括:

  • 基于Netflix实现服务治理、客户端负载均衡和声明式调用;
  • 服务网关;
  • 微服务容错管理;
  • 整合消息中间件提供消息驱动式开发
  • 基于Spring Security提供微服务安全、单点登录功能
  • 分布式、版本化的统一配置管理
  • 微服务调用链及追踪管理

SpringCloud架构图

二、SpringCloud组件概览

SpringCloud的组件分为两大类型

第一种是依赖其他组件并提供服务的,主要有Ribbon、Hystrix、Feign、Stream、Bus、Sleuth

Ribbon:客户端负载均衡,特性有区域亲和、重试机制

Hystrix:客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。

Feign:声明式服务调用,本质上就是Ribbon+Hystrix

Stream:消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区。

Bus:消息总线,配合Config仓库修改得一种Stream实现。

Sleuth:分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合。

第二种是独自启动不需要依赖其他组件,主要有Eureka,Dashboard,Turbine,Zuul,Config。

Eureka:服务注册中心,特性有失效剔除、服务保护。

Dashboard:Hystrix仪表盘,监控集群模式和单点模式,其中集群模式需要收集器Turbine配合

Turbine:集群收集器,服务于Dashboard。

Zuul:API服务网关,功能有路由分发和过滤。

Config:分布式配置中心,支持本地仓库、SVN、Git、Jar包内配置等模式。 

Spring核心功能组件

服务治理:SpringCloud Netflix Eureka

服务容错:SpringCloud Circuit Breaker

服务网关:SpringCloud Gateway

配置中心:SpringCloud Config

事件驱动:SpringCloud Stream

服务安全:SpringCloud Security

链路跟踪:SpringCloud Sleuth

服务测试:SpringCloud Contract

三、SpringCloud核心组件详解

SpringCloud核心组件主要包括Spring Cloud Netflix项目下的Eureka、Ribbon、Hystrix、Zuul以及Config和Feign。

1、Eureka

Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Reigstry和Service Discovery实现,也是Spring Cloud体系中最重要最核心的组件之一。Eureka提供了服务注册中心、服务发现客户端、以及注册服务的UI界面应用。

我们可以把Eureka看作是一个服务中心,所有的可以提供的服务都注册到它这里来管理,其他调用者需要的时候去注册中心获取,然后再进行调用。这样就避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。服务注册中心是非常重要的组件,一旦挂掉将会影响全部服务,因此需要搭建Eureka集群来保持高可用性,生产环境中最少两台。在Eureka的实现中,节点之间相互平等,有部分注册中心"挂掉"也不会对整个应用造成影响,即使集群只剩一个节点存活,也能正常的治理服务。即使所有的服务注册节点都宕机,Eureka客户端中所缓存的服务实例列表信息,也可以让服务消费者能够正常工作,从而保障微服务之间的相互调用的健壮性和弹性。

如下图所示:

Eureka服务器(注册中心)是一个Eureka Server,提供服务注册和发现功能;

Eureka客户端(服务生产者)是一个Eureka client,从注册中心注册、获取信息,用来提供服务;

Eureka客户端(服务消费者)也是一个Eureka Client,从注册中心注册、获取信息和进行服务查找,用来消费服务。

posted @   leagueandlegends  阅读(884)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示