当前位置: 首页 > 软件库 > 大数据 > 数据处理 >

dynamicgo

高性能动态化 Go 数据处理
授权协议 Apache-2.0
开发语言 Google Go
所属分类 大数据、 数据处理
软件类型 开源软件
地区 国产
投 递 者 赵俊侠
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

dynamicgo 是字节自研的一套能动态处理 RPC 数据(不需要代码生成)同时保证高性能的 Go 基础库,旨在减少序列化/反序列化过程

dynamicgo 的核心设计思想是:基于 原始字节流 和 动态类型描述 原地(in-place) 进行数据处理与转换

Usage

thrift

Thrift IDL 解析器和消息运算符。它可以在运行时解析 thrift IDL 并以通用方式处理 thrift 数据。DOC

thrift/generic

使用或不使用运行时类型描述符来搜索、修改、反序列化、序列化 thrift 值的反射 API。DOC

thrift/base

消息传输的元数据,包括caller、address、log-id等,主要用于conv(协议转换)模块。

thrift/annotation

第三方注释的内置实现,参阅thrift_idl_annotation_standards。它们主要用于conv(协议转换)模块。

http

Http 请求/响应包装器接口。它们主要用于在http<>thrift转换时传递 http 值。 DOC

conv

协议转换器。基于thrift,jsonprotobuf(WIP) 模块的 reflecting 能力,它可以将消息从一种协议转换为另一种协议。

conv/j2t

将 JSON 值或 JSON-body HTTP 请求转换为 thrift 消息。DOC

conv/t2j

将 thrift 消息转换为 JSON 值或 JSON-body HTTP 响应。DOC

应用与展望

当前,dynamicgo 已经应用到许多重要业务场景中,包括:

  1. 抖音 隐私合规 中间件(thrift 反射);
  2. 抖音某 BFF 服务下游数据按需下发(thrift 裁剪);
  3. 字节跳动某 API 网关协议转换(JSON<>thrift 协议转换)。

并且逐步上线并取得收益。目前 dynamic 还在迭代中,接下来的工作包括:

  1. 集成到 Kitex 泛化调用模块中,为更多用户提供高性能的 thrift 泛化调用模块;
  2. Thrift DOM 接入 DSL(GraphQL)组件,进一步提升 BFF 动态网关性能;
  3. 支持 Protobuf 协议。
 相关资料
  • Spark 是一个并行数据处理框架,这意味着任务应该在离数据尽可能近的地方执行(既 最少的数据传输)。 检查本地性 检查任务是否在本地运行的最好方式是在 Spark UI 上查看 stage 信息,注意下面截图中的 "Locality Level" 列显示任务运行在哪个地方。 调整本地性配置 你可以调整 Spark 在每个数据本地性阶段(data local --> process local -

  • 问题内容: 我需要一些想法来实现Java的(真正)高性能内存数据库/存储机制。在存储20,000+个Java对象的范围内,每5秒钟左右更新一次。 我愿意接受的一些选择: 纯JDBC /数据库组合 JDO JPA / ORM /数据库组合 对象数据库 其他存储机制 我最好的选择是什么?你有什么经验? 编辑:我还需要能够查询这些对象 问题答案: 您可以尝试使用Prevayler之类的工具(基本上是一个

  • 我正在使用ignite2.6,其中有数据流节点,从kafka消耗数据并放入Ignite缓存。服务器平均负载较高,吞吐量降低。 我已经尝试为缓存中定义的索引内联设置索引大小,这样可以提供良好的性能,但也增加了服务器内存利用率和较高的平均负载。请说明在这种情况下增加datastreamer线程池大小会产生什么影响。

  • 本文向大家介绍javascript日期处理函数,性能优化批处理,包括了javascript日期处理函数,性能优化批处理的使用技巧和注意事项,需要的朋友参考一下 其实网上写javascript日期格式化的博文很多,大体都看了看,都还不错。唯一遗憾的是只顾着实现了功能,没对函数进行性能优化。 俗话说:不要重复造轮子。google上找了一个比较不错的日期格式化函数,来开始我的优化之旅吧! google上

  • 问题内容: 我在公司中多次设计数据库。为了提高数据库的性能,我只寻找标准化和索引。 如果要求您提高数据库的性能,该数据库包含大约250个表以及一些具有数百万个记录的表,那么您将寻找什么不同的东西? 提前致谢。 问题答案: 优化逻辑设计 逻辑级别是关于查询和表本身的结构。首先尝试最大程度地发挥这一作用。目标是在逻辑级别上访问尽可能少的数据。 拥有最高效的SQL查询 设计支持应用程序需求的逻辑架构(例

  • 问题内容: 我尝试用go编写一个小型应用程序,该应用程序从标准输入中获取“ x”个整数,然后计算平均值并将其返回。到目前为止,我还没有: 尝试编译此错误时,出现以下错误消息: 无效的数组绑定元素 怎么了 问题答案: 您应该使用切片而不是数组: 请参阅“ 深入了解用法和内部原理 ”。 另外,您可能要考虑为循环使用范围: