SOFABolt是一款网络通信框架,当你需要为应用程序配置远程通信服务的时候就可以使用这款框架,通过这款软件就可以配置多款应用程序远程服务调用具体方案,让应用程序之前的数据可以同步,从而在监控平台获取多个终端的数据,对于需要远程监控数据、监控流量变化、监控平台负载等场景很有帮助,软件基于Netty开发,您可以在SOFABoot中使用XML、在SOFABoot中使用注释、在SOFABoot中使用动态API,也可以结合SOFARPC使用,为开发者提供更便捷的应用通信服务配置方案!
SOFABolt软件功能
SOFABolt的基功能包括:
1、基通信功能 ( remoting-core )
基于 Netty 高效的网络 IO 与线程模型运用
连接管理 (无锁建连,定时断链,自动重连)
基通信模型 ( oneway,sync,future,callback )
超时控制
批量解包与批量提交处理器
心跳与 IDLE 事件处理
2、协议框架 ( p tocol-skeleton )
命令与命令处理器
编解码处理器
心跳触发器
3、私有协议定制实现 - RPC 通信协议 ( pt ocol-implementation )
RPC 通信协议的设计
灵活的反序列化时机控制
请求处理超时 FailFast 机制
用户请求处理器 ( UserPcessor )
双工通信
SOFABolt软件特色
SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。
* 为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO 的实现以及处理难以调试的网络问题,Netty 应运而生。
* 为了让中间件开发者能将更多的精力放在产品功能特实现上,而不是重复地一遍遍制造通信框架的子,SOFABolt 应运而生。
Bolt 名字取自迪士尼动画-闪,是一个基于 Netty 最佳实践的轻量、易用、高能、易扩展的通信框架。
这些年我们在微服务与消息中间件在网络通信上解决过很多问题,积累了很多经验,并持续的进行着优化和完善,我们希望能把总结出的解决方案沉淀到 SOFABolt 这个基组件里,让更多的使用网络通信的场景能够统一受益。
目前该产品已经运用在了蚂蚁中间件的微服务(SOFARPC)、消息中心、分布式事务、分布式开关、以及配置中心等众多产品上。
SOFABolt教程
开始使用SOFABoot
建立专案
1、准备环境:SOFABoot需要JDK7或JDK8,并且需要使用Apache Maven 2.2.5或更高版本进行编译。
2、生成SOFABoot项目:SOFABoot基于Spng Boot。因此,您可以使用Spng Boot的项目生成工具来生成标准的Spng Boot项目。
3、添加SOFABoot依赖关系:生成的标准Spng Boot项目直接使用Spng父依赖关系,应将其更改为SOFABoot提供的父依赖关系。父级依赖项提供并管理SOFABoot提供的各种启动程序。
将以上内容替换为以下内容:
1、Configure application.pperties: application.pperties是SOFABoot项目中的配置文件。在这里,您需要配置应用程序名称。
spng.application.name=AppName
2、介绍RPC启动器:
声明SOFABoot的xsd文件:
在要使用的XML配置文件中,将头文件xsd文件的声明配置为以下内容。这样可以使用SOFABoot定义的XML元素进行开发。
定义服务接口和实施
在上发布服务
在xml文件中配置以下内容。刷新Spng上下文后,SOFABoot在上注册服务实现,通过螺栓协议与客户端通信,并将诸如地址之类的元数据发布到注册表中心(默认情况下,本地文件用作注册表中心)。
客户咨询服务
在xml文件中配置以下内容。刷新Spng上下文后,SOFABoot会生成RPC代理Bean personReferenceBolt。这使您可以直接在代码中使用Bean进行远程调用。
运行项目
SpngBoot的启动类编码如下。上面的xml文件是使用ImportResource在此处加载的。
输出结果如下:
sync
通过此步骤,您已经完成了服务发布和参考。
在非Spng环境中使用API
SOFARPC
服务发布
服务发布的过程涉及三个类RegistryConfig,ServerConfig,PviderConfig。
1、注册表配置
1、
RegistryConfig代表注册中心。如上所述,服务注册中心的地址和端口是127.0.0.1:2181,协议是Zookeeper。
i.配置 java ServerConfig Config = new ServerConfig() .setPort(8803) .setPtocol("bolt");ServerConfig表示运行服务的容器。上面声明了使用8803端口和bolt协议的。
1、PviderConfig
PviderConfig代表服务发布。上面声明了服务的接口,实现了运行该服务的,并最终通过该export方法发布了该服务。
服务参考
服务参考涉及两个类,即RegistryConfig和ConsumerConfig。
ConsumerConfig代表服务参考。上面声明了所引用服务接口的接口和服务注册中心,最后通过该refer方法引用该服务,以获取该服务的远程调用的代理。
在SOFABoot中使用XML
XML模式
该办法发布和XML模式的参考服务如下。sofa:代表发布服务,并sofa:reference代表引用服务。sofa:binding指示用于服务发布或参考的协议。
服务也可以通过多种协议发布,如下所示:
服务参考
服务还可以通过其他协议引用:
在SOFABoot中使用注释
使用注释进行服务发布/参考
除了常规的xml模式外,还支持在SOFABoot环境中发布和引用带有注释的服务。类似XML,我们提供 @SofaService和@SofaReference以及@SofaServiceBinding和@SofaReferenceBinding注释为多协议。
服务发布
要发布RPC服务,只需要@SofaService在Bean上添加注释即可指定接口和协议类型。
服务参考
对于需要引用远程服务的bean,只需在属或方法上添加Reference批注。这支持bolt,dubbo,rest协议。
在SOFABoot中使用动态API
使用API
SOFABoot提供了一组用于RPC服务发布和参考的编程API。直接在代码中发布和引用RPC服务很方便。与Spng的ApplicationContextAware相似,要使用编程API,首先需要实现ClientFactoryAware接口以获取编程组件API:
以DirectService为例,了解如何使用clientFactory通过编程API发布RPC服务:
在上面的代码中:
1、首先,ServiceClient通过获得对象clientFactory。
2、,构造ServiceParam包含发布服务所需的参数的对象,并使用该setInstance方法将要发布的对象设置为RPC服务,setInteceType以设置服务的接口。
3、最后,调用的服务方法ServiceClient来发布RPC服务。
通过编程API引用RPC服务的代码类似:
同样,引用一个RPC服务,代码只需要得到ReferenceClient来自ClientFactory构造一个ReferenceParam类似发布服务,下一组了服务接口,最后调用ReferenceClient的参考方法。
近期热门