2026/6/10 12:39:18
网站建设
项目流程
晋城做网站的公司,网站开发的原理,嵌入式工程师能干多久,关于小城镇建设的网站#x1f9d1; 博主简介#xff1a;CSDN博客专家#xff0c;历代文学网#xff08;PC端可以访问#xff1a;https://literature.sinhy.com/#/?__c1000#xff0c;移动端可微信小程序搜索“历代文学”#xff09;总架构师#xff0c;15年工作经验#xff0c;精通Java编… 博主简介CSDN博客专家历代文学网PC端可以访问https://literature.sinhy.com/#/?__c1000移动端可微信小程序搜索“历代文学”总架构师15年工作经验精通Java编程高并发设计Springboot和微服务熟悉LinuxESXI虚拟化以及云原生Docker和K8s热衷于探索科技的边界并将理论知识转化为实际应用。保持对新技术的好奇心乐于分享所学希望通过我的实践经历和见解启发他人的创新思维。在这里我希望能与志同道合的朋友交流探讨共同进步一起在技术的世界里不断学习成长。技术合作请加本人wx注明来自csdnforeast_sea微服务面试题分布式事务和服务监控1. 分布式事务分布式事务可以查看前面的分布式基础篇。1.1 Seata 支持哪些模式的分布式事务Seata 以下几种模式的分布式事务ATAtomikos模式AT 模式是 Seata 默认支持的模式也是最常用的模式之一。在 AT 模式下Seata 通过在业务代码中嵌入事务上下文实现对分布式事务的管理。Seata 会拦截并解析业务代码中的 SQL 语句通过对数据库连接进行拦截和代理实现事务的管理和协调。TCCTry-Confirm-Cancel模式TCC 模式是一种基于补偿机制的分布式事务模式。在 TCC 模式中业务逻辑需要实现 Try、Confirm 和 Cancel 三个阶段的操作。Seata 通过调用业务代码中的 Try、Confirm 和 Cancel 方法并在每个阶段记录相关的操作日志来实现分布式事务的一致性。SAGA 模式SAGA 模式是一种基于事件驱动的分布式事务模式。在 SAGA 模式中每个服务都可以发布和订阅事件通过事件的传递和处理来实现分布式事务的一致性。Seata 提供了与 SAGA 模式兼容的 Saga 框架用于管理和协调分布式事务的各个阶段。XA 模式XA 模式是一种基于两阶段提交Two-Phase Commit协议的分布式事务模式。在 XA 模式中Seata 通过与数据库的 XA 事务协议进行交互实现对分布式事务的管理和协调。XA 模式需要数据库本身支持 XA 事务并且需要在应用程序中配置相应的 XA 数据源。1.2 了解 Seata 的实现原理吗Seata 的实现原理主要包括三个核心组件事务协调器Transaction Coordinator、事务管理器Transaction Manager和资源管理器Resource Manager。事务协调器Transaction Coordinator事务协调器负责协调和管理分布式事务的整个过程。它接收事务的开始和结束请求并根据事务的状态进行协调和处理。事务协调器还负责记录和管理事务的全局事务 IDGlobal Transaction ID和分支事务 IDBranch Transaction ID。事务管理器Transaction Manager事务管理器负责全局事务的管理和控制。它协调各个分支事务的提交或回滚并保证分布式事务的一致性和隔离性。事务管理器还负责与事务协调器进行通信并将事务的状态变更进行持久化。资源管理器Resource Manager资源管理器负责管理和控制各个参与者Participant的事务操作。它与事务管理器进行通信并根据事务管理器的指令执行相应的事务操作包括提交和回滚。Seata 的实现原理基于两阶段提交Two-Phase Commit协议具体的机制如下一阶段在事务提交的过程中首先进行预提交阶段。事务协调器向各个资源管理器发送预提交请求资源管理器执行相应的事务操作并返回执行结果。在此阶段业务数据和回滚日志记录在同一个本地事务中提交并释放本地锁和连接资源。二阶段在预提交阶段成功后进入真正的提交阶段。此阶段主要包括提交异步化和回滚反向补偿两个步骤提交异步化事务协调器发出真正的提交请求各个资源管理器执行最终的提交操作。这个阶段的操作是非常快速的以确保事务的提交效率。回滚反向补偿如果在预提交阶段中有任何一个资源管理器返回失败结果事务协调器发出回滚请求各个资源管理器执行回滚操作利用一阶段的回滚日志进行反向补偿。1.3 Seata 的事务执行流程是什么样的Seata 事务的执行流程可以简要概括为以下几个步骤事务发起方Transaction Starter发起全局事务事务发起方是指发起分布式事务的应用程序或服务。它向 Seata 的事务协调器发送全局事务的开始请求生成全局事务 IDGlobal Transaction ID。事务协调器创建全局事务记录事务协调器接收到全局事务的开始请求后会为该事务创建相应的全局事务记录并生成分支事务 IDBranch Transaction ID。分支事务注册事务发起方将全局事务 ID 和分支事务 ID 发送给各个参与者Participant即资源管理器。参与者将分支事务 ID 注册到本地事务管理器并将事务的执行结果反馈给事务协调器。执行业务逻辑在分布式事务的上下文中各个参与者执行各自的本地事务即执行业务逻辑和数据库操作。预提交阶段事务发起方向事务协调器发送预提交请求事务协调器将预提交请求发送给各个参与者。执行本地事务确认参与者接收到预提交请求后执行本地事务的确认操作并将本地事务的执行结果反馈给事务协调器。全局事务提交或回滚事务协调器根据参与者反馈的结果进行判断如果所有参与者的本地事务都执行成功事务协调器发送真正的提交请求给参与者参与者执行最终的提交操作如果有任何一个参与者的本地事务执行失败事务协调器发送回滚请求给参与者参与者执行回滚操作。完成全局事务事务协调器接收到参与者的提交或回滚结果后根据结果更新全局事务的状态并通知事务发起方全局事务的最终结果。1.4 全局事务 ID 和分支事务 ID 是怎么传递的全局事务 ID 和分支事务 ID 在分布式事务中通过上下文传递的方式进行传递。常见的传递方式包括参数传递、线程上下文传递和消息中间件传递。具体的传递方式可以根据业务场景和技术选型进行选择和调整。1.5 Seata 的事务回滚是怎么实现的Seata 的事务回滚是通过回滚日志实现的。每个参与者在执行本地事务期间生成回滚日志记录了对数据的修改操作。当需要回滚事务时事务协调器向参与者发送回滚请求参与者根据回滚日志中的信息执行撤销操作将数据恢复到事务开始前的状态。回滚日志的管理和存储是 Seata 的核心机制可以选择将日志存储在不同的介质中。通过回滚日志的持久化和恢复Seata 确保了事务的一致性和恢复性。2. 服务监控2.1 你们的服务怎么做监控和告警我们使用 Prometheus 和 Grafana 来实现整个微服务集群的监控和告警PrometheusPrometheus 是一个开源的监控系统具有灵活的数据模型和强大的查询语言能够收集和存储时间序列数据。它可以通过 HTTP 协议定期拉取微服务的指标数据并提供可扩展的存储和查询功能。GrafanaGrafana 是一个开源的可视化仪表板工具可以与 Prometheus 结合使用创建实时和历史数据的仪表板。Grafana 提供了丰富的图表和可视化选项可以帮助用户更好地理解和分析微服务的性能和状态。2.2 你们的服务怎么做日志收集日志收集有很多种方案我们用的是ELKElasticsearchElasticsearch 是一个分布式搜索和分析引擎用于存储和索引大量的日志数据。它提供了快速的搜索和聚合功能可以高效地处理大规模的日志数据。LogstashLogstash 是一个用于收集、过滤和转发日志数据的工具。它可以从各种来源如文件、网络、消息队列等收集日志数据并对数据进行处理和转换然后将其发送到 Elasticsearch 进行存储和索引。KibanaKibana 是一个用于日志数据可视化和分析的工具。它提供了丰富的图表、仪表盘和搜索功能可以帮助用户实时监控和分析日志数据发现潜在的问题和趋势。简单说这三者里Elasticsearch提供数据存储和检索能力Logstash负责将日志收集到 ESKibana负责日志数据的可视化分析。使用 ELK 进行微服务日志收集的一般流程如下在每个微服务中配置日志输出将微服务的日志输出到标准输出stdout或日志文件。使用 Logstash 收集日志配置 Logstash 收集器通过配置输入插件如文件输入、网络输入等监听微服务的日志输出并进行过滤和处理。将日志数据发送到 Elasticsearch配置 Logstash 的输出插件将经过处理的日志数据发送到 Elasticsearch 进行存储和索引。使用 Kibana 进行可视化和分析通过 Kibana 连接到 Elasticsearch创建仪表盘、图表和搜索查询实时监控和分析微服务的日志数据。除了应用最广泛的 ELK还有一些其它的方案比如Fluentd、Graylog、Loki、Filebeat一些云厂商也提供了付费方案比如阿里云的sls。