《你问我答》第三期 |关于Angel、中间件、TBase以及JDK升级的问题

2020-06-16 16:10:12 浏览数 (1)

各位小伙伴们大家好,我们又见面啦~

不知不觉

这已经是《你问我答》栏目的第三期了

前两周,我们的专家天团解答了大家许多疑问

介绍了腾讯大数据多年来在开源方面的努力成果

以及全栈机器学习平台-Angel

大数据SQL引擎-天穹SuperSQL

免费、可立即投入生产的 OpenJDK 发行版-Tencent Kona

企业级分布式 HTAP 数据库管理系统-Tbase

一站式实时计算平台-Oceanus

万亿级分布式消息中间件系统-TubeMQ

……

一系列的腾讯大数据团队自研产品的相关信息

如果能对大家了解这些项目有所帮助

我们不胜荣幸

未来我们的专家团队还会持续在线

大家有与这些项目相关的,

或其他大数据、AI方面的技术问题

就继续向老师们提问吧!

以下是本期的精选回答

上榜的同学不要忘了后台私信小编领取奖品哦!

01

@Null。:

可以不可以透露一下Angel现阶段的研发计划是什么?

Bruce

腾讯大数据智能学习团队负责人,负责腾讯Angel、联邦学习PowerIFL、图数据库等研发工作。

回答

Angel在性能优化,功能完善方面在持续发展,有以下几方面的计划:

  1. 进一步推动图embedding和图神经网络在更多业务场景中落地。基于图计算的建模方法已经越来越多地在推荐、广告、社交、金融等场景中得到应用,并产生非常显著的效果。Angel在图计算领域具备完善的算法模型包括图刻画、图表示和图深度学习,基于PS的分布式训练架构具备良好的扩展性和稳定性。Angel计划进一步贴合业务场景,精细化解决图模型在实际应用中的问题,例如稠密图数据中的GNN类算法面临的over smooth现象,更有效的提升图模型的准确性。
  2. 安全建模场景支持,解决建模时数据无法直接使用的孤岛问题,实现在保护数据隐私的前提下,联合多个数据源进行建模的效果。在安全加密、安全建模协议、建模平台的构建等方面具备创新性技术突破。并在金融、广告、医疗、交通等多个业务场景中构建完整的解决方案,实现安全的数据价值体现。
  3. 完善Angel全栈机器学习平台,更好支持企业智能数据处理的全流程。重点改进特征工程功能,支持IV、MOE、one-hot、缺失值过滤等特征选取功能,提升Angel Serving在线推理服务的QPS处理能力,增强模型版本管理,模型热升级,用户管控等功能,适应各种实际应用场景的模型管理需求。
  4. 围绕Angel核心框架打造开放协作生态。Angel提供底层模型抽象、分布式训练的基础能力,支持社区开发者实现自定义的算法模型、训练流程,实现多种数据源连接器,封装完整的垂直领域如CV、NLP等相关的模型,以期进一步丰富Angel上下游的生态,为用户提供更完整的人工智能解决方案。
  5. 软硬件协同优化,利用更多硬件加速包括训练和预测等计算过程,例如使用SIMD指令优化,利用GPU加速图计算操作等。软件适配FPGA、NPU等新型硬件的操作方式,将计算型的操作转移到硬件完成 ,充分利用硬件计算能力,实现软硬件协同优化

02

@Mark:

能不能请老师讲讲消息中间件技术现在的主要发展趋势

张国成

腾讯大数据TubeMQ项目负责人,Apache TubeMQ项目的PPMC成员。

回答

消息中间件种类太多了,Apache上已经毕业的MQ有4个:ActiveMQ,Kafka,RocketMQ,Pulsar,再包括正在孵化的TubeMQ,以及其他还没有进入Apache的MQ就更多了,网上有人发表过一篇文章《M02.MQ之腾讯开源消息中间件TubeMQ》,他对MQ的发展趋势是这样总结的:“按照从趋势上来看,越来越分布式、趋向对云原生的支持,越来越无状态,broker越来越轻薄”,我不太认同他的观点。

个人一直觉得,技术是为业务服务的,工具的变化更多的应该是映射工具服务的主体的需求正在发生改变。从MQ的定义来看,MQ是用于应用程序内或程序间的一种通信方式,因而它不表示系统满足这个核心功能外还必须具有什么具体的功能集合了才能称为MQ;再从服务场景来看,过去的单机、到分布式、再到多租户支持,是MQ服务的业务主体的场景里需要的通讯能力在改变,但某个场景下的需求是否表示其他场景都是有这同样的需求呢?

所以个人觉得消息中间件的趋势在由以往的凑合着用到现在的高精专转变,由通用型的业务适应工具到完全满足某个领域的场景的基于业务需要研发对应工具的发展,由此带来的,在这个领域,谁能最大的满足这块市场需求,谁能提供突出服务能力做的最好,谁就将是MQ在这个领域里的发展趋势。

其他方面不了解不评论,在大数据这个领域,我认为我们TubeMQ走在各个MQ前列,并且,有关注我们项目的同学还会发现,系统仍在围绕大数据领域需求对TubeMQ的核心能力继续演进着。

TubeMQ的设计比较好的解决了基于磁盘硬件下的系统吞吐问题,结合大数据场景数据流水的量级、运营成本、接入业务的多样性,以及大数据场景下对数据丢失率存在一定的容忍性等特点,和使用传统的大数据MQ组件Kafka的接入系统相比,我们可以更快更高吞吐更稳定,又还更便宜。我们也没有想着要做一款大而全的MQ系统,也没有特意增加一些如上文里提到的其他外部MQ所共有的功能(后续发展某些功能有可能基于需要增加),一切围绕这块领域里的业务需要而展开。

总的来说,个人从了解到的大数据场景下消息中间件技术发展看,TubeMQ的实践技术思路将是这个领域的一种发展趋势,定会被更多外部企业所接纳。

03

@米粉撸油条?:

TBase是如何保证数据的可靠性的?

陈爱声

腾讯大数据TBase团队高级工程师,主要负责TBase项目的实施和运维。

回答

为了保证数据的可靠性,我们做了如下工作:

  1. 部署TBase数据库实例时,每个节点我们都是要求最少2副本,并且两个副件必需配置为数据强同步,主备强同步级别要求数据必需同时写入到主备节点的日志文件才能返回给用户成功标记。
  2. 为了防止单个IDC灾难性故障,Tbase还支持两地三中心部署,并且可以配置多个中心强同步,做到中心级切换时RPO为0。
  3. 除了多副本实时同步数据外,Tbase还支持在线全量备份 增量日志备份,当发生逻辑错误修改,或者多个中心数据完全丢失时,可以使用备份恢复到任意时间点,最大程度的找回数据。

04

@sherry: 

使用TBase跟使用PostgreSQL对比,数据表设计,代码连接操作会有什么不同?有哪些需要注意的?

陈爱声

腾讯大数据TBase团队高级工程师,主要负责TBase项目的实施和运维。

回答

Tbase和PostgreSQL的大部分功能特性是兼容一致的。但在数据表设计和代码连接查询方面,分布式数据库还是有一些规范需要重点遵循的。

数据表设计方面:

  1. 分布键尽可能选择存储值分散字段,这样存储到各分片的数据才不会出现倾斜,访问性能才能线性增长。
  2. Tbase的主键和唯一索引必需包含分布键。
  3. 分布键的字段类型和值是不能修改,分区表的分区字段值也是不支持更新,设计时需要考虑业务逻辑是否适合。
  4. 经常要跨库JOIN的小数据量表可以考虑使用复制表,但如果数据需要经常并发更新就不适合。

代码开发及查询:

  1. 分布式数据库来自网络开销比较大,所以尽可以合并sql执行,如insert into xxx values(),()...插入多条记录。
  2. SELET,UPDATE,DELETE语句中,WHERE条件尽可能的带上分布键字段做为查询条件,实例性能线性扩展。
  3. 如果是分区表,使用时加上分区字段做为过滤条件,能实现查询剪枝,性能更好。
  4. 多表JOIN查询数据时,业务尽可能的设计使用分布键JOIN,这样垂直下推至DN执行,性能更好。

05

@不会爬树的鱼?: 

请问从JDK 8升级到JDK 11需要注意哪些问题?

杨晓峰

腾讯大数据JVM团队负责人,中国计算机协会(CCF)系统软件专委委员,OpenJDK Author & Committer。

回答

兼容性是系统升级中首要注意的问题,建议从两个角度评估,应用自身对于JVM基础机制和语言类库等方面的依赖,以及应用依赖的第三方组件的兼容情况,下面分享一些生产适配的经验。

首先,从JDK自身来看,主要的兼容性影响是三个方面:

1. Java 9中引入的模块化系统,增加了代码的边界,进而提供了更加严格的访问控制。例如,应用可能引用了没有export出来的API,可以通过修改代码依赖,或者调整编译、启动参数,如下图:

2. 应用依赖于修改或者移除的API

3. 类加载和默认GC算法等基础机制的变化,例如:

JDK 8

BootstrapClassLoader  -> 加载 rt.jar, jre/lib/endorsed

ExtClassLoader        -> 加载 jre/lib/ext

AppClassLoader        -> 加载 -cp 命令指定的类

JDK 8 之后

BootstrapClassLoader  -> 加载 lib/modules(模块按需加载)

PlatformClassLoader   -> 加载 lib/modules(代替 ExtClassLoader, 不再继承 URLClassLoader)

AppClassLoader        -> 加载 -cp 命令指定的类(不再继承 URLClassLoader)

第二,对于第三方组件适配,主流开源软件等大多已经支持JDK 11等新版本,大多可以通过升级版本或者backport相关patch等手段支持,比如我们在生产迁移中发现需要更新字节码库。

希望这些生产经验能够对您有所帮助。

恭喜以上5位小伙伴

你们将获得“腾讯视频VIP月卡”一张

请在后台私信小编

小编会将礼物发给你们~

以上就是《你问我答》第三期的全部内容了

欢迎大家就自己关心的技术问题

在文章下方以“#你问我答# 提问内容”的形式留言

专家和小编在这里静候你的提问喔!

0 人点赞