11月12-XNUMX日,将在圣彼得堡召开会议 致力于并行和分布式系统的开发。 关于 Hydra 的事情是它将顶尖科学家(通常只在国外科学会议上出现)和知名的实践工程师结合到一个科学与实践交叉点的大项目中。
Hydra 是我们近年来最重要的会议之一。 在此之前进行了非常认真的准备、发言人的选择和报告。 关于上周 与 JUG.ru 集团的负责人 Alexey Fedorov().
我们 讲述了三个重要的参与者,分布式系统理论的创始人——Leslie Lamport、Maurice Herlihy 和 Michael Scott。 是时候详细谈谈整个程序了!

动机
如果您正在编程,那么您将以某种方式处理多线程和分布式计算。 相关领域的专家直接与他们合作,但隐含地,分布从各个方面看着我们:在任何多核计算机或分布式服务中,都有一些东西可以并行执行计算。
有许多会议涵盖了应用程序编程的某些方面。 另一方面,我们有特殊的科学学校,以讲座的形式揭示了大量复杂的理论。 例如,与圣彼得堡的九头蛇并行, . 在 Hydra 会议上,我们试图将严酷的实践、科学以及处于交叉点的一切结合在一起。
想一想:我们生活在一个美好的时代,您可以在这个时代现场见到我们所从事的科学和工程领域的创始人。 物理学家不会遇到牛顿或爱因斯坦——火车已经开走了。 但是,那些创建分布式系统理论基础、发明流行编程语言并首次将所有这些体现在工作原型中的人仍然生活在我们身边。 这些人并没有中途辞掉工作,目前正在世界知名大学和公司从事现实工作,是当今最大的知识和经验来源。
另一方面,与他们见面的机会通常仍然纯粹是理论上的:我们中很少有人能够不断地关注罗彻斯特大学的一些公共事件,然后赶往美国并返回迈克尔斯科特的讲座。 访问 Hydra 的所有成员通常是一笔不小的财富,除了花费的时间深渊(尽管这听起来像是一个有趣的任务)。
另一方面,我们现在有很多顶级工程师正在研究分布式系统的实际问题,他们肯定有话要说。 但问题是——他们 工作他们的时间很宝贵。 是的,如果你是微软、谷歌或 JetBrains 的员工,在内部活动中遇到一位知名演讲者的可能性会大大增加,但总的来说 - 不,它不会每天都发生。
通过这种方式,九头蛇会议完成了一项我们大多数人无法独自完成的重要任务——在一个地方和一个时间,将人们聚集在一起,他们的想法或与他们的交流可以改变你的生活。 我承认并不是每个人都需要分布式系统,一些复杂的基础性东西。 您可以在余生中用 PHP 编写 CRUD 程序,并且完全快乐。 但谁需要它 - 这是你的机会。
自从第一次宣布在哈布雷举行的九头蛇会议以来,已经过去了很长一段时间。 在这段时间里,已经完成了很多工作——现在,我们有了几乎所有报告的清单。 没有呆滞的单线程算法,只有纯粹的分布式硬核! 让我们以一般性的话结束,看看我们现在手头有什么。
主题演讲
主题演讲开始和结束会议的日子。 通常开幕主题演讲的目的是确定会议的总体精神和方向。 闭幕主题演讲划清界线,并解释了我们如何使用在会议期间获得的知识和技能。 开始和结束:记忆最好的东西,一般来说,具有更高的价值。
悬崖点击-
Cliff 是 Java 世界的传奇人物。 在 90 年代后期,为了完成博士论文,他写了一篇名为 ,一段时间后成为 HotSpot JVM 服务器编译器的基础。 两年后,他已经在 Sun Microsystems 从事 JVM 方面的工作,并向全世界展示了 JIT 有权存在。 Java 是具有最智能和最快优化的最快的现代运行时之一的整个故事来自 Cliff Click。 一开始,人们认为如果静态编译器可以使用某些东西,您甚至不能尝试对它进行 jit。 感谢 Cliff 和团队的工作,所有新语言开始默认使用 JIT 编译的思想创建。 当然,这不是一个人的功劳,而是克利夫在其中起了非常重要的作用。
在开幕主题演讲中,克里夫将谈论他的另一项事业—— ,一个用于工业应用的分布式和可扩展机器学习的内存平台。 更确切地说,关于键值对在其中的分布式存储。 这是一个非常快速的存储,有很多有趣的属性(确切的列表在 ) 允许在大数据流的数学中使用类似的解决方案。
Cliff 的另一个演讲是 . 他传记的另一部分 - 十年 ,他在 Azul 硬件和技术堆栈中更新和改进了很多东西:JIT 编译器、运行时、线程模型、错误处理、堆栈操作、硬件中断、类加载等等 - 嗯,你明白了主意。
最有趣的部分开始于他们为大企业制造硬件——一台运行 Java 的超级计算机。 这是一个非常创新的东西,专门为 Java 量身定做,它有特殊的要求——用于读取低暂停垃圾收集的内存障碍、具有边界检查的数组、虚拟调用……最酷的技术之一是硬件事务内存。 1 个内核中的任何一个的整个 L864 都可以参与事务写入,这对于在 Java 中使用锁尤为重要(同步块可以并行工作,只要没有真正的内存冲突)。 但美好的想法与严酷的现实相撞——在这份报告中,Cliff 将告诉您为什么 HTM 和 STM 不能很好地适应多线程计算的实际需求。
迈克尔斯科特-
- 罗切斯特大学计算机科学教授,命运与他联系在一起 ,并在他的家乡威斯康星大学麦迪逊分校担任了五年院长。 他从事并行和分布式编程和语言设计领域的研究,并向学生教授这些内容。
由于教科书,全世界都知道迈克尔 ,其最新版本发布于最近 - 2015 年。 他的工作 我收到 作为分布式计算领域最著名的公司之一, 在罗切斯特大学在线图书馆。 您可能还知道他是来自 Michael-Scott 算法的作者 .
至于 Java 世界,这是一个特例:他与 Doug Lea 一起开发了 Java 库运行的那些非阻塞算法和同步队列。 这就是“双数据结构”主题演讲的主题——在 Java SE 6 中引入这些结构使我们的性能提高了 10 倍 java.util.concurrent.ThreadPoolExecutor. 如果您事先对这些“双重数据结构”是什么感兴趣,那么这里有 .
莫里斯·赫利希-
- 两次获得 Dijkstra 奖。 第一个是为了工作 (布朗大学),第二个,最近 - (弗吉尼亚理工大学)。 Dijkstra 奖颁发给其重要性和影响力至少十年显着的作品,很明显,Maurice 是该领域最著名的专家之一。 他目前是布朗大学的教授,并取得了长篇大论的成就。
在本次闭幕主题演讲中,Maurice 将从分布式计算经典的角度讲述区块链分布式系统的理论与实践,以及它如何简化许多相关问题。 这份报告专门针对会议的主题——根本不是关于挖矿炒作,而是关于我们的知识如何能够惊人地有效和适当地用于各种任务。
2017年XNUMX月,Maurice已经来到俄罗斯SPTDC学校,参加了JUG.ru meetup,视频可以在YouTube上观看:

主程序
然后将对计划中包含的报告进行简短审查。 此处对一些报告进行了详细描述,另一些则进行了简要描述。 长篇描述主要用于需要链接到科学论文、维基百科术语等的英文报告。 一个完整的列表可以是 . 网站上的列表将被更新和补充。
莱斯利兰波特-
Leslie Lamport 是分布式计算的先驱作者。 代表“Lamport TeX”。 早在 1979 年,他就首次提出了这一概念 , 和他的文章 获得了迪杰斯特拉奖。
就形式而言,这是该计划最不寻常的部分,因为它甚至不是报告,而是问答环节。 当相当一部分听众已经熟悉(或能够熟悉)基于兰波特理论的各种作品、他自己的文章和报告时,将所有可用时间用于直接交流更为重要。
这个想法很简单——你在 YouTube 上观看了两篇报道: и 并准备至少一个问题,Leslie 回答。
这两个视频中的第一个我们已经 . 如果您没有一个小时的时间观看视频,您可以快速阅读所有文本形式的内容。
注意:在 YouTube 上还有更多关于 Leslie Lamport 的视频。 例如,有一个优秀的 . 整个课程的离线版本可在 ,并在 YouTube 上,他将其倒出,以便在移动设备上更方便地观看。
马丁克莱普曼 -
Martin Kleppmann 是剑桥大学的研究员,致力于 CRDT 和形式算法验证。 马丁的书 ,于 2017 年出版,事实证明非常成功,并登上了数据存储和处理领域的畅销书榜单。 凯文·斯科特,微软首席技术官 : “这本书应该是设计工程师的必备书。 这是连接理论和实践的稀有资源,可帮助开发人员更智能地设计和实施数据基础架构和系统。” Kafka 的创建者和 Confluent 的 CTO Jay Kreps 也说过类似的话。
在进入学术研究之前,Martin 曾在该行业工作,并与他人共同创立了两家成功的初创公司:
- Rapportive,致力于显示您的电子邮件联系人的社交资料,LinkedIn 于 2012 年收购了它;
- Go Test It,RedGate 于 2009 年购买的多浏览器自动网站检查器。
总的来说,虽然 Martin 的知名度不如我们的 keynoter,但他已经能够为分布式计算的发展和行业做出一些贡献。
在这次演讲中,马丁将谈论一个更接近他的学术研究的话题。 在谷歌文档和类似的共同创作文档沙发中,“共同创作”意味着复制任务:每个用户都有自己的共享文档副本,然后他们修改,所有更改都通过网络发送给其他人的参与者。 文档的离线更改导致文档与其他参与者的临时不一致,重新同步需要冲突处理。 为此有 (CRDT),其实是一个比较新的东西,它的本质是在2011年才制定出来的。 本次演讲讨论了 CRDT 世界自那时以来发生的事情、最新的发展、构建本地优先应用程序的一般方法以及开源库的使用。 特别是。
下周我们将发布关于哈布雷对马丁的大型采访,这将很有趣。
佩德罗·拉马尔赫特 -
Pedro 在 Cisco 工作,过去 XNUMX 年一直在开发并行算法,包括同步机制、无锁和无等待数据结构,以及关于这个主题你能想到的一切。 他目前的研究和工程兴趣集中在通用结构、软件事务内存、持久内存和类似技术上,以实现正确、可扩展和容错的应用程序。 而且他还是一个在小圈子里广为人知的博客的作者 .
大多数多线程应用程序现在都在并行数据结构上运行,从使用参与者之间的消息队列到键值存储中的索引数据结构。 它们已经在 Java JDK 中成功运行多年,并且正在慢慢添加到 C++ 中。
实现并行数据结构的最简单方法是串行(单线程)实现,其中方法受互斥锁保护。 这适用于任何 jun,但存在明显的缩放和性能问题。 同时,无锁和无等待数据结构不仅可以更好地处理错误,而且还具有更好的性能配置文件——但是,它们的开发需要深厚的专业知识和适应特定用例。 一行错误的代码足以破坏一切。
如何确保即使是非专家也能设计和实现这样的数据结构? 众所周知,任何顺序算法都可以通过以下方式实现线程安全 ,或事务内存。 一方面,他们可以降低解决这个问题的进入门槛。 然而,这两种解决方案往往会导致实施效率低下。 Pedro 将谈论他们如何设法使这些结构更加高效,以及如何将它们用于他们的算法。
海蒂霍华德-
Heidi Howard 和 Martin 一样,都是剑桥大学的分布式系统研究员。 她的专长是一致性、容错性、性能和分布式共识。 她最出名的是她对 Paxos 算法的概括,称为 .
回想一下, - 一系列协议,用于解决不可靠计算机网络中的共识问题,这些协议基于 Leslie Lamport 的工作。 因此,我们的一些演讲者正在处理最初由其他演讲者提出的任务——这太棒了。
在多个主机之间找到共识的能力——用于寻址、领导者选择、阻塞或协调——是当今分布式系统中的一个基本问题。 Paxos是现在解决共识问题的主要方式,围绕它进行了大量的研究,以期针对各种实际需求对算法进行扩展和优化。
在本报告中,我们将重新审视 Paxos 的理论基础,放宽初始要求并推广算法。 事实上,我们将看到 Paxos 只是众多达成共识的方法中的一种,而范围内的其他点对于构建良好的分布式系统也非常有用。
亚历克斯彼得罗夫 -
Alex 是一名数据库和存储专家,更重要的是,他是 . 他目前正在与 O'Reilly 合作编写 Database Internals 一书。
对于系统 (用俄语术语——“最后的一致性”),在节点崩溃或网络分裂后,需要解决以下困境:要么继续完成请求,牺牲一致性,要么拒绝执行请求并牺牲可用性。 在这样的系统中,群体、节点的重叠子集以及确保至少一个节点包含最新值,可能是一个很好的边缘解决方案。 在继续响应最新值的同时,有可能在失败和与某些节点的连接丢失时幸存下来。
然而,任何事物都有它的代价。 仲裁复制方案意味着存储成本增加:您必须一次将冗余数据存储在多个节点上,以确保在出现问题时有足够的副本可用。 事实证明,您无法在所有副本上存储所有数据。 如果只将数据保留在部分节点上,并使用特殊节点(Transient Replica)进行故障处理场景,则可以减少存储负载。
在报告过程中,我们将考虑 , 中使用的复制方案 и ,以及这个概念在 Apache Cassandra 中的名称下的实现 .
德米特里·维尤科夫 -
Dmitry 是 Google 的一名开发人员,致力于 C/C++ 和 Go 的动态测试——地址/内存/线程净化器以及类似的内核工具。 Linux他为 Go 语言贡献了可扩展的 goroutine 调度器、网络轮询器和并行垃圾回收器。他是多线程领域的专家,撰写了十几个新的非阻塞算法,并持有…… 英特尔。
现在谈谈报告本身。 Go 语言以 goroutines(轻量级线程)和通道(FIFO 队列)的形式原生支持多线程。 多亏了这些机制,用户编写现代多线程应用程序变得非常轻松愉快,看起来就像魔术一样。 据我们了解,这里没有魔法。 在这份报告中,Dmitry 将深入研究 Go 调度程序的复杂性,并展示实现这种“魔法”的秘密。 首先,他将概述调度程序的主要组件及其工作原理。 接下来,我们将仔细研究某些方面,例如停放/停放策略和处理阻塞系统调用。 最后,Dmitry 将谈谈调度程序中可能的改进。
德米特里·布盖琴科——
Dmitry 从事外包工作近 9 年,一直与大学和科学界保持联系。 Odnoklassniki 的大数据分析是他将理论培训和科学基础与实际需求产品的开发相结合的独特机会。
分布式图分析一直是并且仍然是一项艰巨的任务:当需要获取有关相邻顶点连接的信息时,数据通常必须在机器之间传输,这会导致执行时间增加和网络负载增加基础设施。 在本次演讲中,我们将了解如何使用概率数据结构或社交网络中友谊图的对称性等事实显着加快处理速度。 所有这些都通过 Apache Spark 代码示例进行了说明。
丹尼斯·雷斯托夫 -
丹尼斯 - 开发人员 ,一致性模型验证、共识算法和分布式事务方面的专家。 现在在微软工作,之前在亚马逊和Yandex从事分布式系统方面的工作。
在本报告中,我们将熟悉过去几年发明的分布式事务协议,这些协议可以在支持条件更新(比较和设置)的任何数据存储之上的客户端实施。 最重要的是,生命不会以两阶段提交结束,事务可以添加到任何数据库之上——在应用程序级别,但不同的协议(2PC、Percolator、RAMP)有不同的权衡,没有给我们免费。
阿列克谢季诺维也夫 -
阿列克谢 () 是我们的长期发言人和其他会议的程序委员会成员。 EPAM Systems实习培训师,2012年开始接触Hadoop/Spark等大数据。
在本次演讲中,Alexey 将根据他在 Apache Spark ML、Apache Mahout、Apache Flink ML 和创建 Apache Ignite ML 方面的经验,讨论将经典机器学习算法应用于分布式执行的问题。 Alexey 还将讨论分布式 ML 算法在这些框架中的实现。
最后,来自 Yandex 的两份关于 Yandex 数据库的报告。
弗拉季斯拉夫·库兹涅佐夫 —
Vladislav 是 Yandex 分布式平台组的一名开发人员。 Yandex 数据库是一种水平可扩展、地理分布、容错的 DBMS,可以承受磁盘、服务器、机架和数据中心的故障,而不会影响一致性。 为了确保容错性,使用了专有的分布式共识算法,以及许多技术解决方案,这些在报告中进行了详细讨论。 该报告可能对 DBMS 开发人员和基于 DBMS 的应用解决方案开发人员都感兴趣。
谢苗切切林达 -
Semyon 是 Yandex 分布式平台组的一名开发人员,致力于研究 YDB 安装的多租户使用的可能性。
Yandex 数据库专为 OLTP 查询而设计,满足事务系统的 ACID 要求。 在报告中,我们将考虑 YDB 事务系统底层的事务调度算法。 我们来分析一下哪些实体参与了交易,谁为交易分配了一个全局顺序,交易的原子性、可靠性和严格的隔离级别是如何实现的。 以常见任务为例,让我们考虑使用两阶段提交和确定性事务来实现事务。 让我们讨论一下它们的区别。
接下来是什么?
会议计划继续充满新的报告。 特别是,我们期待一份来自 尼基塔·科瓦尔 () 来自 JetBrains 和 奥列格·阿纳斯塔西耶夫 () 来自 Odnoklassniki。 Nikita 在 Kotlin 团队从事协程算法的研究,Oleg 在 Odnoklassniki 平台为高负载系统开发架构和解决方案。 此外,还有 1 个有条件的空位,项目委员会正在为候选人工作。
Hydra 会议将于 11 月 12 日至 XNUMX 日在圣彼得堡举行。 门票可以 . 请注意在线门票的可用性 - 如果由于某种原因您这几天无法现场直播圣彼得堡。
九头蛇见!
来源: habr.com
