有点后台VK

西伯利亚HighLoad ++前夕我们与我们的一位发言人Yuri Nasretdinov进行了交谈,询问他在VKontakte上是否工作得很好,同时打开了社交网络内部厨房的保密面纱。



在会议的框架内,Yuri将讨论社交网络如何将数据从数以万计的服务器插入ClickHouse的过程,我们在本次对话中刚刚谈到了这一点。

-请告诉我们您的工作。

目前,我在VK上工作。 是的,没那么久-从今年开始。 我从事视频基础设施和站点基础设施。 该站点主要是用PHP编写的,我使用PHP和Go开发了服务和实用程序。

-是什么促使您去VK上班的?

我受邀在VK工作。 我想-为什么不呢? VKontakte是俄罗斯负载最大的站点,也是整个Internet上最大的站点之一。 我一直很感兴趣从事这样一个大型项目-参与站点和移动应用程序的开发。 也许甚至影响他们的发展,以某种方式改善。 这可能是最刺激的因素-每个人都知道和使用的VKontakte。 开发这样的产品并使其变得更好是非常令人愉快的。

-在此之前,您是否需要处理类似规模的事情?

是的,我在Badoo工作了大约五年,担任类似职位-基础设施开发。 但是,VK中的负载要大一个数量级。

-切换到VK时是否遇到任何问题?

VKontakte办公室位于圣彼得堡。 在此之前,我住在郊区,所以我不得不搬家。 此举本身很容易-该公司提供了帮助。 但是在圣彼得堡,冬天很冷。 这可能是最难面对的事情。

-没有感觉生活在莫斯科环路以内的地方吗?

起初,对我来说确实如此,尽管事实上我以前去过除莫斯科以外的俄罗斯其他城市。 但实际上,我更喜欢圣彼得堡,甚至超过莫斯科。 他比较镇定-人数更少,他们不着急,这很好。

-从工作中使用的技术的角度来看-对您来说根本上是什么新东西?

VKontakte分别很大,在这里确实有一些我以前从未遇到过的细微差别。 例如,在Badoo中,实际上没有非常受欢迎的个人资料可供很大一部分人访问。 VKontakte拥有它,因为有许多有趣的工具可让您快速扩展非常受欢迎的帐户。

此外,由于历史原因,VKontakte有所不同,几乎所有内容都在这里。 与主要使用MySQL和Memcache(及其服务)的Badoo不同,VKontakte使用自己的数据库,甚至是自己的Memcache版本。 VK开发人员有能力创建更高效​​的服务(在同一个MySQL的背景下),并且可以在如此大规模的环境下正常工作。 大多数没有文件的完成工具都不能在包含成千上万台服务器(例如VK)的基础架构中使用,这会造成很大的困难。

-很难快速渗透到这种“内部”工具中吗?

我在基础设施部门工作,这里没有很多非标准的东西。 基本上,这是一个比我以前使用过的堆栈还要标准的堆栈。 但是,例如,如果我在一个处理后端功能的部门工作,那么,当然,将会有关于基本如何构建Highload系统的有用知识,而没有具体细节。 在这种情况下,新员工的页面,内部机制的描述会有所帮助。

原则上,Pavel Durov将VK基础结构的有形部分与文档一起发布在开源中。 任何人都可以阅读它,阅读它是如何工作的。 但是,当然,从内部使用的角度来看,这要容易得多。 您来开始做任务,逐步研究解决问题所需的内容。 查看它是如何完成的,并执行相同的操作。 这就足够了。 毕竟,即使您精通VK基础结构上的所有文档,在开始使用它之前,您很可能都不了解其所有细节。

我注意到以上所有内容都适用于我的部门(其他情况可能有所不同)。

-您在VK内部有什么专长吗? 您设法参加了哪些任务?

本身没有专门的知识。 我正在执行当前需要的操作。
我在一个部门中工作,该部门的活动影响着社交网络基础结构的不同部分,这是一个巨大的项目(要完全理解VK设备需要花费很多时间)。

例如,我参与了对PHP7的部分升级。 原则上,这适用于整个站点,但同时不适用于任何特定的细节。

另一个示例是收集日志的问题,为此,我们使用了ClickHouse。 我将在HighLoad ++中讨论这一点。



-让我们给一个小的破坏者-这个问题的特点是什么?

捕获量是两个因素的结合:一方面,我们写了很多日志,另一方面,我们需要快速浏览它们。

实际上,现有系统无法存储大量数据,因此只能迅速释放最新信息。 要了解故事,您必须手动执行非常繁琐的查询。

-读者可能对为什么将ClickHouse列用于解决方案感兴趣?

专栏-由于工作的细节。 通常,在日志中搜索信息时,我们需要按服务器或用户进行过滤。 从磁盘读取时,列数据库使您可以加快读取速度(相对于行的背景)很多倍,这是通过仅读取必要的列和更有效的按位压缩来实现的。 另外,ClickHouse很好地并行化了整个内核的查询。 即 与传统数据库不同,它甚至可以使用处理器和磁盘的几乎所有资源,甚至在整个集群上执行单个查询。 这样的数据库,尤其是免费数据库,不是很多,如果有的话。 ClickHouse在存储日志方面非常出色。

我还注意到,在我到达之前,VK管理员将ClickHouse用于一项非常专业的任务-作为Grafana的后端工具。 这是服务器的数据收集和图形系统。 没错,只有少数带有ClickHouse的服务器被部署,也就是说,实际上程序员不可用。

在决定使用ClickHouse存储日志之后,我帮助创建了适当的基础结构,以便每个人都可以方便和理解。

-VK是否大量使用了第三方解决方案(除了上述解决方案之外)?

当然用了。 例如,Linux,所有这些都在上面旋转。 不要低估操作系统为我们所做的工作份额。

奇怪的是,使用了PHP。 我们有一个称为KittenPHP的专有引擎,该引擎将PHP转换为C ++,但是对于许多任务(包括生产),也使用常规PHP。

由Nginx使用。 直到现在,MySQL仍在某些地方使用,但逐渐地我们拒绝了它-我们使用一个自编写的数据库。

-如何建立开发流程?

我看不到VK的流程与行业所接受的流程之间存在较大差异。 我们有一个Bug跟踪器,负责处理不同功能的部门负责项目的一部分; 有冲刺负责组件等。

-是否可以显示结果,而不是显示工作部门的发展方向?

据我所知,在我现在工作的部门之前只有1-2人。
不久前,我们开始以现在正在完成的形式(可能看起来像DevOps)从事基础设施建设。 因此,谈论计划还为时过早-我们正在解决现有的问题,到目前为止,我们有足够的工作要做。 然后我们会看到。



在6月25日至26日于西伯利亚HighLoad ++的演讲中 ,Yuri会使用ClickHouse和其他详细信息,向您介绍有关VK内部的更多信息。 您当然也会对以下报告感兴趣:

Source: https://habr.com/ru/post/zh-CN414881/


All Articles