关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例

以下是关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例:

关于 Spring Cloud Alibaba

致力于提供微服务开发的一站式解决方案!
https://sca.aliyun.com/?spm=7145af80.434205f.0.0.74716242oEhMef

在这里插入图片描述

在这里插入图片描述


1. 微服务解决方案对比

方案核心组件特点适用场景
Spring Cloud NetflixEureka(注册中心)、Hystrix(熔断)、Feign(RPC)、Zuul/Gateway(网关)成熟稳定,社区广泛,但部分组件(如 Hystrix)已停止维护传统微服务架构,需兼容旧系统
Spring Cloud AlibabaNacos(注册/配置中心)、Sentinel(流控降级)、Dubbo/Feign(RPC)、Gateway(网关)阿里巴巴生态,轻量高效,支持云原生,组件活跃维护新项目,需要与阿里云/容器化集成
Spring Cloud ConsulConsul(注册/配置中心)、Resilience4j(熔断)、Spring Cloud Gateway(网关)基于 Consul 的强一致性,适合分布式系统需要强一致性分布式环境
Istio/Servie MeshPilot(控制平面)、Envoy(数据平面)、Mixer(策略与遥测)服务网格方案,无侵入式治理,支持多语言云原生环境,多语言微服务架构

2. Spring Cloud Alibaba 微服务开发详解

2.1 核心组件
组件功能依赖
Nacos服务注册与发现、动态配置中心spring-cloud-starter-alibaba-nacos-discovery, spring-cloud-starter-alibaba-nacos-config
Sentinel流量控制、熔断降级、系统负载保护spring-cloud-starter-alibaba-sentinel
Dubbo/Spring MVC服务间通信(RPC)spring-cloud-starter-dubbospring-boot-starter-web
GatewayAPI 网关,路由、鉴权、限流spring-cloud-starter-gateway
Seata分布式事务管理seata-spring-boot-starter
Sleuth+Zipkin分布式链路追踪spring-cloud-starter-sleuth, spring-cloud-sleuth-zipkin

3. 代码示例:Spring Cloud Alibaba 微服务

3.1 项目依赖(pom.xml)
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2022.0.3</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2022.0.0.0</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><dependencies><!-- Nacos 服务注册与发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- Nacos 配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- Sentinel 熔断降级 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- Spring Cloud Gateway --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 分布式事务 Seata --><dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>1.7.1</version></dependency>
</dependencies>

3.2 服务提供者(Provider)
3.2.1 配置 application.yml
server:port: 8080spring:application:name: user-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848  # Nacos 服务器地址config:server-addr: 127.0.0.1:8848extension-configs:- file-extension=yamlgroup: DEFAULT_GROUP
3.2.2 启动类
@SpringBootApplication
@EnableDiscoveryClient  // 启用服务注册
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}
}
3.2.3 服务接口
@RestController
@RequestMapping("/users")
public class UserController {@GetMapping("/{id}")public User getUser(@PathVariable Long id) {// 业务逻辑return new User(id, "John Doe");}
}

3.3 服务消费者(Consumer)
3.3.1 配置 application.yml
spring:application:name: order-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848
3.3.2 调用服务
@Service
public class OrderService {@Autowiredprivate RestTemplate restTemplate;public Order createOrder(Long userId) {// 调用 user-serviceUser user = restTemplate.getForObject("http://user-service/users/{userId}", User.class, userId);return new Order(user.getName(), "ORDER-123");}
}

3.4 Nacos 配置中心
3.4.1 配置文件(Nacos 中配置)
# Data ID: user-service.yaml
user:service:timeout: 5000
3.4.2 读取配置
@ConfigurationProperties(prefix = "user.service")
public class UserConfig {private Integer timeout;// getters/setters
}

3.5 Sentinel 熔断降级
3.5.1 配置限流规则(Nacos 或本地文件)
[{"resource": "/users/{id}","count": 100,"grade": 1,"limitApp": "default","strategy": 0,"controlBehavior": 0,"statIntervalMs": 1000}
]
3.5.2 注解限流
@RestController
public class UserController {@SentinelResource(value = "getUser", blockHandler = "handleBlock")@GetMapping("/{id}")public User getUser(@PathVariable Long id) {// 业务逻辑}public User handleBlock(BlockException e) {return new User(-1L, "服务不可用");}
}

3.6 API 网关(Spring Cloud Gateway)
3.6.1 配置路由(application.yml)
spring:cloud:gateway:routes:- id: user_routeuri: lb://user-service  # 通过服务名路由predicates:- Path=/api/users/**filters:- StripPrefix=1
3.6.2 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}

3.7 分布式事务(Seata)
3.7.1 配置 application.yml
seata:enabled: trueapplication-id: ${spring.application.name}tx-service-group: ${spring.application.name}-groupservice:vgroup-mapping:${spring.application.name}-group: defaultgrouplist:default: 127.0.0.1:8091
3.7.2 事务注解
@Service
public class OrderService {@GlobalTransactional(name = "createOrder")public void createOrder() {// 跨服务事务操作userService.createUser();inventoryService.reduceStock();}
}

3.8 分布式链路追踪(Sleuth + Zipkin)
3.8.1 配置 application.yml
spring:zipkin:base-url: http://zipkin-server:9411sleuth:sampler:probability: 1.0  # 100%采样率
3.8.2 启动类
@SpringBootApplication
public class TraceApplication {public static void main(String[] args) {SpringApplication.run(TraceApplication.class, args);}
}

4. 组件功能对比表格

组件功能配置方式代码示例
Nacos服务注册、发现、动态配置application.yml 配置 Nacos 地址@EnableDiscoveryClient, 配置 server-addr
Sentinel流量控制、熔断降级JSON 配置规则或代码动态配置@SentinelResource, 限流规则文件
Gateway路由、鉴权、限流application.yml 定义路由规则@EnableDiscoveryClient, 路由配置文件
Seata分布式事务管理配置 seata-config 和事务组@GlobalTransactional, 配置 seata-application.yml
Sleuth+Zipkin链路追踪配置 Zipkin 服务器地址@SpringBootApplication, 配置 spring.zipkin.base-url

5. 完整项目结构示例

my-microservices/
├── config-center/          # Nacos 配置中心
├── user-service/           # 用户服务(Provider)
├── order-service/          # 订单服务(Consumer)
├── gateway/                # API 网关
├── seata-server/           # 分布式事务服务器
└── zipkin-server/          # 链路追踪服务器

6. 关键配置步骤

6.1 Nacos 服务注册
# user-service 的 application.yml
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848
6.2 Sentinel 熔断配置
// Sentinel 流量规则配置
@Configuration
public class SentinelConfig {@Beanpublic SentinelGatewayFilterFactory sentinelFilterFactory() {return new SentinelGatewayFilterFactory();}
}
6.3 Seata 分布式事务
# seata-config.conf(放置在 classpath 下)
service {vgroup_mapping.my_test_tx_group = "default"default.grouplist = "127.0.0.1:8091"
}

7. 总结表格

组件功能配置方式代码示例
Nacos服务注册/发现、配置中心application.yml 配置服务器地址@EnableDiscoveryClient, 动态配置刷新
Sentinel流量控制、熔断降级JSON 配置或代码动态配置@SentinelResource, 限流规则定义
GatewayAPI 网关,路由、鉴权application.yml 定义路由规则@EnableDiscoveryClient, 路由配置文件
Seata分布式事务管理配置 seata-config 和事务组@GlobalTransactional, 事务组配置
Sleuth+Zipkin分布式链路追踪配置 Zipkin 服务器地址@SpringBootApplication, 链路日志收集

8. 注意事项

  1. Nacos 集群部署:生产环境需部署 Nacos 集群以保证高可用。
  2. Sentinel 规则管理:建议通过控制台(nacos-config)动态管理规则。
  3. Seata 性能优化:需配置数据库事务隔离级别(如 READ_COMMITTED)。
  4. 链路追踪:Zipkin 需独立部署,支持 HTTP 或 Kafka 模式。

通过以上组件的组合,可以构建一个高可用、可扩展的微服务架构。Spring Cloud Alibaba 的组件设计更贴合云原生需求,适合中大型分布式系统。

番外

以下是关于 微服务服务治理 的详细说明,涵盖核心概念、主流框架/解决方案的对比,以及关键功能的总结表格:


1. 服务治理核心概念

服务治理是微服务架构中管理服务间通信、监控、容错、配置等的核心能力。主要功能包括:

  • 服务注册与发现:动态管理服务实例。
  • 配置中心:集中管理配置。
  • 负载均衡:分发请求流量。
  • 熔断降级:防止雪崩效应。
  • 服务网关:统一入口,路由与鉴权。
  • 分布式事务:保证跨服务事务一致性。
  • 链路追踪:监控请求链路性能。

2. 主流服务治理框架/解决方案对比

2.1 Spring Cloud Netflix(已逐步淘汰)
组件功能特点适用场景
Eureka服务注册与发现成熟稳定,但维护停止,需迁移到其他方案(如Nacos)过渡期项目,需兼容旧系统
Zuul/GatewayAPI 网关,路由与过滤Zuul 1.x 已停止维护,Spring Cloud Gateway 更推荐需快速搭建网关功能
Hystrix熔断与降级响应式设计,但代码侵入性强,维护停止需基础熔断功能,但需注意维护状态
Feign客户端负载均衡与声明式服务调用简单易用,但需与 Ribbon 配合简单 RPC 场景

2.2 Spring Cloud Alibaba
组件功能特点适用场景
Nacos服务注册/发现、动态配置中心阿里巴巴生态,轻量高效,支持云原生,社区活跃新项目,与阿里云/容器化集成
Sentinel流量控制、熔断、系统负载保护支持实时监控,规则动态调整,支持多语言扩展需高并发场景下的流量控制
Dubbo/Spring Cloud服务间通信(RPC)Dubbo 性能高,Spring Cloud 原生集成复杂服务间通信需求
Spring Cloud GatewayAPI 网关,路由、鉴权、限流非侵入式,支持多种过滤器需灵活路由与安全策略

2.3 Consul
组件功能特点适用场景
Consul服务注册/发现、健康检查、Key-Value 配置、多数据中心支持自带配置中心,强一致性,适合分布式系统需强一致性服务发现与配置管理
Envoy服务网格数据平面,支持流量管理、熔断、链路追踪非侵入式,支持多语言,但需额外部署多语言微服务架构

2.4 Istio
组件功能特点适用场景
Istio服务网格,支持流量管理、熔断、链路追踪、安全策略非侵入式,支持多语言,与 Kubernetes 深度集成云原生环境,多语言微服务架构
Pilot控制平面,管理服务路由和规则需配合 Envoy 或其他数据平面需复杂流量管理(如金丝雀发布)

2.5 Apache Dubbo
组件功能特点适用场景
Dubbo服务注册/发现、高性能 RPC、负载均衡、熔断降级性能高,适合 Java 生态,需配合 ZooKeeper/Nacos高性能 Java 微服务架构
Dubbo 3.x支持云原生,集成 Nacos/Sentinel兼容 Spring Cloud,支持多语言扩展需高性能与云原生结合

2.6 Kubernetes + Istio
组件功能特点适用场景
Kubernetes容器编排,服务发现,健康检查生态完善,支持自动化部署与扩缩容容器化部署,需与 Istio 集成
Istio服务网格,流量管理、安全策略、链路追踪非侵入式,支持多语言,需额外资源消耗云原生环境,多语言服务治理

2.7 Service Mesh(如 Linkerd)
组件功能特点适用场景
Linkerd服务网格,轻量级流量控制、熔断、监控性能低开销,支持多语言,社区活跃需轻量级服务治理与多语言支持

2.8 HashiCorp Nomad
组件功能特点适用场景
Nomad作业调度与服务治理,支持服务发现、健康检查与 Consul 集成,适合混合云环境需统一调度与服务治理的混合云场景

3. 核心功能对比表格

框架/方案服务注册发现配置中心熔断降级API 网关分布式事务链路追踪社区活跃度适用场景
Spring Cloud NetflixEureka自定义HystrixZuul/Gateway不直接支持Sleuth+Zipkin逐渐衰退过渡期项目,需兼容旧系统
Spring Cloud AlibabaNacosNacosSentinelGatewaySeataSleuth+Zipkin活跃新项目,阿里云生态
ConsulConsulConsul自定义API Gateway不直接支持自定义活跃强一致性分布式系统
Istio自带发现ConfigMap自带熔断自带网关自定义Jaeger非常活跃云原生,多语言微服务
DubboZooKeeper/Nacos自定义自带熔断自定义Dubbo-TCCSkyWalking活跃高性能 Java 架构
Kubernetes+IstioKubernetesConfigMapIstioIstio自定义Jaeger非常活跃容器化部署,云原生
**Service Mesh(Linkerd)自带发现自定义自带熔断自带网关自定义自定义活跃需轻量级治理与多语言支持

4. 功能实现对比

4.1 服务注册发现
  • Nacos:轻量、支持集群、多数据中心。
  • Consul:强一致性,内置健康检查。
  • Kubernetes:基于 DNS 或 CoreDNS,适合容器环境。
4.2 配置中心
  • Nacos:动态配置推送,支持多环境。
  • Consul:Key-Value 存储,需自定义监听。
  • Spring Cloud Config:基于 Git,适合 GitOps。
4.3 熔断降级
  • Sentinel:实时统计,支持多维度限流。
  • Hystrix:成熟但维护停止。
  • Istio:基于 Sidecar 的流量控制。
4.4 分布式事务
  • Seata:AT 模式支持自动事务,需数据库支持。
  • Saga:基于消息补偿,适合长事务。
  • Istio:通过 Sidecar 实现分布式追踪与补偿。

5. 选择建议

需求场景推荐方案原因
Java 生态,快速启动Spring Cloud Alibaba (Nacos+Sentinel)阿里生态完善,配置简单,社区活跃。
云原生,多语言支持Istio + Kubernetes非侵入式,与容器生态深度集成。
高性能 RPC,Java 为主Dubbo 3.x + Nacos性能高,支持云原生,与 Spring Cloud 兼容。
混合云环境,强一致性需求Consul + Envoy强一致性服务发现,支持多数据中心。
轻量级治理,无需 SidecarSpring Cloud Alibaba代码侵入式,适合中小型项目。

6. 典型场景代码示例(Spring Cloud Alibaba)

6.1 服务注册与发现(Nacos)

配置 application.yml

spring:application:name: user-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848

启动类:

@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}
}

6.2 熔断降级(Sentinel)

配置限流规则(JSON):

[{"resource": "/users/{id}","count": 100,"grade": 1,"strategy": 0,"controlBehavior": 0}
]

代码注解:

@RestController
public class UserController {@SentinelResource(value = "getUser", blockHandler = "handleBlock")@GetMapping("/{id}")public User getUser(@PathVariable Long id) {// 业务逻辑}public User handleBlock(BlockException e) {return new User(-1L, "服务不可用");}
}

6.3 API 网关(Spring Cloud Gateway)

路由配置 application.yml

spring:cloud:gateway:routes:- id: user_routeuri: lb://user-servicepredicates:- Path=/api/users/**filters:- StripPrefix=1

6.4 分布式事务(Seata)

配置 application.yml

seata:enabled: trueapplication-id: ${spring.application.name}tx-service-group: ${spring.application.name}-group

事务注解:

@Service
public class OrderService {@GlobalTransactionalpublic void createOrder() {// 跨服务事务操作userService.createUser();inventoryService.reduceStock();}
}

7. 总结表格

框架/方案服务治理能力非侵入性多语言支持学习成本适用场景
Spring Cloud Alibaba完整部分侵入式有限中等新项目,阿里云生态
Istio完整非侵入式完全云原生,多语言微服务
Consul完整部分侵入式有限中等强一致性分布式系统
Dubbo完整部分侵入式有限中等高性能 Java 架构
Kubernetes+Istio完整非侵入式完全容器化部署,云原生
**Service Mesh(Linkerd)完整非侵入式完全轻量级治理,多语言支持

8. 注意事项

  1. Spring Cloud Netflix:组件(如 Hystrix)已停止维护,建议迁移到 Resilience4j 或 Sentinel。
  2. Istio:需部署 Sidecar,资源消耗较高,适合云原生环境。
  3. Nacos:支持服务发现与配置中心一体化,适合快速搭建。
  4. Seata:需数据库支持,适合需强事务一致性的场景。

通过以上对比和示例,开发者可根据项目需求选择合适的治理方案。对于新项目,Spring Cloud AlibabaIstio 是主流选择,前者适合 Java 生态,后者适合云原生多语言架构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的爬虫算法

1.base64加密 base64是什么 Base64编码&#xff0c;是由64个字符组成编码集&#xff1a;26个大写字母AZ&#xff0c;26个小写字母az&#xff0c;10个数字0~9&#xff0c;符号“”与符号“/”。Base64编码的基本思路是将原始数据的三个字节拆分转化为四个字节&#xff0c;然后…

B树、红黑树、B+树和平衡二叉树(如AVL树)的区别

B树、红黑树、B树和平衡二叉树&#xff08;如AVL树&#xff09;的区别及优缺点的总结&#xff1a; 1. 平衡二叉树&#xff08;AVL树&#xff09; 结构&#xff1a;二叉搜索树&#xff0c;每个节点的左右子树高度差不超过1。平衡方式&#xff1a;通过旋转&#xff08;左旋/右旋…

Python Cookbook-6.5 继承的替代方案——自动托管

任务 你需要从某个类或者类型继承&#xff0c;但是需要对继承做一些调整。比如&#xff0c;需要选择性地隐藏某些基类的方法&#xff0c;而继承并不能做到这一点。 解决方案 继承是很方便的&#xff0c;但它并不是万用良药。比如&#xff0c;它无法让你隐藏基类的方法或者属…

长短期记忆网络:从理论到创新应用的深度剖析

一、引言 1.1 研究背景 深度学习在人工智能领域的发展可谓突飞猛进&#xff0c;而长短期记忆网络&#xff08;LSTM&#xff09;在其中占据着至关重要的地位。随着数据量的不断增长和对时序数据处理需求的增加&#xff0c;传统的神经网络在处理长序列数据时面临着梯度消失和梯…

vue3.2 + element-plus 实现跟随input输入框的弹框,弹框里可以分组或tab形式显示选项

效果 基础用法&#xff08;分组选项&#xff09; 高级用法&#xff08;带Tab栏&#xff09; <!-- 弹窗跟随通用组件 SmartSelector.vue --> <!-- 弹窗跟随通用组件 --> <template><div class"smart-selector-container"><el-popove…

C语言中冒泡排序和快速排序的区别

冒泡排序和快速排序都是常见的排序算法&#xff0c;但它们在原理、效率和应用场景等方面存在显著区别。以下是两者的详细对比&#xff1a; 一、算法原理 1. 冒泡排序 原理&#xff1a;通过重复遍历数组&#xff0c;比较相邻元素的大小&#xff0c;并在必要时交换它们的位置。…

软件信息安全性测试如何进行?有哪些注意事项?

随着信息技术的高速发展&#xff0c;软件已经成为我们生活和工作中不可或缺的一部分。然而&#xff0c;随着软件产品的广泛普及&#xff0c;软件信息安全性问题也日益凸显&#xff0c;因此软件信息安全性测试必不可少。那么软件信息安全性测试应如何进行呢?在进行过程中又有哪…

springboot集成mybaits-generator自动生成代码

文章目录 概述创建springboot项目pom文件aplication.yml代码生成类mybatis-plus提供的变量controller模板mapper模板总结 概述 创建springboot项目&#xff0c;在这里使用的是springboot 2.6.13版本&#xff0c;引入的项目依赖包如pom文件所写&#xff0c;jdk使用1.8&#xff…

数据库脱裤

假设你已经getshell 找到mysql账号密码。 网站要连接mysql&#xff0c;就需要把mysql的账号密码保存在一个php文件中&#xff0c;类似config.php、common.inc.php等&#xff0c;在shell中&#xff0c;读取这些文件&#xff0c;找到其中信息即可 下面是一些常见平台的配置文…

leetcode 337. House Robber III

用动态规划的思想解决这道题。 对于每一个节点&#xff0c;只有两种可能&#xff0c;偷或者不偷。 对于一颗以root为根节点的二叉树&#xff0c;定义rob表示偷root节点能从这棵二叉树偷到的最大金额。定义notrob表示不偷root节点能从这棵二叉树偷到的最大金额。 递推公式分析…

ES和MySQL概念对比

基本概念 ES和MySQL都属于数据库&#xff0c;不过各有各的特性&#xff0c;大致使用方法与MySQL类似并无区别。 MySQL&#xff1a;擅长事务持有ACID的特性&#xff0c;确保数据的一致性和安全。 ES&#xff1a;持有倒排索引&#xff0c;适合海量数据搜索和分析。 ES和MySQL如何…

【python】针对Selenium中弹框信息无法定位的问题,以下是综合解决方案及注意事项:

一、常见原因分析 1.1 弹窗类型不匹配 若弹窗为alert&#xff0c;需使用driver.switch_to.alert处理&#xff1b; 若为confirm或prompt&#xff0c;同样适用该方法。 1.2 窗口句柄切换问题 新窗口或弹窗可能开启新句柄&#xff0c;需先通过driver.window_handles切换到对应句…

欧拉服务器操作系统安装MySQL

1. 安装MySQL服务器​​ 1. 更新仓库缓存 sudo dnf makecache2. 安装MySQL sudo dnf install mysql-server2. 初始化数据库​ sudo mysqld --initialize --usermysql3. 启动数据库服务 # 启动服务 sudo systemctl start mysqld# 设置开机自启 sudo systemctl enable mysql…

SQLark:一款国产免费数据库开发和管理工具

SQLark&#xff08;百灵连接&#xff09;是一款面向信创应用开发者的数据库开发和管理工具&#xff0c;用于快速查询、创建和管理不同类型的数据库系统&#xff0c;目前可以支持达梦数据库、Oracle 以及 MySQL。 对象管理 SQLark 支持丰富的数据库对象管理功能&#xff0c;包括…

Spring Boot 中的自动配置原理

2025/4/6 向全栈工程师迈进&#xff01; 一、自动配置 所谓的自动配置原理就是遵循约定大约配置的原则&#xff0c;在boot工程程序启动后&#xff0c;起步依赖中的一些bean对象会自动的注入到IOC容器中。 在讲解Spring Boot 中bean对象的管理的时候&#xff0c;我们注入bean对…

Mysql8配置文件

Mysql8配置文件 修改my.cnf----配置持久化键(persistence key)配置表名不区分大小写 修改my.cnf----配置持久化键(persistence key) MySQL8初始化数据库之前配置好这些变量值&#xff0c;初始化数据库之后可能无法修改这个值。 # 服务端配置 [mysqld] ######## 数据目录和基…

关于系统架构思考,如何设计实现系统的高可用?

绪论、系统高可用的必要性 系统高可用为了保持业务连续性保障&#xff0c;以及停机成本量化&#xff0c;比如在以前的双十一当天如果出现宕机&#xff0c;那将会损失多少钱&#xff1f;比如最近几年Amazon 2021年30分钟宕机损失$5.6M。当然也有成功的案例&#xff0c;比如异地…

【Unity笔记】实现可视化配置的Unity按键输入管理器(按下/长按/松开事件 + UnityEvent绑定)

【Unity笔记】实现可视化配置的Unity按键输入管理器 适用于角色控制、技能触发的Unity按键输入系统&#xff0c;支持UnityEvent事件绑定、长按/松开监听与启用开关 一、引言 在 Unity 游戏开发中&#xff0c;处理键盘输入是最常见的交互方式之一。尤其是角色控制、技能释放、菜…

Fortran 中使用 C_LOC 和 C_F_POINTER 结合的方法来实现不同类型指针指向同一块内存区域

在 Fortran 中&#xff0c;可以使用 C_LOC 和 C_F_POINTER 结合的方法来实现不同类型指针指向同一块内存区域。以下是具体方法和示例&#xff1a; 关键步骤&#xff1a; 获取内存地址&#xff1a;用 C_LOC 获取原始数组的 C 地址。类型转换&#xff1a;用 C_F_POINTER 将地址转…

Spring Boot整合Kafka的详细步骤

1. 安装Kafka 下载Kafka&#xff1a;从Kafka官网下载最新版本的Kafka。 解压并启动&#xff1a; 解压Kafka文件后&#xff0c;进入bin目录。 启动ZooKeeper&#xff1a;./zookeeper-server-start.sh ../config/zookeeper.properties。 启动Kafka&#xff1a;./kafka-server-…