Skip to content

v1.4.0 release

Compare
Choose a tag to compare
@xmtsui xmtsui released this 10 Apr 08:59
· 126 commits to master since this release

本版本为非向下兼容

  1. 从1.4.0开始往中央仓库发布。
  2. 历史版本,只在内部维护,中央仓库不再发布

v1.4.0的pom依赖

<!-- 日志门面使用slf4j,日志实现可以选择log4j、log4j2、logback,可参考:https://github.com/alipay/sofa-bolt/wiki/log_implementation_jar -->
 <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.21</version>
</dependency>
<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.13.Final</version>
</dependency>
<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>bolt</artifactId>
    <version>1.4.0</version>
</dependency>
<dependency>
    <groupId>com.alipay.sofa.common</groupId>
    <artifactId>sofa-common-tools</artifactId>
    <version>1.0.12</version>
</dependency>
<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>hessian</artifactId>
    <version>3.3.0</version>
</dependency>

变更内容

1. pom坐标

// 内部1.0.0~1.3.1版本使用,release note到内部gitlab查看
<dependency>
    <groupId>com.alipay.remoting</groupId>
    <artifactId>bolt</artifactId>
    <version>${version}</version>
</dependency>

改为

//外部1.4.0开始使用,release note 在github查看
<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>bolt</artifactId>
    <version>${version}</version>
</dependency>

2. 内部改动

  1. 【优化】把心跳Processor的逻辑,单独抽了一个RpcHeartBeatProcessor,同时处理器的注册逻辑,明确注册this.processorManager.registerProcessor(CommonCommandCode.HEARTBEAT,new RpcHeartBeatProcessor());

3. 自定义协议使用方需要关注

3.1 bolt 通用core层(bolt-msg,bolt-tr-adapter这样的自定义协议使用者需要关注)

  1. 【重构】新增ProtocolCode类,包装一个byte[]数组,来标识协议号。协议号我们建议用单个byte,但如果有业务想用多byte也是可以的。同时新增ProtocolManager,以及RpcProtocolManager。ProtocolManager的初始化放在RpcRemoting里的静态区域。
    • 注意,如果期望使用bolt来自定义协议,同时协议的magic code为多字节的场景,可以复用我们的ProtocolCodeBasedDecoder,以及ProtocolCodeBasedEecoder
  2. 【缺陷】解决ConnectionManager#remove方法,没有判断该Connection是否有在其他Group存在,而直接close掉的bug。bolt-msg注意这个点。
  3. 【优化】将SwitchStatus重命名为GlobalStatus,其他不变。注意此改动会引起使用了该类的业务编译失败,修改命名即可。开关状态与心跳开关、crc开关等逻辑相关,必须修改。
  4. 【优化】BaseRemoting增加一个CommandFactory实例对象,其中CommandFactory为新增类,统一收口command的创建,包括请求与响应。
  5. 【重构】抽象AbstractBatchDecoder,修改licence头为netty自己的,同时注释里注明了改动点和用法。同时提供了ProtocolCodeBasedDecoder.java与ProtocolCodeBasedEncoder.java,方便开发协议的使用者复用。比如bolt-msg可以复用。
  6. 【重构】RemotingCommand新增加几个接口定义,注意继承了RemotingCommand的业务需要关注。

3.2 bolt rpc协议层(rpc使用者需要关注)

  1. 【优化】之前UserProcessor控制超时failfast的开关handleTimeoutInIOThread的叫法有问题,其实不是在io线程处理的,因此重命名为timeoutDiscard。此改动会引起编译失败,必须修改。
  2. 【重构】统一codec与serializer的叫法。之前代码里不管是api还是注册,二者有混用的情况。现在明确概念:codec用于协议编解码,serializer用于序列化与反序列化

4. 复用rpc协议使用方需要关注

  1. 【pom】删除了fastjson的依赖,如果依赖fastjson,需要自定义同时引入依赖。

5. 其他

  1. 【优化】修改和完善注释,将中文改为英文。