11月12-XNUMX日,将在圣彼得堡召开会议
Hydra 是我们近年来最重要的会议之一。 在此之前进行了非常认真的准备、发言人的选择和报告。 关于上周
我们
动机
如果您正在编程,那么您将以某种方式处理多线程和分布式计算。 相关领域的专家直接与他们合作,但隐含地,分布从各个方面看着我们:在任何多核计算机或分布式服务中,都有一些东西可以并行执行计算。
有许多会议涵盖了应用程序编程的某些方面。 另一方面,我们有特殊的科学学校,以讲座的形式揭示了大量复杂的理论。 例如,与圣彼得堡的九头蛇并行,
想一想:我们生活在一个美好的时代,您可以在这个时代现场见到我们所从事的科学和工程领域的创始人。 物理学家不会遇到牛顿或爱因斯坦——火车已经开走了。 但是,那些创建分布式系统理论基础、发明流行编程语言并首次将所有这些体现在工作原型中的人仍然生活在我们身边。 这些人并没有中途辞掉工作,目前正在世界知名大学和公司从事现实工作,是当今最大的知识和经验来源。
另一方面,与他们见面的机会通常仍然纯粹是理论上的:我们中很少有人能够不断地关注罗彻斯特大学的一些公共事件,然后赶往美国并返回迈克尔斯科特的讲座。 访问 Hydra 的所有成员通常是一笔不小的财富,除了花费的时间深渊(尽管这听起来像是一个有趣的任务)。
另一方面,我们现在有很多顶级工程师正在研究分布式系统的实际问题,他们肯定有话要说。 但问题是——他们 工作他们的时间很宝贵。 是的,如果你是微软、谷歌或 JetBrains 的员工,在内部活动中遇到一位知名演讲者的可能性会大大增加,但总的来说 - 不,它不会每天都发生。
通过这种方式,九头蛇会议完成了一项我们大多数人无法独自完成的重要任务——在一个地方和一个时间,将人们聚集在一起,他们的想法或与他们的交流可以改变你的生活。 我承认并不是每个人都需要分布式系统,一些复杂的基础性东西。 您可以在余生中用 PHP 编写 CRUD 程序,并且完全快乐。 但谁需要它 - 这是你的机会。
自从第一次宣布在哈布雷举行的九头蛇会议以来,已经过去了很长一段时间。 在这段时间里,已经完成了很多工作——现在,我们有了几乎所有报告的清单。 没有呆滞的单线程算法,只有纯粹的分布式硬核! 让我们以一般性的话结束,看看我们现在手头有什么。
主题演讲
主题演讲开始和结束会议的日子。 通常开幕主题演讲的目的是确定会议的总体精神和方向。 闭幕主题演讲划清界线,并解释了我们如何使用在会议期间获得的知识和技能。 开始和结束:记忆最好的东西,一般来说,具有更高的价值。
悬崖点击- H2O分布式K/V算法
Cliff 是 Java 世界的传奇人物。 在 90 年代后期,为了完成博士论文,他写了一篇名为
在开幕主题演讲中,克里夫将谈论他的另一项事业——
Cliff 的另一个演讲是
最有趣的部分开始于他们为大企业制造硬件——一台运行 Java 的超级计算机。 这是一个非常创新的东西,专门为 Java 量身定做,它有特殊的要求——用于读取低暂停垃圾收集的内存障碍、具有边界检查的数组、虚拟调用……最酷的技术之一是硬件事务内存。 1 个内核中的任何一个的整个 L864 都可以参与事务写入,这对于在 Java 中使用锁尤为重要(同步块可以并行工作,只要没有真正的内存冲突)。 但美好的想法与严酷的现实相撞——在这份报告中,Cliff 将告诉您为什么 HTM 和 STM 不能很好地适应多线程计算的实际需求。
迈克尔斯科特- 双数据结构
由于教科书,全世界都知道迈克尔
至于 Java 世界,这是一个特例:他与 Doug Lea 一起开发了 Java 库运行的那些非阻塞算法和同步队列。 这就是“双数据结构”主题演讲的主题——在 Java SE 6 中引入这些结构使我们的性能提高了 10 倍 java.util.concurrent.ThreadPoolExecutor
. 如果您事先对这些“双重数据结构”是什么感兴趣,那么这里有
莫里斯·赫利希- 区块链和分布式计算的未来
在本次闭幕主题演讲中,Maurice 将从分布式计算经典的角度讲述区块链分布式系统的理论与实践,以及它如何简化许多相关问题。 这份报告专门针对会议的主题——根本不是关于挖矿炒作,而是关于我们的知识如何能够惊人地有效和适当地用于各种任务。
2017年XNUMX月,Maurice已经来到俄罗斯SPTDC学校,参加了JUG.ru meetup,视频可以在YouTube上观看:
主程序
然后将对计划中包含的报告进行简短审查。 此处对一些报告进行了详细描述,另一些则进行了简要描述。 长篇描述主要用于需要链接到科学论文、维基百科术语等的英文报告。 一个完整的列表可以是
莱斯利兰波特- 问与答
Leslie Lamport 是分布式计算的先驱作者。
就形式而言,这是该计划最不寻常的部分,因为它甚至不是报告,而是问答环节。 当相当一部分听众已经熟悉(或能够熟悉)基于兰波特理论的各种作品、他自己的文章和报告时,将所有可用时间用于直接交流更为重要。
这个想法很简单——你在 YouTube 上观看了两篇报道:
这两个视频中的第一个我们已经
注意:在 YouTube 上还有更多关于 Leslie Lamport 的视频。 例如,有一个优秀的
马丁克莱普曼 - 跨用户设备同步数据以进行分布式协作
Martin Kleppmann 是剑桥大学的研究员,致力于 CRDT 和形式算法验证。 马丁的书
在进入学术研究之前,Martin 曾在该行业工作,并与他人共同创立了两家成功的初创公司:
- Rapportive,致力于显示您的电子邮件联系人的社交资料,LinkedIn 于 2012 年收购了它;
- Go Test It,RedGate 于 2009 年购买的多浏览器自动网站检查器。
总的来说,虽然 Martin 的知名度不如我们的 keynoter,但他已经能够为分布式计算的发展和行业做出一些贡献。
在这次演讲中,马丁将谈论一个更接近他的学术研究的话题。 在谷歌文档和类似的共同创作文档沙发中,“共同创作”意味着复制任务:每个用户都有自己的共享文档副本,然后他们修改,所有更改都通过网络发送给其他人的参与者。 文档的离线更改导致文档与其他参与者的临时不一致,重新同步需要冲突处理。 为此有
下周我们将发布关于哈布雷对马丁的大型采访,这将很有趣。
佩德罗·拉马尔赫特 - 免等待数据结构和免等待事务
Pedro 在 Cisco 工作,过去 XNUMX 年一直在开发并行算法,包括同步机制、无锁和无等待数据结构,以及关于这个主题你能想到的一切。 他目前的研究和工程兴趣集中在通用结构、软件事务内存、持久内存和类似技术上,以实现正确、可扩展和容错的应用程序。 而且他还是一个在小圈子里广为人知的博客的作者
大多数多线程应用程序现在都在并行数据结构上运行,从使用参与者之间的消息队列到键值存储中的索引数据结构。 它们已经在 Java JDK 中成功运行多年,并且正在慢慢添加到 C++ 中。
实现并行数据结构的最简单方法是串行(单线程)实现,其中方法受互斥锁保护。 这适用于任何 jun,但存在明显的缩放和性能问题。 同时,无锁和无等待数据结构不仅可以更好地处理错误,而且还具有更好的性能配置文件——但是,它们的开发需要深厚的专业知识和适应特定用例。 一行错误的代码足以破坏一切。
如何确保即使是非专家也能设计和实现这样的数据结构? 众所周知,任何顺序算法都可以通过以下方式实现线程安全
海蒂霍华德- 解放分布式共识
Heidi Howard 和 Martin 一样,都是剑桥大学的分布式系统研究员。 她的专长是一致性、容错性、性能和分布式共识。 她最出名的是她对 Paxos 算法的概括,称为
回想一下,
在多个主机之间找到共识的能力——用于寻址、领导者选择、阻塞或协调——是当今分布式系统中的一个基本问题。 Paxos是现在解决共识问题的主要方式,围绕它进行了大量的研究,以期针对各种实际需求对算法进行扩展和优化。
在本报告中,我们将重新审视 Paxos 的理论基础,放宽初始要求并推广算法。 事实上,我们将看到 Paxos 只是众多达成共识的方法中的一种,而范围内的其他点对于构建良好的分布式系统也非常有用。
亚历克斯彼得罗夫 - 通过瞬态复制和廉价仲裁降低存储成本
Alex 是一名数据库和存储专家,更重要的是,他是
对于系统
然而,任何事物都有它的代价。 仲裁复制方案意味着存储成本增加:您必须一次将冗余数据存储在多个节点上,以确保在出现问题时有足够的副本可用。 事实证明,您无法在所有副本上存储所有数据。 如果只将数据保留在部分节点上,并使用特殊节点(Transient Replica)进行故障处理场景,则可以减少存储负载。
在报告过程中,我们将考虑
德米特里·维尤科夫 - Goroutines暴露
Dmitry 是 Google 的一名开发人员,致力于 C/C++ 和 Go 动态测试 - Address/Memory/ThreadSanitizer 和用于 Linux 内核的类似工具。 他为 Go 贡献了一个可扩展的 goroutine 调度器、一个网络轮询器和一个并发垃圾收集器。 他是多线程专家,十几种新的非阻塞算法的作者,并且是
现在谈谈报告本身。 Go 语言以 goroutines(轻量级线程)和通道(FIFO 队列)的形式原生支持多线程。 多亏了这些机制,用户编写现代多线程应用程序变得非常轻松愉快,看起来就像魔术一样。 据我们了解,这里没有魔法。 在这份报告中,Dmitry 将深入研究 Go 调度程序的复杂性,并展示实现这种“魔法”的秘密。 首先,他将概述调度程序的主要组件及其工作原理。 接下来,我们将仔细研究某些方面,例如停放/停放策略和处理阻塞系统调用。 最后,Dmitry 将谈谈调度程序中可能的改进。
德米特里·布盖琴科—— 使用概率草图等加速分布式图分析
Dmitry 从事外包工作近 9 年,一直与大学和科学界保持联系。 Odnoklassniki 的大数据分析是他将理论培训和科学基础与实际需求产品的开发相结合的独特机会。
分布式图分析一直是并且仍然是一项艰巨的任务:当需要获取有关相邻顶点连接的信息时,数据通常必须在机器之间传输,这会导致执行时间增加和网络负载增加基础设施。 在本次演讲中,我们将了解如何使用概率数据结构或社交网络中友谊图的对称性等事实显着加快处理速度。 所有这些都通过 Apache Spark 代码示例进行了说明。
丹尼斯·雷斯托夫 - 通过瞬态复制和廉价仲裁降低存储成本
丹尼斯 - 开发人员
在本报告中,我们将熟悉过去几年发明的分布式事务协议,这些协议可以在支持条件更新(比较和设置)的任何数据存储之上的客户端实施。 最重要的是,生命不会以两阶段提交结束,事务可以添加到任何数据库之上——在应用程序级别,但不同的协议(2PC、Percolator、RAMP)有不同的权衡,没有给我们免费。
阿列克谢季诺维也夫 - 并非所有 ML 算法最终都会进入分布式天堂
阿列克谢 (
在本次演讲中,Alexey 将根据他在 Apache Spark ML、Apache Mahout、Apache Flink ML 和创建 Apache Ignite ML 方面的经验,讨论将经典机器学习算法应用于分布式执行的问题。 Alexey 还将讨论分布式 ML 算法在这些框架中的实现。
最后,来自 Yandex 的两份关于 Yandex 数据库的报告。
弗拉季斯拉夫·库兹涅佐夫 — Yandex 数据库 - 我们如何提供容错
Vladislav 是 Yandex 分布式平台组的一名开发人员。 Yandex 数据库是一种水平可扩展、地理分布、容错的 DBMS,可以承受磁盘、服务器、机架和数据中心的故障,而不会影响一致性。 为了确保容错性,使用了专有的分布式共识算法,以及许多技术解决方案,这些在报告中进行了详细讨论。 该报告可能对 DBMS 开发人员和基于 DBMS 的应用解决方案开发人员都感兴趣。
谢苗切切林达 - YDB 中的分布式事务
Semyon 是 Yandex 分布式平台组的一名开发人员,致力于研究 YDB 安装的多租户使用的可能性。
Yandex 数据库专为 OLTP 查询而设计,满足事务系统的 ACID 要求。 在报告中,我们将考虑 YDB 事务系统底层的事务调度算法。 我们来分析一下哪些实体参与了交易,谁为交易分配了一个全局顺序,交易的原子性、可靠性和严格的隔离级别是如何实现的。 以常见任务为例,让我们考虑使用两阶段提交和确定性事务来实现事务。 让我们讨论一下它们的区别。
接下来是什么?
会议计划继续充满新的报告。 特别是,我们期待一份来自 尼基塔·科瓦尔 (
Hydra 会议将于 11 月 12 日至 XNUMX 日在圣彼得堡举行。 门票可以
九头蛇见!
来源: habr.com