SOFA Weekly | SOFAJRaft 以及 SOFABoot 发布、MOSN 社区活动预告

手写SOFA-JRAFT:分析节点启动过程,初步实现 NodeImpl(一) 大家好,从这一章开始,就正式进入到 sofajraft 框架的手写实现领域了。在开始正式实现之前,我想先介绍一下接下来要带领大家实现的这个框架,这个框架是一个 Raft 共识算法框架,一般来说,这种框架只会作为其他框架的一个核心依赖使用,并不会和我们的业务层耦合在一起。就像 Netty 一样,可能在很多框架中都能见到 Netty,但是在真正的工作中,你很少有机会直接使用 Netty 对你的业务做一些操作。而且我还可以很负责任地和大家说一句,Sofa-Jraft框架内部虽然有很多细节,并且对 Raft 算法本 阅读详情

SOFA WEEKLY | 每周精选,筛选每周精华问答

同步开源进展,欢迎留言互动

SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,也是在金融场景里锤炼出来的最佳实践。

SOFAStack 官网: https://www.sofastack.tech

SOFAStack: https://github.com/sofastack

  每周读者问答提炼  

欢迎大家向公众号留言提问或在群里与我们互动

我们会筛选重点问题通过 

" SOFA WEEKLY " 的形式回复

@刘明 提问

请问,分支事务在回滚过程中,服务器宕机了,重新启动后,TC 如果发送过来的回滚请求,是否还能继续回滚?

A:可以。

是使用 XA 模式的 Oracle 数据库,分支服务器即使宕机了,回滚日志还在 Oracle 上是么?

A:是的,xa_prepare 在 DB 实现 XA 层面做了持久化,MySQL 要求 5.7.7+。

刚测试了下 Oracle 的,xid 就像一个字符串 key 一样,任何时候只要告诉 Oracled 对 xid 做 rollback 都可以成功。我以为需要在 start/end 同一个连接里才行,是我理解错了。

A:lcn 才需要这样,xa 不需要一个连接,所以 lcn 那种宕机了数据就没了。

LCN 没有了解,他难道不是基于数据库自带的 XA 实现的?

A:lcn 是 lcn 框架的一个原理,就是通过 connection 来统一提交和回滚。

我是用 jdbc 直接操作 Oracle 测试的,用 Oracle 的 XAResource。这个特性是数据库自带的?

A:XA 协议本来就是由数据库方进行的支持。

使用 DatabaseSessionManager 去存储 globalsession,这个 lockAndExecute 方法没有 lock 的逻辑,多个进程在获取 global 会话做超时、重试提交等时,会有资源冲突吗?

A:多个 TC 会出现资源争抢冲突,倒是不影响一致性。

多个 TC 会对同一个 XID 做 retryCommitingg 操作吧,2个 TC 会做2次,3个 TC 会做3次?

A:是的,没有分布式任务调度。

2个事务分支,TC 在发起提交请求后,分支一正常提交,分支二网络波动没有收到提交请求。这个时候 TC 会尝试重试提交。如果一直重试失败,会因为全局事务 timeout 发起回滚请求吗?

A:提交一阶段就是持久化了,不会影响。

但是全局事务会有个超时检查,超时的事务处理方式就是回滚,会不会这样?分支二的提交重试一直不能成功,最后global 会话超时的吧?这时候分支一已经 commit,再做 rollback 肯定不行了。

A:二阶段结果已经出现了,已经决议好了的,二阶段的提交只不过是空提交而已,异步的。

二阶段 TC 成功发送 commit,RM 接收到了后,执行 XA 提交动作,这时候数据才真正可以看到,如果 RM 接收不到 commit 请求,他本地数据时没有提交的吧?

A:XA 模式确实是这样的。

那参与者中有人收到 commit 请求了,有人没收到,最后 global 超时,是不是也没法回滚了?

A:XA 一阶段只是做了预备数据的持久化,保持操作,并没有真正入库,等到 commit 的时候才会入库,每个模式2阶段都不一样。

Seata:https://github.com/seata/seata

  本周推荐阅读  

  SOFA 项目进展  

本周发布详情如下:

1、发布 SOFABoot v3.4.2 版本,主要变更如下:

  • 修复 ServiceComponent 和 ReferenceComponent 的健康检查结果不包含抛出的内部异常;

  • 修复默认情况下 SOFA runtime 忽略组件抛出的内部异常;

  • 增加引流操作的阻断性,fail fast;

详细发布报告:

https://github.com/sofastack/sofa-boot/releases/tag/v3.4.2

2、发布 SOFAJRaft v1.3.4 版本,主要变更如下:

  • 升级 SOFABolt 到 1.6.2(支持异步非阻塞建连机制);

  • 移除对 log4j 的直接依赖;

  • RouteTable、RegionEngine、StoreEngine 实现 Describer 以提供更详细的调试信息;

  • 修复创建 snapshot 文件潜在的安全漏洞,禁止跳出 snapshot 目录之外创建文件;

详细发布报告:

https://github.com/sofastack/sofa-jraft/releases/tag/1.3.4

  社区活动预告  

GIAC(GLOBAL INTERNET ARCHITECTURE CONFERENCE)是面向架构师、技术负责人及高端技术从业人员的年度技术架构大会,是中国地区规模最大的技术会议之一。蚂蚁集团也受邀进行 CloudNative(云原生) 的主题分享。

  • 分享主题:云原生网络代理 MOSN 的进化之路

  • 分享嘉宾:王发康(毅松)蚂蚁集团 可信原生技术部 技术专家

  • 背景介绍:网络通信代理 MOSN 在蚂蚁集团的 Service Mesh 大规模落地后,通过对接 UDPA 打造为 Istio 的数据面之一,增强 MOSN 服务治理及流量控制能力,对接云原生周边组件,实现 MOSN 开箱即用,MOSN 成为云原生 Service Mesh 的标准 Sidecar 之一,从而借力开源,反哺开源。

  • 听众收益:可快速基于 MOSN 和 Istio 进行 Service Mesh 实践,了解微服务的发展历程、遇到的痛点以及解决方案,获取 MOSN 的功能特性,解决微服务常见的问题。

  • 分享时间:2020-08-15 13:30-14:30

  • 活动地点:深圳

  • 活动报名:点击“阅读原文”

本文归档在 sofastack.tech。

手把手教你写raft--sofajraft选举源码分析(4) 相较于原本的raft算法jraft进行了不少的优化,使用preVote机制避免了集群中不必要的投票,同时leader能够修改自己的term以此来应对candidate term大于自身的情况,这也是避免不必要选举的一种手段。此外,jraft还实现了leader租约的机制,在租约期间内peer无条件认为leader正常,以此来fail fast选举流程。 阅读详情

相关推荐

Sofa-jraft:RAFT共识算法的生产级Java实现

SOFAJ筏 总览 SOFAJRaft是基于一致性算法的生产级高性能Java实现,该算法支持MULTI-RAFT-GROUP用于高负载,低延迟的情况。 使用SOFAJRaft,您可以专注于您的业务领域。 SOFAJRaft应对所有与RAFT相关的技术挑战。 SOFAJRaft非常用户友好,它提供了几个示例,使其易于理解和使用。 产品特点 领导人选举和基于优先级的半确定性领导人选举 日志复制和恢复 只读成员(学习者) 快照和日志压缩 集群成员资格管理,添加节点,删除节点,替换节点等。 用于重新引导,负载平衡场景等的传输领导者的机制 对称的网络分区容限 不对称的网络分区容限 容错,少数故障不会

大话Raft及JRaft、Sofa-JRaft、KRaft

Raft剖析研究

gaozhenzhai的博客 1064

SOFA架构DEMO

博文对应的demo提供给大家一起学习。希望对大家有所帮助

基于 SOFAJRaft 实现注册中心

通过本文的学习可以帮助大家了解 SOFAJRaft 的使用方式和集成步骤;参考本文的实现步骤,可以来完成自己工作中相关产品的一致性协议 raft 集成,从而实现应用的高可用。学习本文的前提需要了解 Raft 一致性协议对 SOFAJRaft 框架有一定的了解可以参考:SOFAJRaft 日志复制共识算法本文主要讨论的内容如下注册中心的实现如何集成 Raft 协议来实现注册中心高可用。

谢文峰的博客 1259

[XJTUSE DATABASE]——第三章 关系数据库标准语言SQL

新年了,来个大的,写了好几天,将近9000字,希望对大家有所帮助

weixin_47692652的博客 3120

手把手教你搞定JBI投稿:从Statement of Significance到Declaration Statement的保姆级避坑指南

本文提供了一份详细的JBI投稿指南,重点解析Statement of Significance和Declaration of Interests的撰写技巧,帮助研究者避开常见格式陷阱。通过实战案例和检查清单,确保投稿符合JBI的学术严谨性和临床转化价值要求,提升稿件通过率。

weixin_29278805的博客 622

SOFAJRaft 简介

SOFAJRaft是一个基于Raft一致性算法的生产级高性能Java实现,由蚂蚁金服自主研发。来源与背景SOFAJRaft是从百度的braft移植而来,并在其基础上进行了一系列的优化和改进。它作为蚂蚁金服SOFAStack分布式架构中的一个组件,旨在提供金融级的高性能分布式一致性解决方案。特性与优势支持MULTI-RAFT-GROUP:这使得SOFAJRaft能够适用于高负载低延迟的场景。生产级高性能:通过优化和改进,SOFAJRaft在性能和稳定性上都得到了显著的提升。功能组成Log存储。

xu990128638的专栏 571

别再模拟IIC了!用STM32F103C8T6的硬件IIC驱动AT24C64,CubeMX配置+避坑指南

本文详细介绍了如何使用STM32F103C8T6的硬件IIC驱动AT24C64 EEPROM,通过CubeMX配置和HAL库函数解析,提供从模拟IIC到硬件IIC的完整解决方案。内容包括硬件IIC与模拟IIC的核心差异、CubeMX工程配置详解、HAL库驱动实战以及典型问题诊断与优化,帮助开发者构建更稳定高效的存储系统。

weixin_27038245的博客 188

sofa-jraft源码学习

选举 流程按照官方样例梳理,example中的election模块 初始化 创建节点配置信息NodeOptions 创建状态机ElectionOnlyStateMachine,绑定至NodeOptions 创建配置文件Configuration,解析配置的服务列表initialServerAddressList,绑定至NodeOptions 根据dataPath设置日志存储路径 根据data...

阿呆的专栏 2761

WinCC动态选择报警记录案例

本例中需要确认查询的时间段以及查询的关键字,然后通过一个按钮来执行报警数据查询脚本,并把查询出的结果加载到当前报警控件中。<本例中数据查询脚本的思路是根据选项组所选定的参数加载相应的归档变量到在线趋势控件,根据设定的查询时间范围设定控件时间轴的开始时间及结束时间。本文以 WinCC V8.0为例,介绍如何动态的查询WinCC报警记录,包括关键字查询/时间&关键字查询,如图1所示。<在WinCC变量管理中创建不同的变量组,并在变量组下创建相应的变量,如图2 所示(下图并非实际变量值)。

weixin_45072604的博客 2709

从零理解Brep:用Python玩转3D建模的边界表示法(附OpenCASCADE示例)

本文深入解析了边界表示法(Brep)在3D建模中的应用,通过Python和OpenCASCADE的实战示例,详细介绍了Brep的核心数据结构、布尔运算、网格转换及3D打印优化技巧。适合CAD设计、3D打印和计算机图形学领域的开发者学习与实践。

n4o5p6q7r的博客 427

SOFA Weekly | SOFABoot 发布、SOFAJRaft 以及 SOFARPC 内容合辑

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)...

金融级分布式架构 356

一篇文章足够你学习Bluez,提供史上最全的Bluez教程,让你告别Bluez从入门到放弃

Bluez是真的难,说“入门到放弃”真的毫不夸张,Bluez的学习曲线陡峭,要求对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度。

朝气蓬勃 2538

SOFA Weekly | SOFARPC 发布新版本,QA 整理

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)是...

金融级分布式架构 276

Qt/C++音视频开发1-vlc解码播放

一、前言 最开始接触视频监控这块的时候,用的就是vlc作为解码的内核,主要是因为vlc使用简单方便,直接传入一个句柄即可,简单几行代码就可以实现一个视频流播放,很适合初学者使用,也推荐初学者用qt+vlc来做播放器,提供的接口还是非常友好的,而且门类特别多,想要获取媒体文件的各种信息比如宽高,设置宽高比等,直接调用接口函数传入参数就能设置。 所有用vlc做视频监控解码的人都会遇到一个问题,那就是鼠标事件被接管拦截了,不能识别鼠标事件,比如双击最大化等,这就很憋屈了,明明很好用的一个东西,怎么突然之间鼠标事件

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 4939

我的PCB设计经验总结及最容易犯错的100例之二B07

本文总结了PCB设计中的常见错误及解决方法。作者通过记录自身及他人的设计失误,系统归纳了高频、隐蔽且致命的问题,如电容中间穿线、高速信号跨分割、锐角布线等。重点提出从错误中提炼规律,建立分类案例库,并开发自动化检查工具的方法。案例涵盖高速信号处理、电源设计、EMC防护等关键领域,强调通过原理理解和实践验证提升设计质量。文章建议工程师建立个人错误数据库,从被动纠错升级为主动预防,最终形成系统化的设计方法论,提高PCB一次成功率。

启芯硬件的博客 83

SOFAJRaft终极指南:快速掌握分布式一致性核心技术

SOFAJRaft是一个基于Raft一致性算法的高性能Java实现,专为构建高可用、强一致的分布式系统而设计。作为生产级的分布式一致性解决方案,它帮助开发者轻松应对分布式环境中的数据一致性问题。 ## 🚀 项目快速入门 ### 环境准备与项目构建 开始使用SOFAJRaft前,确保您的开发环境满足以下要求: - **JDK版本**:1.8或更高 - **Maven版本**:3.2.5或更

gitblog_00614的博客 1109

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

详解蚂蚁金服 SOFAJRaft:生产级高性能 Java 实现

SOFAStack(Scalable Open Financial Architecture Stack) 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。前言SOFAJRaft 是一个基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景。SOFAJRaft 是...

啊啊啊啊2 633

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SOFAJRaft 常见问题解决方案

SOFAJRaft 是一个基于 RAFT 一致性算法的生产级别、高性能的 Java 实现。它支持多 RAFT 组(MULTI-RAFT-GROUP),适用于高负载、低延迟的场景。使用 SOFAJRaft,开发者可以专注于业务领域,而将 RAFT 相关的技术挑战交由 SOFAJRaft 处理。该项目非常用户友好,提供了多个示例,使得理解和使用变得容易。主要编程语言为 Java。 ## 2. 新手常

gitblog_00786的博客 465

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

探索分布式一致性解决方案:SOFARPC 的 JRaft 模块

则是 SOFAStack 社区打造的一个基于 Java 实现的 Raft 算法库,它是 SOFARPC 中用于实现高可用和分布式一致性的重要模块。该项目的目标是为开发者提供一个简单易用、稳定高效的 Raft 协议实现。 ## 技术分析 ### JRaft 算法基础 JRaft 基于经典的[Raft 一致性算法](https://www.oschina.net/p/raft),这是一种在分布式

gitblog_00048的博客 676

SOFAJRaft 完整指南:5步掌握分布式一致性算法实现

SOFAJRaft 是一个基于 Raft 一致性算法的生产级高性能 Java 实现,专为构建高可用、强一致的分布式系统而设计。无论你是分布式系统新手还是经验丰富的开发者,SOFAJRaft 都能帮助你轻松实现复杂的一致性需求,让分布式应用开发变得简单高效。😊 ## 项目核心价值解析 SOFAJRaft 的核心价值在于它将复杂的分布式一致性算法封装成简单易用的 API,让开发者能够专注于业务逻

gitblog_00004的博客 791

SOFAJRaft嵌入式KV存储实现:从RheaKV到分布式锁的完整应用指南

SOFAJRaft是一个生产级的Java RAFT共识算法实现,不仅提供了可靠的分布式一致性能力,还通过RheaKV模块实现了高性能的嵌入式KV存储,支持分布式锁等关键特性。本文将带你全面了解RheaKV的架构设计、核心功能及分布式锁的实现原理,帮助开发者快速上手这一强大工具。 ## 一、RheaKV:基于RAFT的分布式KV存储 RheaKV是SOFAJRaft生态中的分布式KV存储组件,依

gitblog_00635的博客 453

5个关键步骤:从零开始掌握SOFAJRaft分布式一致性框架

SOFAJRaft是一个基于Raft一致性算法的生产级高性能Java实现,专为高负载、低延迟的分布式场景设计。它提供了完整的Raft算法实现,包括领导者选举、日志复制、成员变更等核心功能,帮助开发者快速构建可靠的分布式系统。 ## 🚀 快速部署指南:搭建你的第一个Raft集群 ### 环境准备与项目构建 首先确保你的开发环境满足以下要求: - JDK 1.8或更高版本 - Maven 3.

gitblog_00788的博客 799

SOFAJRaft 选举机制剖析 | SOFAJRaft 实现原理

我们在本文中采用了类比的方式来剖析源码,主要是为了让读者能更容易的理解如何在分布式环境中达成共识,其实这也是整个 SOFAJRaft 要实现的目标。行文至此,作者感觉已经把选举说清楚了,如果还有没提到的地方,或者一些流程中的分支任务,欢迎从源码中进一步寻找答案。最后贴出上面提到的四个方法的源码。图14 - preVote 预投票图15 - electSelf 投票图16 - handlePreVoteRequest 处理预投票图17 - handleRequestVoteRequest 处理投票。

summer_fish的专栏 642

Raft算法_SOFAJRaft源码学习_(一、背景及选主演示)

背景 raft算法原理,建议参考raft官网:https://raft.github.io/ 强烈推荐观看raft的流程动画,方便直观理解算法过程 动画地址:http://thesecretlivesofdata.com/raft/ 本系列通过阅读SofaJRaft源码,并在本地运行SofaJRaft自带的Counter演示程序,学习了解raft算法在工程中的具体实现。 SofaJRaft源码地址:https://github.com/sofastack/sofa-jraft 对应的文档地址

纯兴趣 1247

AI分布式Token中转站网关底层实现-东方仙盟

在终端优先同步架构下,所有终端智能体请求不再直连上游 MaaS 平台(千帆、百炼、DeepSeek 等),全部经由分布式 Token 中转站网关统一中继。网关承担虚拟客户密钥签发、上游子账号路由、前置内容安全审计、事务路由调度、可控网络震荡多上游链路容灾、SSE 流式透传、用量记账、封禁熔断、原始 IP 封包签名溯源等核心职责。本文基于 Go 实现分布式网关核心底座,复用架构原有无状态 Token 穿透、事务 ID 幂等、链路探活、多节点中继能力;区分两层密钥体系:面向终端客户的虚拟 Key。

cybersnow精通 28 门计算机语言,凭借其超凡的技术能力,成功开发过上万个应用,广泛涉及政府、商业、个人等众多领域,甚至在检察院、环保局、公安局等专业场景中也大放异彩。不仅熟练掌握单片机和物联网开发,在软件架构设计方面更是独树一帜,自创了跨平台软件 240
上一篇: Kata Containers 2.0 的进击之路
下一篇: 少年五年升阿里 P8,他如何从低谷登上“光明顶”?
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值