Cloud Team:上能修 DB,下能改容器的云原生信仰者 | PingCAP 招聘季

Stella981
• 阅读 587

TiDB 从诞生之时就带着云原生的标签,并且底层存储引擎 TiKV 也在 2019 年成为了 CNCF (云原生计算基金会)的孵化项目。我们很早就认识到,云提供的基础设施可编程、按量付费等区别于传统数据中心的核心特质,正是释放 TiDB 弹性伸缩潜力的最佳载体。

而在另一方面,由于有状态应用天生的复杂性和数据资产不可估量的重要性,云原生革命的上半场仍聚焦在运维流程更易标准化、故障也相对可容忍的无状态应用上。随着 Kubernetes 与 Docker Swarm 的容器编排之战尘埃落定,无状态应用编排问题在几年内迅速得到解决后,如何在云上构建坚实可靠的数据层作为新的问题浮出了水面。相信很多有识之士早已看到了这些问题,准备“寻机而动”。不过,有那么一群人已经脚踏实地付诸行动了。

是的,有那么一群人,在他们眼中,TiDB 与云是天生互相吸引、互相需要的,用“佳偶天成”来形容二者的关系并不为过。这群人就是 PingCAP 的 Cloud 团队,一群义无反顾的云原生信仰者、一群“上能修 DB、下能改容器”的技术 Nerds、一群 TiDB 和云的忠实 “CP 粉”。我们就是这群人,而这篇文章就是希望能打动屏幕面前的你,加入我们 —— “不负韶华,共谱云与 TiDB 的和谐乐章”。好了,务虚到此结束,下面我们来点实在的。

TiDB Operator

TiDB Operator 是 Cloud 团队最早的项目,Operator 是一种为 Kubernetes 扩展编排知识的编程范式。而 TiDB Operator,顾名思义,就是将 TiDB 的运维知识写成代码,注入到 Kubernetes 中。而这些特定的运维知识,正是 Kubernetes 上的有状态应用所缺失的东西。2016 年 CoreOS 率先提出的 Operator 模式,我们也同期开始了 TiDB Operator 的开发。大家或许知道,Kubernetes 的成熟与稳定是近些年的事儿。单就计算,服务于有状态应用编排的 StatefulSet 直到 1.5 才出现。而对于要求高 IO 低延迟的数据库应用,其强需求的本地持久化存储(Local PV)在 1.10 (2018 年)才进入 Beta 阶段,直到 1.14 方才正式 GA。TiDB Operator 经历了一无所有的蛮荒时期,我们编写控制器去逐个编排 Pod 组成 TiDB 集群,通过 HostPath 实现了类似 Local PV 的本地存储管理体系。虽然这个“平地起高楼”的第一版 Operator 最后并未面世,但却为大家现在看到的 Operator 积累了相当多的经验。当我们看到 Kubernetes 对 StatefulSet 控制器的不断增强以及 Local PV 的推出时,那种“似曾相识”的熟悉感让我们放心地选择了 Upstream 的 in-tree 解决方案来更好地拥抱社区。在去年 7 月,我们 正式发布 TiDB Operator v1.0 GA ,完成了 TiDB 与云融合的第一个里程碑。

而在 GA 后的几个月,海内外多家用户进行了 TiDB Operator 的 PoC 并成功推向核心生产环境,TiDB Operator 也没有辜负期待,稳定支撑了包括公有云和 on-premise、混部和独占式部署各类集群形态的自动化管理运维。而今年,我们则着眼于社区与 DBaaS,期待让 TiDB 在更多的用户、更多的云、更多的生态中落地开花。

此外,作为连接 TiDB 和 Kubernetes 两大顶级开源项目的 TiDB Operator,本身也是一个开源项目,我们希望打造一个活跃的开源社区,带领志同道合的社区萌新们一路打怪升级,从跃跃欲试的 Contributor,到执掌一个模块的 Commiter 甚至 Maintainer。作为 Cloud 团队成员,你将有机会亲手构建并领导一个充满生命力的社区,并和来自不同背景、不同国家的贡献者一起为 TiDB Operator 添加更多酷炫的特性。

DBaaS 服务

为了进一步降低用户使用 TiDB 的门槛与运维成本,我们构建了基于公有云的 DBaaS (Database as a Service)服务,提供全托管的数据库服务。我们希望用户不用关注分布式数据库自身的运维,将精力聚焦到自己的业务逻辑上。从开源的 TiDB Operator 到生产级的 DBaaS 服务,我们将和你一起解决这些有意思的事情:

多层级、多维度编排

对于 TiDB 这样的复杂分布式数据库,在调度 Pod 时我们既要考虑数据库内部数据分片(一段连续的数据,表现为一个Raft 复制组) 的调度,也要考虑外部进程沙箱的调度。在保证最大程度容灾的同时尽可能提高数据库整体性能。

对于云服务,性价比是可称得上是“决定生死”的关键因素。成本优化同样是一个复杂的命题。我们是否可以为 TiDB 引入冷热数据分离特性,将冷数据调度到低速的机械盘、网络盘甚至 S3 这样的对象存储上,以降低使用成本呢?假如可以,这又势必会为编排和调度又引入新的挑战:当我们弹性扩容时,我们是弹出几个使用 SSD 的 replica,还是几个使用 HDD 的 replica,抑或是混合?当热点过去,数据库的查询渐小,但存储空间仍然吃紧时,我们又该怎样将部分节点替换成性能稍差但存储空间庞大的冷存储节点呢?

K8s 自身的调度编排能力,在面对上述复杂的应用场景时显得捉襟见肘,当你拥有全集群的上帝视角时,你会如何对整个集群进行自动化合理的编排调度呢?在这里你不仅要成为 TiDB 和 K8s 领域专家,还要能够上能改 TiDB 代码,下能调 K8s 代码,让这两大项目能更好地结合在一起。

跨云部署

TiDB 作为一款分布式数据库,在云时代我们希望它能够跨地域(region)、跨云部署,用户可以自由选择自己喜欢的云平台,使用兼容 MySQL 协议的无限水平扩展的分布式数据库,只要用户愿意甚至可以选择跨云部署实现跨云容灾。

最后

假如你:

  • 优秀的发现和解决问题能力,良好的沟通能力和团队合作精神;

  • 有三年以上相关领域开发经验,扎实的编程能力,熟悉 C/C++/Rust/Go/Python 中至少一种;

  • 了解各种常见网络协议原理和虚拟化技术,对分布式系统有一定的了解;

  • 熟悉 Docker 和 Kubernetes 原理,践行 Infrastructure as Code,了解常用的 IaC 工具(Terraform, Pulumi 等)。

那么,欢迎上船,cloud guys here!

加入我们吧!

我们认为优秀的工程师或多或少有以下共同特质:

· A Quick Learner
· A- n Earnest Curiosity
· Faith in Open Source
· Self-driven
· Get Things Done

如果你符合以上特质,欢迎进入招聘页面查看目前开放的工作机会。

简历投递通道:hire@pingcap.com

实习生:公司的各项福利和学习资源对实习生全面开放,更重要的是实习生还未毕业就有机会接触工业级项目,而且实习期间表现优异者将有机会获得校招绿色通道特权。针对实习时间并不充裕的小伙伴,你可以先通过 Talent Plan 丰富基础知识(https://university.pingcap.com/talent-plan/),也可以通过参与 TiDB 开源社区获得更多实践机会!

伯乐推荐:如果你身边有符合以上要求的小伙伴,也可以找我们聊一聊,推荐成功就有机会获得伯乐推荐奖励。伯乐推荐邮件格式:[伯乐推荐] 候选人姓名-职位名称-推荐人姓名-推荐人手机号。

延展阅读

是的,我们在招人!PingCAP 2020 招聘季正式开启

TiDB Architecture Team:挑战数据库的本质难题

揭秘 PingCAP 年轻前沿的团队:用户生态

TiDB SQL Infra Team:一起打造从计算层到存储层的完美桥梁

写给 TiDB 原厂 DBA 的一封信:连接技术和价值的“最后一米”

TiDB SQL Engine Team:纯手工打磨前沿的优化器和执行引擎

E.T. 团队:TiDB 开源生态宇宙构造者

我眼中的 PingCAP 工程师文化

程序媛眼中的 PingCAP:无法抗拒的五大吸引力

Cloud Team:上能修 DB,下能改容器的云原生信仰者 | PingCAP 招聘季

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Peter20 Peter20
3年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
2年前
2019 年 CNCF 中国云原生调查报告
!头图.jpg(https://ucc.alicdn.com/pic/developerecology/6db0c465111b4d9a96eb1ffe85c00e7a.jpg)中国72%的受访者生产中使用Kubernetes在CNCF,为更好地了解开源和云原生技术的使用,我们定期调查社区。这是第三次中国云原生调查,以中文进行
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这