第二届云原生编程挑战赛正式启动,来看看这次是哪三道题目
你好呀,我是 Kirito。 真是盼星星盼月亮,终于盼到了。第二届云原生编程挑战赛终于开始了!
回顾自己的参加过的性能挑战赛,几乎每一次比赛都是一次代码能力的提升,在比赛中学习了 Netty、Dubbo、MQ、CPU/IO 优化技巧等技能,也是在这个过程中,认识了很多的大神朋友,并且成为了后续比赛的队友,所以真心安利大家来体验一下这类的程序设计竞赛。
这次比赛一共有三个赛道,如果足够肝,三道题目都可以一起搞,我个人比较感兴趣的是第一道和第二道题目,分别对应了 RocketMQ 的存储设计能力和 Dubbo 的分布式治理能力,都不失为一次学习这两个框架的好机会。
由于具体的评测还没有开放,所以我目前也只能凭着个人的理解稍加介绍。
1
赛题介绍
今年的云原生编程挑战赛围绕“挑战 Serverless 创新实践”展开,将继续深度探索 RocketMQ、Dubbo3、Serverless 三大热门技术领域,为热爱技术的年轻人提供一个挑战世界级技术问题的舞台。希望选手们能用手中的技术,为全社会创造更大的价值。
赛道一:针对冷热读写场景的 RocketMQ 存储系统设计
Apache RocketMQ 作为的一款分布式的消息中间件,历年双十一承载了万亿级的消息流转,为业务方提供高性能低延迟的稳定可靠的消息服务。其中,实时读取写入数据和读取历史数据都是业务常见的存储访问场景,而且会在同一时刻同时出现,因此针对这个混合读写场景进行优化,可以极大的提升存储系统的稳定性。同时英特尔® 傲腾™ 持久内存作为一款与众不同的独立存储设备,可以缩小传统内存与存储之间的差距,有望给 RocketMQ 的性能再次飞跃提供一个支点。
赛题描述:实现一个单机存储引擎,提供以下接口来模拟消息的存储场景:
写接口 long append(String topic, int queueId, ByteBuffer data)
,返回 offset。读接口 Map<Integer, ByteBuffer> getRange(String topic, int queueId, long offset, int fetchNum)
,fetchNum 最大不超过 100,返回值的 key 为 offset,value 为对应的写入 data。
评测环境中提供 128G 的傲腾持久内存,鼓励选手用其提高性能。
语言限制:Java。
Kirito 点评:这次存储的题目还是挺有意思的,最近阿里云和英特尔合作的比赛基本都是在用傲腾持久化内存,例如我最近参加过的《第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道》,也是重点考察了选手对 pmem 的运用,注意 pmem 的原理和传统的 ssd 还是有差别的,至于具体差在哪儿,可以参加比赛来研究看看。另外,赛题中提到冷热数据和混合读写,使得简单的题面背后,蕴含了非常大的竞赛优化空间。
查看赛题详情:https://tianchi.aliyun.com/s/8bf1fe4ae2aea736e692c31c6952042d
赛道二:实现一个柔性集群调度机制
Apache Dubbo 作为一款可拓展性极高的 RPC 框架,支持高度自定义化的集群调度机制,本次比赛要求参赛者基于 Dubbo 提供的集群调度自定义化能力,辅以调用过滤链机制、自定义负载均衡机制等功能,设计一种柔性调度机制。
赛题描述:选手实现一个负载均衡器,消费者根据负载均衡器选择 Provider 处理请求,返回结果,期间 Provider 的处理能力会发生变化,同时伴随超时、离线等场景。
public class UserLoadBalance implements LoadBalance {
@Override
public <T> Invoker<T> select(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {
return invokers.get(ThreadLocalRandom.current().nextInt(invokers.size()));
}
}
最终按照成功请求数和最大 TPS 进行排名。
Kirito 点评:这次 Dubbo 的题目乍一看和第五届中间件性能挑战赛初赛的题目《自适应负载均衡的设计实现》https://tianchi.aliyun.com/competition/entrance/231714/information 很相似,这一点有朋友也跟我反馈过,我也特地跟出题人咨询了一下,得到的结论是之前比赛的思路在这次比赛几乎是不可用的,由于这次引入了服务端超时和宕机等机制,不能简单地依靠提升请求量来达到高性能的效果,从赛题 demo 工程的命名上“https://code.aliyun.com/cloudnative2021/pullbased-cluster” 可以猜测出来,主办方是希望选手使用拉模式评估服务端处理性能,动态决定调用方,从而提升请求成功率和 TPS。
查看赛题详情:https://tianchi.aliyun.com/s/5c8191a01e3dbd7cab5b9e5b6aacf086
赛道三:Less is more - Serverless创新应用赛
Serverless 已不再局限应用于耦合性低、边缘应用或离线任务上,越来越多的企业将 Serverless 应用于人工智能、音视频处理、网站应用、电商系统等生产核心链路。本赛道设置 4 个可选题目,包括充分发挥选手创意的自由赛题,以及在特定场景下,如高性价比音视频处理系统、可视化工作流定义应用、阿里云健康仪表盘等,如何通过 Serverless 解决实际问题。
Kirito 点评:这个题目的分类不属于程序设计挑战赛,而是创新应用赛,简而言之,就是不同于之前提交一个工程,得到一个比分,而是采取多维度的评分机制,提交一个基于阿里云的 Serverless 应用产品,一时间我只能想到用“抽象”二字来形容这个赛题。如果你手上正好有 Serverless 的创意,或许这道比赛可以给你的灵感一次落地的机会,让更多人看到你的想法。
查看赛题详情:https://tianchi.aliyun.com/s/1e38a7686cffbea345d3485a41792f83
2
603000奖金池
必不可少的,当然是这次比赛的奖励了,有金主的赞助真是不一样,奖金池直接飙升到 60w+!
冠军:1支队伍/赛道,奖金10万,颁发获奖证书
亚军:1支队伍/赛道,奖金5万,颁发获奖证书
季军:1支队伍/赛道,奖金3万,颁发获奖证书
优胜奖:7支队伍,每支队伍奖金3000元,颁发获奖证书
鼓励奖:赛道1&赛道2:初赛B榜最终排名每赛道入围 TOP50 所在队伍的选手将获得大赛限量版公仔一件。
参与奖:赛道1&赛道2:初赛B榜最终排名每赛道入围 TOP100 所在队伍的选手将获得大赛限量版纪念T恤一件。赛道3:通过预选赛评选,晋级半决赛的选手将获得大赛限量版纪念T恤一件。
3
快速报名
PC 端:直接通过上方赛题的链接进行报名
移动端:扫码上方海报的二维码进行报名
期间有赛题疑惑也欢迎跟我(微信:xiayimiaoshenghua)讨论哦,毕竟我也准备参加内部赛了,嘿嘿,到时候不定时组织小群交流赛题,大家赛起来~
ps:偷偷透露下,很多同学都是通过参加性能挑战赛进入阿里的哦。