SpringCloud Alibaba微服务解决方案

2023-05-16

微服务概念
微服务架构它是基于传统的SOA架构演进而来的一种架构模。其提倡将传统的单体架构或分布式架构中的单体应用程序和服务划分成更小粒度的服务,这种服务独立运行在独立的进程中并与其它的进程相隔离,服务于服务之间通常采用基于Http的通信协议构建的RestFulAPI进行通信,每个微服务都围绕着具体的业务二构建,其能独立的开发,构建,发布和部署到类成产环境和生产环境,而不影响其它的依赖业务。
微服务优点
1.降低单个服务复杂度
原来耦合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。

2.独立部署
由于微服务具备独立的运行进程,所以每个微服务可以独立部署。当业务迭代时只需要发布相关服务的迭代即可,降低了测试的工作量同时也降低了服务发布的风险。

3.容错性高
在微服务架构下,当某一组件发生故障时,故障会被隔离在单个服务中。 通过限流、熔断等方式降低错误导致的危害,保障核心业务正常运行。

4.可扩展性
单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。

Spring Cloud Alibaba 包含组件
在这里插入图片描述
阿里开源组件
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

RocketMQ:开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

Dubbo:这个就不用多说了,在国内应用非常广泛的一款高性能 Java RPC 框架。

Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

Arthas:开源的Java动态追踪工具,基于字节码增强技术,功能非常强大。

阿里商业化组件
作为一家商业公司,阿里巴巴推出 Spring Cloud Alibaba,很大程度上市希望通过抢占开发者生态,来帮助推广自家的云产品。所以在开源社区,夹带了不少私货,这部分组件我在阿里工作时都曾经使用过,整体易用性和稳定性还是很高的。

Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。

Alibaba Cloud OSS:阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的云存储服务。

Alibaba Cloud SchedulerX:阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准的定时(基于 Cron 表达式)任务调度服务。

集成 Spring Cloud 组件
Spring Cloud Alibaba 作为整套的微服务解决组件,只依靠目前阿里的开源组件是不够的,更多的是集成当前的社区组件,所以 Spring Cloud Alibaba 可以集成 Zuul,OpenFeign等网关,也支持 Spring Cloud Stream 消息组件。

Spring Cloud Alibaba 功能

那么作为微服务解决方案, Spring Cloud Alibaba是如何支持微服务治理的各个功能。

服务注册与发现
Spring Cloud Alibaba 基于 Nacos 提供 spring-cloud-alibaba-starter-nacos-discovery & spring-cloud-alibaba-starter-nacos-config 实现了服务注册 & 配置管理功能。依靠 @EnableDiscoveryClient 进行服务的注册,兼容 RestTemplate & OpenFeign 的客户端进行服务调用。

适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。

支持多协议的服务调用
Spring Cloud 默认的服务调用依赖 OpenFeign 或 RestTemplate 使用 REST 进行调用。

使用 @DubboTransported 注解可将底层的 Rest 协议无缝切换成 Dubbo RPC 协议,进行 RPC 调用。

@FeignClient(“dubbo-provider”)
@DubboTransported(protocol = “dubbo”)
public interface DubboFeignRestService {
@GetMapping(value = “/param”)
String param(@RequestParam(“param”) String param);

@PostMapping("/saveB")
String saveB(@RequestParam(“a”) int a, @RequestParam(“b”) String b);
}
服务限流降级
作为稳定性的核心要素之一,服务限流和降级是微服务领域特别重要的一环,Spring Cloud Alibaba 基于 Sentinel,对 Spring 体系内基本所有的客户端,网关进行了适配,

默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入。

Sentinel应用比较简单,只需引入 starter,即可生效,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。

微服务消息驱动
支持为微服务应用构建消息驱动能力,基于 Spring Cloud Stream 提供 Binder 的新实现: Spring Cloud Stream RocketMQ Binder,

也新增了 Spring Cloud Bus 消息总线的新实现 Spring Cloud Bus RocketMQ。

分布式事务
使用 Seata 解决微服务场景下面临的分布式事务问题。

使用 @GlobalTransactional 注解,在微服务中传递事务上下文,可以对业务零侵入地解决分布式事务问题。

阿里云提供的商业能力
通过上面提到的OSS,schedulerx等组件,开发者可以在阿里云上实现对象存储,分布式任务调度等功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud Alibaba微服务解决方案 的相关文章

随机推荐

  • 知乎火爆问题:CV 和 NLP 哪个前景更好?

    又到一年毕业季 xff0c 小编看到不少马上要毕业的学生在知乎名为 cv和nlp哪个前景更好的 帖子下热烈讨论 xff01 xff08 图片来源于知乎 xff09 相信不少人有这样的疑问 xff0c 甚至有人说今天AI的行业 xff0c C
  • 旧电脑改造攻略

    1 手头电脑 联想A8 笔记本 xff08 A核A卡 xff09 华硕 i5 6033U xff08 A卡 xff09 Dell 笔记本 i5 NVIDIA 还能用 联想台式机 xff08 2G内存 xff0c 已经换SSD xff09 2
  • 大恒相机实时采图

    目录 前言正文准备工作设备的初始化设备信息的获取主动采图相机参数配置创建doc树获取doc树下的每一个元素并将其信息写入xml文件中 被动采图 总结 前言 本篇博客稍微记录一下我所写的插件 具体内容是有关于大恒相机的 xff0c 关于这个相
  • 转:MySQL 8.0 配置mysql_native_password身份验证插件的密码

    https blog csdn net zhengbin9 article details 82729861 方法一 xff1a 登录MySQL后输入 xff1a ALTER USER 39 root 39 64 39 localhost
  • Debian系统的LNMP网站(Web)环境搭建+MySQL数据库可视化工具phpMyAdmin的安装

    开始 提示 每次完成对Nginx PHP MariaDB phpMyAdmin做配置文件修改后 重启Nginx php mariadb服务再查看配置效果是一个好习惯 安装Nginx 1 安装Nginx 指令 sudo apt install
  • TDengine时序数据库性能测试

    前言 TDengine Database官方及社区里有一些性能测试对比案例 xff0c 不过发布的都比较早 xff0c 其使用的版本都是早期低版本 本次测试参考官方提测的 使用 taosdemo 对 TDengine 进行性能测试 文章进行
  • ubuntu安装anaconda后,终端输入conda,未找到命令解决

    1 linux出现permission denied权限不足的解决方案 输入 sudo chmod R 777 文件路径 执行完即可看到文件夹的锁消失了 2 ubuntu安装anaconda后 xff0c 终端输入conda xff0c 出
  • 用OpenCV实现目标追踪的八种方法(转)

    原文地址 xff1a http m elecfans com article 722414 html 编者按 xff1a 目标跟踪作为机器学习的一个重要分支 xff0c 加之其在日常生活 军事行动中的广泛应用 xff0c 很多国内外学者都对
  • selenium 常用API

    Selenium 常用API 之操作浏览器 上文我们讲解了如何打开浏览器 xff0c 本文讲讲解关于操作浏览器的更多API 后退 span class token comment 后退 span driver span class toke
  • JAVA List 获取两个集合的交集 并集 差集

    public class ExtractIdUtils public static Map lt String List lt Long gt gt extractList List lt Long gt newIds List lt Lo
  • 获取用户IP的API

    http span class token punctuation span span class token operator span pv span class token punctuation span sohu span cla
  • 矩阵相乘最优解

    define CRT SECURE NO WARNINGS include lt iostream gt include lt vector gt include lt algorithm gt using namespace std in
  • 前端WebSocket配置

    代码 initWebSocket span class token punctuation span span class token keyword function span span class token punctuation s
  • mybatis-plus自动填充注入器

    过滤器代码 span class token keyword import span org span class token punctuation span apache span class token punctuation spa
  • C++枚举类型

    枚举类型是C 43 43 中一种派生数据类型 xff0c 它是由用户定义的若干枚举常量的几个 定义格式 xff1a enum lt 类型名 gt lt 枚举常量表 gt 举例 xff1a enum color set RED BULE WH
  • springboot后端websocket简单实现上下行数据传输

    配置 span class token keyword package span com span class token punctuation span mlfo span class token punctuation span wm
  • IDEA开发热部署配置

    添加依赖 span class token generics function span class token punctuation lt span dependency span class token punctuation gt
  • java 定时任务ip是否ping的通

    span class token annotation punctuation 64 Scheduled span span class token punctuation span cron span class token operat
  • springboot跨域配置

    span class token keyword public span span class token keyword class span span class token class name SzptbApplication sp
  • SpringCloud Alibaba微服务解决方案

    微服务概念 微服务架构它是基于传统的SOA架构演进而来的一种架构模 其提倡将传统的单体架构或分布式架构中的单体应用程序和服务划分成更小粒度的服务 xff0c 这种服务独立运行在独立的进程中并与其它的进程相隔离 xff0c 服务于服务之间通常