SOFABolt

基于 Netty 的网络通信框架
授权协议 Apache 2.0
开发语言 Java
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 宇文温文
操作系统 跨平台
开源组织 蚂蚁金服
适用人群 未知
 软件概览

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 定义结构:

  • 官方文档请参考:https://www.sofastack.tech/projects/sofa-bolt/sofa-bolt-handbook/ 1、sofa-bolt是什么? SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。 为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO 的实现以及处理难以调试的网

  • 前言 SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。 为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO 的实现以及处理难以调试的网络问题,Netty 应运而生。 为了让中间件开发者能将更多的精力放在产品功能特性实现上,而不是重复地一遍遍制造通信框架的轮子,SOFABolt 应运而生。 Bolt 名字取自

  • SOFABolt 是一个轻量级、高性能、易用的远程通信框架,基于netty4.1,由蚂蚁金服开源。 本系列博客会分析 SOFABolt 的使用姿势,设计方案及详细的源码解析。后续还会分析 SOFABolt 的最佳实践 SOFARPC 的设计和实现 SOFABolt 源码分析1 - 最简使用姿势 SOFABolt 源码分析2 - RpcServer 服务端启动设计 SOFABolt 源码分析3 -

 相关资料
  • 本文向大家介绍基于NIO的Netty网络框架(详解),包括了基于NIO的Netty网络框架(详解)的使用技巧和注意事项,需要的朋友参考一下 Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 Netty的优点有: a、功

  • 主要内容:前言,Netty客户端与服务端交互流程,1. 写一个NettyServer,2. 写一个NettyClient,     ChannelHandler ,3.  用NettyClient测试NettyServer,4. 整合netty,5.  failed to create a child event loop 报错问题前言            上篇文章写到了利用zookeeper的特性实现缓存服务地址列表,接下来我们可以借助Netty的优点对程序进行改造,使其即支持Http容器的

  • OSI七层模型及相关考点 记忆技巧:All people seem to need data processing. All application 应用层 People presentation 表示层 Seem session 会话层 To transport 传输层 need network 网络层 data datalink 数据链路层 processing physical 物理层 传输

  • 用途: 提供对网络通信的访问 Addressing, Protocol Families and Socket Types Looking up Hosts on the Network Finding Service Information Looking Up Server Addresses IP Address Representations TCP/IP Client and Serve

  • 使用QQ轻游戏后台 QQ轻游戏后台用现成的房间逻辑,开发者可以使用进行房间创建、加入、离开、以及自带的帧同步以及消息同步方案。 使用QQ轻游戏后台详情跳转至此处 自建后台 使用自建后台,开发者可以使用引擎自带的 BK.WebSocket、BK.Socket、BK.HttpUtil三种方法进行后台数据的交换。 使用自建后台详情跳转至此处 因为自建后台的房间概念QQ轻游戏并不理解,为在聊天窗中模拟房间

  • 德州仪器(TI)的CC3000 WiFi模块是一款小型银色封装,最终为您的Arduino项目带来了易于使用,价格合理的WiFi功能。 它使用SPI进行通信(而不是UART!),因此您可以根据需要快速推送数据,也可以根据需要尽可能慢地推送数据。 它有一个带有IRQ引脚的适当中断系统,因此您可以进行异步连接。 它支持802.11b/g,开放/ WEP/WPA/WPA2安全性,TKIP和AES。 带有“

  • Chrome应用通过sockets接口支持TCP和UDP协议,使网络通信成为可能。使用sockets接口时,声明权限比较特殊,并不在permissions中声明,而是直接在Manifest的sockets中声明: "sockets": { "udp": { "send": ["host-pattern1", ...], "bind": ["host-patt

  • 在网络流量工具Charles的安装和用法和6.1 分析HTTP/HTTPS网络流量 这两节,我们介绍了对iOS的网络通信进行分析的方法。 利用文章介绍的方法,可以发现有以下几类: 发送明文密码 有的应用一点也不注意用户数据的安全,竟然发送明文密码。读者可以拿自己常用的App试试,应该能发现这种App,我发现我常用的一个电影相关App竟然用HTTP直接发送用户的明文密码。 发送密码的md5 有的应用