【微服务】微服务Spring Cloud Alibaba核心概念总结

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【微服务】微服务Spring Cloud Alibaba核心概念总结

Spring Cloud是什么


Spring Cloud为开发者提供了一套快速开发分布式系统的组件,Spring Cloud并不推荐重复造轮子,主张利用Spring Boot将其他公司较成熟的组件进行封装


一、核心概念


1、配置中心


由来

微服务系统中,存在很多功能开关和各种参数的配置项,传统的配置文件、数据库等方式无法满足开发人员对配合管理的需求,此时,分布式配置中心应运而生。

特点

1)统一管理

配置中心服务端负责配置的管理(新增、修改、删除、发布),集成了配置中心客户端的微服务程序可以统一从配置中心服务端拉取配置,从而实现整个微服务系统的统一配置管理


2)区分环境

一个微服务应用中的某些配置项,在不同的环境(开发、测试、生产)通常是不同的,作为分布式配置中心需要具有隔离不同环境的功能,使得同一个微服务在不同环境能拉取到对应的配置


3)实时刷新

当配置中心服务端中的配置发生了修改时,配置中心客户端需要能实时监听到配置的改变,使得微服务应用程序可以实时获取到最新配置,并且不用重新部署应用程序


4)权限控制

在配置中心中,可以针对不同的角色或用户设置对应的权限,比如张三可以新建配置项,但不能发布配置;比如小明可以查看配置项,但不能修改配置


5)版本控制

在使用配置中心的过程中,难免会出现误操作,而这个时候就需要进行版本回退,所以作为配置中心,是一定要支持版本控制的


6)灰度发布

在需要发布一项配置时,如果需要发布到多个实例(集群),那么此时可以只发布到部分实例,待测试通过后,再发布到全部实例,这就是配置的灰度发布


常用配置中心

Spring:Spring Cloud Config

NACOS:阿里Nacos

Apollo:携程Apollo

Google:谷歌consul


2、注册中心

注册中心相当于微服务架构中的地址通讯录,每个微服务会将服务及其他地址注册到注册中心,服务消费者在调用某个微服务之前会先从注册中心查找服务地址,然后进行调用。


特点

1)服务的自动注册

微服务应用在启动时,通过注册中心客户端组件,将服务相关信息自动注册给注册中心服务端,是将客户的服务自动注册到服务端

2)服务的健康检查

当已经注册到注册中心的微服务实例宕机后,注册中心服务端能发现实例已经宕机,并把相关信息从注册中心删除掉

3)服务的自动发现

服务消费者需要能实时监听到注册中心中服务信息的变更,以能在真正调用服务时不会出现错误


常用注册中心

zookeeper、eureka、nacos、consul


3、服务网关

服务网关是整个微服务架构中对外的统一入口,所有的客户端都通过统一的网关使用微服务,服务网关起到了隔离外部访问和内部系统的作用,服务网关是微服务架构中的一个标配组件


特点

1)高并发

作为微服务架构中的对外入口,必须能支持高并发,能承担更高的并发量,并保证高性能

2)安全

服务网关通常具有权限认证、黑名单、白名单等保证网关安全的功能

3)路由转发

服务网关接收到外部请求后,要求服务网关能根据请求和配置将请求转发到对应的后端微服务上去

4)监控与限流

作为整个系统的流量入口,服务网关要能监控流量情况,遇到突发情况时能及时限流,保证整个系统的稳定

5)灰度发布

当某个微服务有新版本更新上线时,可以利用服务网关进行流量的切换,实现该服务的灰度发布

6)服务重试

当服务网关调用某个微服务失败后,可以通过服务网关设置重新策略来重新尝试调用该服务

7)服务别名

可以在服务网关中给某个或某些微服务设置别名,从而对外屏蔽内部微服务相关信息


常见的服务网关组件

Kong、Zuul、Spring Cloud Gateway


4、负载均衡

负载均衡是指将访问流量根据负载均衡算法分发到后端服务器的流量分发控制服务,通过负载均衡提高微服务的可用性以及性能

常用算法

1)简单轮询

将请求按顺序分发给后端服务器上,不关心服务器当前的状态,比如后端服务器的性能、当前的负载

2)加权轮询

根据服务器自身的性能给服务器设置不同的权重,将请求按顺序和权重分发给后端服务器,可以让性能高的机器处理更多的请求

3)简单随机

将请求随机分发给后端服务器上,请求越多,各个服务器接收到的请求越平均

4)加权随机

根据服务器自身的性能能给服务器设置不同的权重,将请求按各个服务器的权重随机分发给后端服务器

5)一致性哈希

根据请求的客户端ip、或请求参数通过哈希算法得到一个数值,利用该数值取模映射出对应的后端服务器,这样能保证同一个客户端或相同参数的请求每次都使用同一台服务器

6)最小活跃数

统计每台服务器上当前正在处理的请求数,也就是请求活跃数,将请求分发给活跃数最少的后台服务器


常见负载均衡组件

nginx、lvs、ribbon


5、RPC调用

RPC就是远程过程调用,对于Java程序而言,RPC就是远程方法调用,表示一个方法调用远程的另外一个方法,微服务架构中一个服务调用另外一个服务就可以用RPC调用


RPC调用与HTTP调用区别

HTTP调用使用的是HTTP协议,是网络7层中的应用协议,HTTP协议规定了数据传输的格式,Restful风格就可以通过HTTP协议来实现

RPC不是网络层面的协议,而是更上层的更灵活的通信协议,RPC调用可以自定义数据格式、数据传输方式,只要能保证调用到远程方法即可


常用的RPC调用组件或框架

Dubbo、gRPC、Thrift、Feign


6、服务熔断

当服务A调用的某个服务B不可用时,上游服务A为了保证自己不受影响,从而不再调用服务B,直接返回一个结果,减轻服务A和服务B的压力,直到服务B恢复


什么是熔断器

能实现熔断功能的叫熔断器,代表组件为Hystrix、Sentinel


熔断器的三种状态

Closed:关闭状态,当调用失败次数达到阈值时则启动熔断器

Open:打开状态,此时不会真正的调用下游服务,而是直接返回,当过了某段时间后,熔断器会进入到半打开状态

Half-Open:半打开状态,此时会有部分请求访问下游服务,如果这些请求都调用成功了,则认为下游服务恢复了,那么则关闭熔断器,否则熔断器回到打开状态


7、服务降级

服务降级是指,当发现系统压力过载时,可以通过关闭某个服务,或限流某个服务来减轻系统压力。当网关不可用,可以使用服务降级来实现略过网关提供服务


服务降级与服务熔断的区别

1、都是为了防止系统崩溃

2、都让用户体验到某些功能暂时不可用

3、熔断是下游服务故障触发的,降级是为了降低系统负载


什么是服务雪崩

服务A调用服务B,服务B调用C,此时大量请求突然调用服务A,假如服务A本身能抗住这些请求,但是服务C扛不住,导致服务C请求堆积,从而服务B请求堆积,从而服务A不可用,这就是服务雪崩,解决方式就是服务降级和服务熔断


8、服务限流

服务限流是指在高并发请求下,为了保护系统,可以对访问服务的请求进行数量上的限制,从而防止系统不被大量请求压垮,在秒杀中,限流是非常重要的


常见的限流算法

1、固定窗口计数器

2、滑动窗口计数器

3、令牌桶

4、漏桶


9、全局锁

全局锁,就是我们常说的分布式锁,是分布式、微服务架构中的一种锁机制,通过全局锁可以很好的在分布式系统中互斥使用共享资源


全局锁的实现原理

Zookeeper:利用Zookeeper的watch机制与临时节点特性

Redis:利用Redis的消费订阅机制与数据超时特性


常见的全局锁实现组件

Redisson、Curator


10、控制总线

控制总线也称为消息总线,是微服务系统中用来连接系统中所有服务节点的,微服务中的所有服务节点可以通过控制总线来进行通讯


控制总线的应用场景

目前,Spring Cloud Bus就是控制总线的具体实现,某个微服务可以通过Spring Cloud Bus来广播事件,而其他微服务可以接收到事件并进行相关处理


11、分布式事务

在一次请求中,所涉及的分散在多个微服务上的操作要保证同时成功或同时失败,这就是分布式事务,比如创建订单减库存、银行转账等


实现分布式事务的方式

直接通过数据库

通过消息队列

两阶段提交

三阶段提交


分布式事务中的三个角色

事务协调器

事务管理者

资源管理者


12、服务安全

对于一个企业来说,微服务系统中的服务安全性越来越重要,服务的认证和授权是企业必须具备的,Spring Cloud Security是Spring Cloud提供的微服务安全组件


服务安全的特性

1、可扩展、可配置的认证和授权

2、单点登录

3、防止会话固定、点击劫持、跨网

4、与Servelet API集成


13、链路跟踪

链路追踪未微服务系统提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等功能,可以帮助开发者快速分析和诊断微服务架构下的性能瓶颈


链路追踪的功能

分布式调用链查询和诊断

应用性能实时汇总

分布式拓扑动态发现

多语言开发程序接入

丰富的下游对接场景


常用的链路追踪技术

Sleuth、Zipkin


14、集群管理

领导者选举

一致性存储

集群状态管理

一次性tokens


15、事件驱动

事件驱动就是消息驱动,在Spring Cloud中提供了Spring Cloud Stream来实现事件驱动,有了事件驱动,在微服务系统中可以更方便的通过发送消息来进行通信


事件驱动中的概念

目标绑定器,目标指的是kafka或rabbitmq

绑定桥梁,连接消息系统和应用系统

消息,应用程序和消息系统之间传递的数据


事件驱动的特点

异步处理

流量削峰

服务解耦


16、任务调度

17、云连接器

云连接器可以用来更方便的连接部署在云上的各种服务,Spring Cloud中Spring Cloud Connectors就是云连接器的组件实现


支持云平台

Spring Cloud Cloud Foundry

Spring Cloud Heroku


18、函数计算

函数计算也称为函数式编程,是实现Serverless的一种手段,企业如果能使用函数计算能大大节约成本,在Spring Cloud中提供了Spring Cloud Function来开发基于云平台的函数计算


相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
56 2
|
19天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
1月前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
|
1月前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
26天前
|
消息中间件 自然语言处理 Java
知识科普:Spring Cloud Alibaba基本介绍
知识科普:Spring Cloud Alibaba基本介绍
57 2
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
1月前
|
JSON Java 数据格式
【微服务】SpringCloud之Feign远程调用
本文介绍了使用Feign作为HTTP客户端替代RestTemplate进行远程调用的优势及具体使用方法。Feign通过声明式接口简化了HTTP请求的发送,提高了代码的可读性和维护性。文章详细描述了Feign的搭建步骤,包括引入依赖、添加注解、编写FeignClient接口和调用代码,并提供了自定义配置的示例,如修改日志级别等。
80 1
|
1月前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
阿里云开源 Spring AI Alibaba,旨在帮助 Java 开发者快速构建 AI 应用,共同构建物理新世界。
|
1月前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
1月前
|
Java 数据库 数据安全/隐私保护
Spring 微服务提示:使用环境变量抽象数据库主机名
Spring 微服务提示:使用环境变量抽象数据库主机名
45 1