当前位置: 首页 > news >正文

第1节: 微服务架构设计篇

本章重点

了解各类微服务架构模式,SpringCloudAlibaba的相关知识和组件,以及直播的流程分析和系统架构图

记录、交流、实践,让每一份付出皆可看见,让你我共同前行😁

1.微服务架构模式

详细文档可以参考: 六种微服务架构的设计模式_微服务架构设计模式-CSDN博客

以下是六种架构模式的简易了解:

1.1 代理模式

  • 请求与微服务之间引入代理层,代理层负责请求的转发与响应。客户端需要自行拼装微服务放回的数据,这样会增加相应的工作量。

1.2 聚合器模式

  • 在请求和微服务之间添加了一个API层,在API层完成数据聚合和转化,通过API层将不同的数据转发出去,从而将拼装工作转移到后端,减少了客户端的负担。

1.3 链式微服务模式

  • 此模式调用链路很长,网络传输开销大
  • 在微服务设计过程中应该避免深度链式调用,减少跨进程通信带来的消耗

1.4 分支微服务模式

  • API层直接调用多个微服务节点,数据统一放回在API层拼装
  • 调用深度仅一层,显著降低链路复杂度与网络开销

1.5 数据共享模式

  • 微服务拆分初期,多个服务共享同一个数据库

1.6 异步消息传递模式

  • 核心机制: 通过消息队列 (RocketMQRabbitMQKafka)实现服务之间异步通信,解除强耦合依赖

2.SpringCloudAlibaba

官方文档: Spring Cloud Alibaba

Spring Cloud Alibaba是Spring Cloud生态下的一个重要组成部分,由阿里巴巴团队开发并维护。它为开发者提供了一套完整的微服务解决方案,涵盖服务治理、配置管理、容断降级、限流、分布式事务等关键技术。

网关

Gateway

注册中心

Nacos

配置中心

Nacos,Apolo

远程调用

Dubbo

熔断

Sentinel

链路追踪

Skywalking

2.1 Nacos

服务注册与发现组件,同时支持动态配置管理。

// 引入Nacos依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
// 配置文件application.yml
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848
// 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosExampleApplication {public static void main(String[] args) {SpringApplication.run(NacosExampleApplication.class, args);}
}

2.2 Sentinel

微服务熔断与限流组件,能帮助开发者快速实现微服务的高可用性

// 引入Sentinel依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
// 配置文件application.yml
spring:cloud:sentinel:transport:dashboard: localhost:8080
// 限流规则
@RestController
public class FlowController {@GetMapping("/testA")@SentinelResource(value = "testA")public String testA() {return "Hello Sentinel";}
}

2.3 Seata

分布式事务解决方案,能够帮助开发者实现服务的事务管理

// 引入Seata依赖
<dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>1.4.2</version>
</dependency>
// 配置文件application.yml
seata:enabled: truetx-service-group: my_tx_group
// 事务管理
@GlobalTransactional
public void transferMoney(String fromAccount, String toAccount, double amount) {accountService.debit(fromAccount, amount);accountService.credit(toAccount, amount);
}

2.4 RocketMQ

消息中间件,支持高吞吐量和低延迟的消息传递

// 引入RocketMQ依赖
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.1</version>
</dependency>
// 消息生产者
@RocketMQMessageProducer
public class Producer {@Autowiredprivate RocketMQTemplate rocketMQTemplate;public void sendMessage(String message) {rocketMQTemplate.convertAndSend("test-topic", message);}
}// 消息消费者
@RocketMQMessageListener(topic = "test-topic", consumerGroup = "test-group")
public class Consumer {@RocketMQListenerpublic void onMessage(String message) {System.out.println("Received message: " + message);}
}

3.直播业务下微服务架构

http://www.dtcms.com/a/351832.html

相关文章:

  • WhisperLiveKit:实时语音转文本
  • 面试总结(1)
  • 2. LangChain4J 中的 Hello World
  • 未来几年哪些行业有潜力
  • ICBC_TDR_UShield2_Install.exe [ICBC UKEY]
  • ARP地址解析协议
  • 【AI算力平台】算力高效调度策略——GPU调度
  • mysql 执行sql流程概述
  • FreeRTOS学习笔记(四):任务执行与切换
  • ProfiNet 转 Ethernet/IP基于西门子 S7 - 1500 与罗克韦尔 PLC 的汽车零部件加工线协同案例
  • 基于微服务的水果分销系统-项目分享
  • LeetCode 3000.对角线最长的矩形的面积:一次遍历
  • 【golang长途旅行第32站】反射
  • 【机器学习深度学习】连续微调与权重合并的陷阱与最佳实践
  • 修改C盘缓存文件路径
  • MongoDB /redis/mysql 界面化的数据查看页面App
  • UCIE Specification详解(八)
  • 在MiniOB源码中学习使用Flex与Bison解析SQL语句-第一节
  • Rust 环境搭建与 SeekStorm 项目编译部署(支持中文)
  • Robrain V2.0正式登场:落地人形机器人,引爆智能进化革命
  • Ubuntu操作系统下使用mysql、mongodb、redis
  • [特殊字符] CentOS 7 升级 OpenSSH 10.0p2 完整教程(含 Telnet 备份)
  • 如果 我退休了
  • 汽车域控中Hypervisor方案极致安全原理与弊端
  • APP UI自动化测试的思路总结
  • 破解豆瓣Ajax动态加载:Python爬取完整长评论和短评
  • Java面试实战系列【JVM篇】- JVM内存结构与运行时数据区详解(私有区域)
  • 数据结构:链式队列尝试;0826
  • poi生成word固定表格列宽
  • Spring - 文件上传与下载:真正的企业开发高频需求——Spring Boot文件上传与下载全场景实践指南