基于 Netty 的网络通信框架 SOFABolt

Apache 2.0
Java
跨平台
蚂蚁金服
2018-04-19
王练
SOFABolt 正在参加 2019 年度最受欢迎开源中国软件评选,请投票支持!
SOFABolt 在 2019 年度最受欢迎开源中国软件评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票赢奖品
已投票

SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。

  • 为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO 的实现以及处理难以调试的网络问题,Netty 应运而生。

  • 为了让中间件开发者能将更多的精力放在产品功能特性实现上,而不是重复地一遍遍制造通信框架的轮子,SOFABolt 应运而生。

Bolt 名字取自迪士尼动画-闪电狗,是一个基于 Netty 最佳实践的轻量、易用、高性能、易扩展的通信框架。 这些年我们在微服务与消息中间件在网络通信上解决过很多问题,积累了很多经验,并持续的进行着优化和完善,我们希望能把总结出的解决方案沉淀到 SOFABolt 这个基础组件里,让更多的使用网络通信的场景能够统一受益。 目前该产品已经运用在了蚂蚁中间件的微服务 (SOFARPC)、消息中心、分布式事务、分布式开关、以及配置中心等众多产品上。

功能介绍

SOFABolt 的基础功能包括:

  • 基础通信功能 ( remoting-core )

    • 基于 Netty 高效的网络 IO 与线程模型运用

    • 连接管理 (无锁建连,定时断链,自动重连)

    • 基础通信模型 ( oneway,sync,future,callback )

    • 超时控制

    • 批量解包与批量提交处理器

    • 心跳与 IDLE 事件处理

  • 协议框架 ( protocol-skeleton )

    • 命令与命令处理器

    • 编解码处理器

    • 心跳触发器

  • 私有协议定制实现 - RPC 通信协议 ( protocol-implementation )

    • RPC 通信协议的设计

    • 灵活的反序列化时机控制

    • 请求处理超时 FailFast 机制

    • 用户请求处理器 ( UserProcessor )

    • 双工通信

用法1

将 SOFABolt 用作一个远程通信框架,使用者可以不用关心如何实现一个私有协议的细节,直接使用我们内置的 RPC 通信协议。可以非常简单的启动客户端与服务端,同时注册一个用户请求处理器,即可完成远程调用。同时,像连接管理、心跳等基础功能特性都默认可以使用。 当前支持的调用类型如下图所示:

用法2

将 SOFABolt 用作一个协议框架,使用者可以复用基础的通信模型、协议包含的接口定义等基础功能。然后根据自己设计的私有协议自定义 Command 类型、Command 处理器、编解码处理器等。如下图所示,RPC 和消息的 Command 定义结构:

的码云指数为
超过 的项目
加载中

评论(3)

二进制艺术
二进制艺术
谁提交的,能不能敬业一点?
杭州小萌新
都没复制完...垃圾
彪付_3个字符
很抽象,用了的大神,都在浅水嘛

SOFABolt 发布 v1.6.0 版本 | 蚂蚁金服开源网络通信框架

发布 SOFABolt v1.6.0 版本,主要变更如下: 兼容性 兼容 1.5.5 版本 v1.6.0 的 pom 依赖 <!-- 日志门面使用slf4j,日志实现可以选择log4j、log4j2、logback,可参考:https://github.com/...

06/10 14:18

SOFABolt 发布 v1.5.5 版本 | 蚂蚁金服开源网络通信框架

1、发布 SOFABolt v1.5.5 版本,主要变更如下: 1)兼容性 兼容1.5.4版本 v1.5.5的pom依赖 <!-- 日志门面使用slf4j,日志实现可以选择log4j、log4j2、logback,可参考:https://github.co...

05/30 10:08

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

Hey, SOFAer!有些话想对你说:

“开源”二字代表的不仅仅是一个项目,更是代表了整个技术社区,代表了隐藏在背后的工程师们。 很幸运,这一年遇到你们。 生于蚂蚁金服,经历 12 年的业务锤炼,这是金融级分布式架构 SOFASt...

04/16 11:58
16
0
Consistent-Hash(一致性hash)-从sofa-registry谈起

SOFARegistry 简介 SOFARegistry 是蚂蚁金服开源的一个生产级、高时效、高可用的服务注册中心 功能特性 * 支持服务发布与服务订阅 * 支持服务变更时的主动推送 * 丰富的 REST 接口 * 采用分层...

08/04 21:05
28
0
SOFAJRaft 日志复制 - pipeline 实现剖析 | SOFAJRaft 实现原理

SOFAStack(Scalable Open Financial Architecture Stack) 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 SOFAJR...

08/07 09:41
9
0
2018年阿里巴巴开源的那些牛逼java项目汇总

把阿里巴巴的一些重要的开源项目进行整理,希望对大家有所帮助。(以下项目排名不分先后) 1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布...

02/15 17:40
122
0
阿里巴巴的26款超神Java开源项目!

1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通...

02/21 20:01
242
1
阿里巴巴的26款超神Java开源项目!

1、分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通...

02/26 12:02
14
0
RPC泛化调用

前言 普遍RPC在客户端需要提供接口,如果不提供则无法进行调用。同时,因为客户端也依赖提供的接口,服务端的升级、优化所带来的更新,客户端也要及时的更新API,否则会带来影响。这样,就带...

04/13 21:01
170
0
开源 | 蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系

小蚂蚁说: 数据、消息、微服务是蚂蚁金服自主研发的金融级分布式中间件 SOFA (Scalable Open Financial Architecture)的三大方向。 一个多月前,蚂蚁金服开源了 SOFABoot 和 SOFARPC 两个...

2018/06/01 14:56
121
0
开源 | Eggjs 和 SOFA 的跨语言互调

摘要: 本文通过 Step by Step 的形式介绍了 Eggjs 和 SOFA(Java)是如何进行互联互通的,涵盖了 RPC 的服务发现、接口定义、本地代理生成、服务端实现等各方面,期望展现给你一个相对完整的...

2018/06/14 13:12
66
0
开源 | Eggjs 和 SOFA 的跨语言互调

摘要: 本文通过 Step by Step 的形式介绍了 Eggjs 和 SOFA(Java)是如何进行互联互通的,涵盖了 RPC 的服务发现、接口定义、本地代理生成、服务端实现等各方面,期望展现给你一个相对完整的...

2018/06/14 13:12
30
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部