各位老板,Seata1.0.0时还存在这块代码,1.0.0之后已无此块内容,是因为什么原因后面把这块代码干掉?
楼主你好,据我所知Seata 1.0.0之后删除了某些代码块的原因,是为了对代码进行了优化和重构,删除了不必要或冗余的代码块,以提高代码质量和可维护性。
还有就是Seata在不同版本中可能会进行功能调整和改进,以及一些Bug修复。
可能开发者发现在所有情况下使用 PooledByteBufAllocator 并不总是带来性能上的提升,或者可能在某些场景下引入了不必要的复杂性。
功能改进:Seata在1.0.0之后的版本中可能对原有的功能进行了改进或优化,导致原有的代码不再适用或不再需要。
兼容性问题:如果原有的代码与新版本的Seata或其他依赖库存在兼容性问题,为了避免问题,开发团队可能会选择将其删除或替换。
错误或问题修复:如果原有的代码存在错误或问题,开发团队在修复这些问题后可能会选择将其删除或替换。
Seata 1.0.0 之后已经不再需要此块代码。可能是由于在 Seata 1.0.0 之前,Netty 中的 PooledByteBufAllocator 是单例模式,即一个实例对象只有一个引用。但是,在 Seata 1.0.0 之后,由于对于事务中间件来说,一个服务只能在一个上下文中处理一个事务,因此 Seata 对象不应该使用单例模式。在 Seata 1.0.0 中,Netty 的 ServerBootstrap 实例对象使用了单例模式,但是在服务启动时,Seata 并不需要此单例实例。因此,Seata 在其启动类中去掉了此块代码。
在 Seata 1.0.0 版本中,存在一段代码用于配置 Netty Server 的 ByteBuf 分配器。这段代码的目的是根据 Netty Server 配置文件中的设置,决定是否使用池化 ByteBuf 分配器。但是在 Seata 1.0.0 之后的版本中,这段代码已经被移除。
这是因为,在 Seata 1.0.0 之后的版本中,默认情况下,Netty Server 已经使用了池化 ByteBuf 分配器。因此,这段代码已经被认为是多余的,所以被移除。如果你在项目中需要使用非池化 ByteBuf 分配器,可以在 Netty Server 配置文件中设置 netty.server.pooled.bytebuf.allocator.enabled 参数为 false。
另外,对于 this.serverBootstrap.child0ption(Channel0ption.ALLOCATOR, NettyServerConfig.DIRECT BYTE BUF-ALLOCATOR) 这行代码,需要注意的是,ChannelOption.ALLOCATOR 是一个不存在的选项,正确的选项名称应该是 ChannelOption.ALLOCATOR。同时,NettyServerConfig.DIRECT BYTE BUF-ALLOCATOR 应该是一个实现了 ByteBufAllocator 接口的类,而不是一个字符串。如果你需要使用非池化 ByteBuf 分配器,可以创建一个 DirectByteBufAllocator 实例并将其设置为 ChannelOption.ALLOCATOR。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。