หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม

ในวันที่ 11-12 กรกฎาคมการประชุมจะจัดขึ้นที่เซนต์ปีเตอร์สเบิร์ก ไฮดราทุ่มเทให้กับการพัฒนาระบบขนานและกระจาย สิ่งที่เกี่ยวกับไฮดราคือการรวมนักวิทยาศาสตร์ชั้นนำ (ซึ่งมักพบเฉพาะในการประชุมทางวิทยาศาสตร์ต่างประเทศ) และวิศวกรฝึกหัดที่มีชื่อเสียงเข้าเป็นโปรแกรมใหญ่รายการเดียวที่จุดบรรจบกันของวิทยาศาสตร์และการปฏิบัติ

Hydra เป็นหนึ่งในการประชุมที่สำคัญที่สุดของเราในช่วงไม่กี่ปีที่ผ่านมา นำหน้าด้วยการเตรียมการอย่างจริงจัง การเลือกวิทยากรและรายงาน เกี่ยวกับมันเมื่อสัปดาห์ที่แล้ว habrointerview ออกมา กับผู้อำนวยการกลุ่ม JUG.ru, Alexey Fedorov (23เดเรโว).

เรา บอกแล้ว เกี่ยวกับผู้เข้าร่วมที่สำคัญสามคนผู้ก่อตั้งทฤษฎีระบบกระจาย - Leslie Lamport, Maurice Herlihy และ Michael Scott ได้เวลาพูดคุยเกี่ยวกับโปรแกรมทั้งหมดแล้ว!

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม

แรงจูงใจ

หากคุณกำลังเขียนโปรแกรม คุณจะต้องจัดการกับมัลติเธรดและการประมวลผลแบบกระจายไม่ทางใดก็ทางหนึ่ง ผู้เชี่ยวชาญในสาขาที่เกี่ยวข้องทำงานร่วมกับพวกเขาโดยตรง แต่โดยปริยาย การแจกจ่ายจะมองเราจากทุกที่: ในคอมพิวเตอร์แบบมัลติคอร์หรือบริการแบบกระจาย มีบางอย่างที่ทำการคำนวณแบบคู่ขนานกัน

มีการประชุมมากมายที่ครอบคลุมบางแง่มุมของการเขียนโปรแกรมแอ็พพลิเคชัน ในอีกด้านหนึ่งของสเปกตรัม เรามีโรงเรียนสอนพิเศษทางวิทยาศาสตร์ในรูปแบบการบรรยาย ซึ่งเผยให้เห็นทฤษฎีที่ซับซ้อนจำนวนมหาศาล ตัวอย่างเช่น ควบคู่ไปกับไฮดราในเซนต์ปีเตอร์สเบิร์ก โรงเรียนสพป. ในการประชุม Hydra เราพยายามรวบรวมการปฏิบัติที่รุนแรง วิทยาศาสตร์ และทุกสิ่งที่อยู่ตรงจุดบรรจบกัน

ลองนึกถึงสิ่งนี้: เราอยู่ในช่วงเวลาที่น่าทึ่งที่คุณจะได้พบกับผู้ก่อตั้งสาขาวิทยาศาสตร์และวิศวกรรมศาสตร์ที่เรามีส่วนร่วมแบบสดๆ นักฟิสิกส์จะไม่พบนิวตันหรือไอน์สไตน์ - รถไฟออกไปแล้ว แต่บรรดาผู้ที่สร้างรากฐานของทฤษฎีระบบกระจาย คิดค้นภาษาโปรแกรมยอดนิยม และเป็นครั้งแรกที่รวบรวมทั้งหมดนี้ไว้ในต้นแบบการทำงานยังคงอยู่ถัดจากเรา คนเหล่านี้ไม่ได้ลาออกจากงานกลางคัน ปัจจุบันทำงานจริงในมหาวิทยาลัยและบริษัทที่มีชื่อเสียงระดับโลก และเป็นแหล่งความรู้และประสบการณ์ที่ยิ่งใหญ่ที่สุดในปัจจุบัน

ในทางกลับกัน โอกาสที่จะได้พบพวกเขามักจะเป็นเพียงทฤษฎีเท่านั้น: มีเพียงไม่กี่คนที่สามารถติดตามกิจกรรมสาธารณะที่มหาวิทยาลัยโรเชสเตอร์บางแห่งอย่างต่อเนื่อง เพื่อที่จะรีบไปสหรัฐอเมริกาและกลับไปฟังการบรรยายของไมเคิล สก็อตต์ การเยี่ยมชมสมาชิกทั้งหมดของไฮดราโดยทั่วไปจะเป็นโชคเล็กน้อย นอกเหนือจากเวลาที่ใช้ไปอย่างยาวนาน (แม้ว่าจะฟังดูเหมือนเป็นภารกิจที่น่าสนใจก็ตาม)

ในทางกลับกัน เรามีวิศวกรชั้นนำจำนวนมากที่กำลังแก้ไขปัญหาที่แท้จริงของระบบกระจายอยู่ในขณะนี้ และพวกเขามีบางอย่างที่จะบอกเราอย่างแน่นอน แต่นี่คือปัญหา - พวกเขา работаютและเวลาของพวกเขามีค่า ใช่ หากคุณเป็นพนักงานของ Microsoft, Google หรือ JetBrains ความน่าจะเป็นที่จะได้พบกับวิทยากรที่มีชื่อเสียงในงานภายในจะเพิ่มขึ้นอย่างมาก แต่โดยทั่วไป - ไม่ มันไม่ได้เกิดขึ้นทุกวัน

ด้วยวิธีนี้ การประชุม Hydra บรรลุงานสำคัญที่พวกเราส่วนใหญ่ไม่สามารถทำได้ด้วยตนเอง - ในที่เดียวและในคราวเดียว รวบรวมผู้คนที่มีแนวคิดหรือการสื่อสารด้วยที่สามารถเปลี่ยนแปลงชีวิตของคุณได้ ฉันยอมรับว่าไม่ใช่ทุกคนที่ต้องการระบบกระจาย บางสิ่งพื้นฐานที่ซับซ้อน คุณสามารถตั้งโปรแกรม CRUD ใน PHP ได้ตลอดชีวิตและมีความสุขอย่างเต็มที่ แต่ใครต้องการ - นี่เป็นโอกาสของคุณ

เวลาผ่านไปค่อนข้างนานตั้งแต่การประกาศครั้งแรกของการประชุม Hydra ใน Habré ในช่วงเวลานี้ มีการทำงานจำนวนมาก - และตอนนี้ เรามีรายการรายงานเกือบทั้งหมด ไม่มีอัลกอริทึมแบบเธรดเดียวที่เฉื่อยชา เป็นเพียงฮาร์ดคอร์แบบกระจายเท่านั้น! จบด้วยคำทั่วไปและดูสิ่งที่เรามีอยู่ตอนนี้

ประเด็นสำคัญ

คำปราศรัยเริ่มต้นและสิ้นสุดวันของการประชุม โดยปกติแล้ว จุดประสงค์ของการเปิดประเด็นสำคัญคือเพื่อกำหนดเจตนารมณ์และทิศทางของการประชุม ประเด็นสำคัญปิดท้ายเป็นการสรุปและอธิบายว่าเราจะใช้ชีวิตอย่างไรกับความรู้และทักษะที่ได้รับระหว่างวันของการประชุม จุดเริ่มต้นและจุดสิ้นสุด: สิ่งที่จำได้ดีที่สุดและโดยทั่วไปมีมูลค่าเพิ่มขึ้น

คลิฟคลิก- อัลกอริทึม K/V แบบกระจาย H2O

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Cliff เป็นตำนานในโลกชวา ในช่วงปลายยุค 90 สำหรับวิทยานิพนธ์ระดับปริญญาเอก เขาเขียนบทความชื่อ "การรวมการวิเคราะห์ การรวมการเพิ่มประสิทธิภาพ"ซึ่งหลังจากนั้นไม่นานก็กลายเป็นพื้นฐานสำหรับ HotSpot JVM Server Compiler สองปีต่อมา เขาได้ทำงานที่ Sun Microsystems ใน JVM และแสดงให้ทั้งโลกเห็นว่า JIT มีสิทธิ์ที่จะดำรงอยู่ เรื่องราวทั้งหมดนี้ว่า Java เป็นหนึ่งในรันไทม์สมัยใหม่ที่เร็วที่สุดด้วยการเพิ่มประสิทธิภาพที่ชาญฉลาดและเร็วที่สุดมาจาก Cliff Click ในตอนแรกเชื่อกันว่าหากคอมไพเลอร์แบบสแตติกมีบางสิ่งที่พร้อมใช้งาน คุณไม่สามารถลองจิดมันได้ด้วยซ้ำ ขอบคุณการทำงานของ Cliff และทีมงาน ภาษาใหม่ทั้งหมดเริ่มถูกสร้างขึ้นด้วยแนวคิดของการรวบรวม JIT เป็นค่าเริ่มต้น แน่นอนว่านี่ไม่ใช่งานของคนๆ เดียว แต่คลิฟฟ์มีบทบาทสำคัญในเรื่องนี้

ในคำปราศรัยเปิดงาน คลิฟฟ์จะพูดถึงภารกิจอื่นๆ ของเขา - H20ซึ่งเป็นแพลตฟอร์มในหน่วยความจำสำหรับแมชชีนเลิร์นนิงแบบกระจายและปรับขนาดได้สำหรับแอปพลิเคชันอุตสาหกรรม แม่นยำยิ่งขึ้นเกี่ยวกับการจัดเก็บแบบกระจายของคู่คีย์-ค่าภายในนั้น นี่เป็นที่เก็บข้อมูลที่รวดเร็วมากพร้อมคุณสมบัติที่น่าสนใจมากมาย (รายการที่แน่นอนอยู่ใน คำอธิบาย) ที่อนุญาตให้ใช้โซลูชันที่คล้ายกันในคณิตศาสตร์ของการสตรีมข้อมูลขนาดใหญ่

อีกหนึ่งคำพูดที่คลิฟฟ์จะพูดคือ ประสบการณ์หน่วยความจำการทำธุรกรรมของฮาร์ดแวร์ Azul. อีกส่วนหนึ่งของชีวประวัติของเขา - สิบปี ทำงานในอาซูลซึ่งเขาได้อัปเดตและปรับปรุงหลายสิ่งหลายอย่างในฮาร์ดแวร์และเทคโนโลยีของ Azul: คอมไพเลอร์ JIT, รันไทม์, โมเดลเธรด, การจัดการข้อผิดพลาด, การจัดการสแต็ก, การขัดจังหวะของฮาร์ดแวร์, การโหลดคลาส และอื่น ๆ คุณจะได้รับ ความคิด.

ส่วนที่น่าสนใจที่สุดเริ่มต้นขึ้นเมื่อพวกเขาสร้างฮาร์ดแวร์สำหรับธุรกิจขนาดใหญ่ นั่นคือ ซูเปอร์คอมพิวเตอร์สำหรับรันจาวา มันค่อนข้างเป็นนวัตกรรมใหม่ซึ่งปรับแต่งมาโดยเฉพาะสำหรับ Java ซึ่งมีข้อกำหนดพิเศษ - อุปสรรคของหน่วยความจำสำหรับการอ่านสำหรับการรวบรวมขยะที่หยุดชั่วคราว, อาร์เรย์ที่มีการตรวจสอบขอบเขต, การโทรเสมือน ... หนึ่งในเทคโนโลยีที่ยอดเยี่ยมที่สุดคือหน่วยความจำธุรกรรมของฮาร์ดแวร์ L1 ทั้งหมดของคอร์ใดๆ จาก 864 คอร์สามารถเข้าร่วมในการเขียนทรานแซกชัน ซึ่งเป็นสิ่งสำคัญอย่างยิ่งสำหรับการทำงานกับการล็อกใน Java (บล็อกที่ซิงโครไนซ์สามารถทำงานแบบขนานได้ ตราบใดที่ไม่มีความขัดแย้งของหน่วยความจำจริง) แต่แนวคิดที่สวยงามกลับขัดแย้งกับความเป็นจริงอันโหดร้าย และในรายงานนี้ Cliff จะบอกคุณว่าทำไม HTM และ STM จึงไม่เหมาะกับความต้องการเชิงปฏิบัติของการประมวลผลแบบมัลติเธรด

ไมเคิล สก็อตต์- โครงสร้างข้อมูลคู่

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม ไมเคิล สก็อตต์ - ศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์ที่มหาวิทยาลัยโรเชสเตอร์ซึ่งโชคชะตาเชื่อมโยงกับเขา เป็นเวลา 34 ปีแล้วและที่มหาวิทยาลัยวิสคอนซิน-แมดิสันบ้านเกิดของเขา เป็นคณบดีเป็นเวลาห้าปี เขามีส่วนร่วมในการวิจัยในด้านการเขียนโปรแกรมแบบขนานและแบบกระจายและการออกแบบภาษา และสอนสิ่งนี้ให้กับนักเรียน

คนทั้งโลกรู้จักไมเคิลด้วยตำราเรียน "ภาษาโปรแกรมประยุกต์"ซึ่งเป็นฉบับล่าสุดที่เผยแพร่ค่อนข้างเร็ว - ในปี 2015 งานของเขา "อัลกอริทึมสำหรับการซิงโครไนซ์ที่ปรับขนาดได้บนมัลติโปรเซสเซอร์หน่วยความจำที่ใช้ร่วมกัน" ที่ได้รับ รางวัลไดจ์คสตรา ในฐานะหนึ่งในผู้ที่มีชื่อเสียงที่สุดในด้านการประมวลผลแบบกระจายและ โกหกอย่างเปิดเผย ที่ห้องสมุดออนไลน์ของมหาวิทยาลัยโรเชสเตอร์ คุณอาจรู้จักเขาในฐานะผู้เขียนอัลกอริทึม Michael-Scott คนเดียวกันจาก "อัลกอริทึมคิวพร้อมกันที่ง่าย รวดเร็ว และใช้งานได้จริง".

สำหรับโลก Java นี่เป็นกรณีพิเศษ เขาร่วมกับ Doug Lea พัฒนาอัลกอริทึมแบบไม่ปิดกั้นและคิวแบบซิงโครนัสที่ไลบรารี Java เรียกใช้ นี่คือประเด็นสำคัญของ "โครงสร้างข้อมูลคู่" - การแนะนำโครงสร้างเหล่านี้ใน Java SE 6 ทำให้เราสามารถปรับปรุงประสิทธิภาพได้ถึง 10 เท่า java.util.concurrent.ThreadPoolExecutor. หากคุณสนใจล่วงหน้าว่า "โครงสร้างข้อมูลคู่" เหล่านี้คืออะไร งานที่เกี่ยวข้อง.

มอริส เฮอร์ลิฮี- Blockchains และอนาคตของการประมวลผลแบบกระจาย

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม มอริส เฮอร์ลิฮี - ผู้ชนะรางวัล Dijkstra สองรางวัล ประการแรกคือการทำงาน "การซิงโครไนซ์โดยไม่ต้องรอ" (มหาวิทยาลัยบราวน์) และครั้งที่สอง ล่าสุด - "หน่วยความจำธุรกรรม: การสนับสนุนทางสถาปัตยกรรมสำหรับโครงสร้างข้อมูลที่ปราศจากการล็อค" (มหาวิทยาลัยเวอร์จิเนียเทค). รางวัล Dijkstra Prize มอบให้กับผลงานที่มีความสำคัญและมีอิทธิพลอย่างเห็นได้ชัดเป็นเวลาอย่างน้อย XNUMX ปี และเป็นที่ชัดเจนว่า Maurice เป็นหนึ่งในผู้เชี่ยวชาญที่มีชื่อเสียงที่สุดในสาขานี้ ปัจจุบันเขาเป็นศาสตราจารย์ที่มหาวิทยาลัยบราวน์และมีผลงานมากมายหลายย่อหน้า

ในคำปราศรัยปิดท้ายนี้ Maurice จะพูดคุยเกี่ยวกับทฤษฎีและการปฏิบัติของระบบบล็อกเชนแบบกระจายจากมุมมองของการประมวลผลแบบกระจายแบบคลาสสิก และวิธีที่มันช่วยลดความซับซ้อนของปัญหาที่เกี่ยวข้องมากมาย รายงานนี้มีเฉพาะในหัวข้อของการประชุม - ไม่เกี่ยวกับการโฆษณาชวนเชื่อแต่อย่างใด แต่เกี่ยวกับความรู้ของเราที่สามารถนำมาใช้อย่างมีประสิทธิภาพอย่างน่าอัศจรรย์และเหมาะสมโดยสัมพันธ์กับงานที่หลากหลายได้อย่างไร

ในเดือนกรกฎาคม 2017 Maurice เดินทางมายังรัสเซียที่โรงเรียน SPTDC เข้าร่วมมีตติ้ง JUG.ru และสามารถดูการบันทึกได้บน YouTube:

โปรแกรมหลัก

จากนั้นจะมีการตรวจสอบสั้น ๆ ของรายงานที่รวมอยู่ในโปรแกรม รายงานบางฉบับมีรายละเอียดอธิบายไว้ที่นี่ บางรายงานสั้นกว่านั้น คำอธิบายแบบยาวส่วนใหญ่จะเป็นรายงานภาษาอังกฤษซึ่งต้องมีลิงก์ไปยังเอกสารทางวิทยาศาสตร์ คำศัพท์ในวิกิพีเดีย และอื่นๆ รายการที่สมบูรณ์สามารถ ดูในเว็บไซต์การประชุม. รายการบนเว็บไซต์จะได้รับการปรับปรุงและเสริม

เลสลี่ แลมพอร์ต- ถาม & ตอบ

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Leslie Lamport เป็นผู้บุกเบิกด้านการประมวลผลแบบกระจาย น้ำยาง ย่อมาจาก "Lamport TeX" เขาเป็นคนที่นำแนวคิดนี้มาใช้เป็นครั้งแรกในปี 1979 ความสม่ำเสมอที่สม่ำเสมอและบทความของเขา "วิธีสร้างคอมพิวเตอร์มัลติโปรเซสเซอร์ที่รันโปรแกรมมัลติโปรเซสเซอร์ได้อย่างถูกต้อง" ได้รับรางวัล Dijkstra

นี่เป็นส่วนที่ผิดปกติที่สุดของโปรแกรมในแง่ของรูปแบบ เนื่องจากไม่ใช่แม้แต่รายงาน แต่เป็นเซสชันคำถามและคำตอบ เมื่อผู้ฟังส่วนสำคัญคุ้นเคย (หรืออาจคุ้นเคย) กับงานทุกประเภทตามทฤษฎีของแลมพอร์ต บทความและรายงานของเขาเอง การใช้เวลาทั้งหมดที่มีในการสื่อสารโดยตรงจึงมีความสำคัญมากกว่า

แนวคิดนั้นง่าย - คุณดูรายงานสองรายการบน YouTube: "การเขียนโปรแกรมควรเป็นมากกว่าการเข้ารหัส" и "ถ้าคุณไม่ได้เขียนโปรแกรม อย่าใช้ภาษาโปรแกรม" และเตรียมคำถามอย่างน้อยหนึ่งข้อ แล้วเลสลี่จะตอบ

เรามีวิดีโอแรกจากสองวิดีโอนี้แล้ว กลายเป็นเรื่องไร้สาระ. หากคุณไม่มีเวลาดูวิดีโอหนึ่งชั่วโมง คุณสามารถอ่านทั้งหมดในรูปแบบข้อความได้อย่างรวดเร็ว

หมายเหตุ: มีวิดีโออีกมากมายบน YouTube ที่มีเลสลี่ แลมพอร์ต ตัวอย่างเช่นมีที่ยอดเยี่ยม หลักสูตร TLA+. เวอร์ชันออฟไลน์ของหลักสูตรทั้งหมดนี้มีให้ที่ หน้าแรกของผู้เขียนและบน YouTube เขาเทลงเพื่อการรับชมที่สะดวกยิ่งขึ้นบนอุปกรณ์พกพา

มาร์ติน เคลปป์แมน - การซิงค์ข้อมูลระหว่างอุปกรณ์ของผู้ใช้เพื่อการทำงานร่วมกันแบบกระจาย

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Martin Kleppmann เป็นนักวิจัยที่มหาวิทยาลัยเคมบริดจ์ที่ทำงานเกี่ยวกับ CRDT และการตรวจสอบอัลกอริทึมอย่างเป็นทางการ หนังสือของมาร์ติน "การออกแบบแอปพลิเคชันที่ใช้ข้อมูลมาก"ซึ่งตีพิมพ์ในปี 2017 ได้รับการพิสูจน์แล้วว่าประสบความสำเร็จอย่างมากและติดอันดับหนังสือขายดีในด้านการจัดเก็บและประมวลผลข้อมูล เควิน สก็อตต์ ซีทีโอของไมโครซอฟต์ เคยกล่าวไว้: “หนังสือเล่มนี้เป็นสิ่งจำเป็นสำหรับวิศวกรออกแบบ นี่เป็นทรัพยากรที่หาได้ยากซึ่งเชื่อมโยงทฤษฎีและการปฏิบัติเพื่อช่วยให้นักพัฒนาสามารถออกแบบและใช้งานโครงสร้างพื้นฐานข้อมูลและระบบได้อย่างชาญฉลาดยิ่งขึ้น” ผู้สร้าง Kafka และ CTO Confluent, Jay Kreps พูดสิ่งที่คล้ายกัน

ก่อนเข้าสู่การวิจัยเชิงวิชาการ Martin ทำงานในอุตสาหกรรมนี้และร่วมก่อตั้งสตาร์ทอัพที่ประสบความสำเร็จสองแห่ง:

  • สายสัมพันธ์ ทุ่มเทให้กับการแสดงโปรไฟล์โซเชียลของผู้ติดต่อทางอีเมลของคุณ ซึ่ง LinkedIn ซื้อในปี 2012
  • ไปทดสอบ เครื่องมือตรวจสอบเว็บไซต์อัตโนมัติหลายเบราว์เซอร์ที่ RedGate ซื้อในปี 2009

โดยทั่วไปแล้ว แม้ว่า Martin จะเป็นที่รู้จักน้อยกว่าผู้กล่าวสุนทรพจน์ของเรา แต่เขาก็สามารถมีส่วนร่วมทั้งในการพัฒนาระบบคอมพิวเตอร์แบบกระจายและอุตสาหกรรม

ในการพูดคุยนี้ มาร์ตินจะพูดถึงหัวข้อที่ใกล้เคียงกับงานวิจัยทางวิชาการของเขามากขึ้น ใน Google เอกสารและโซฟาที่คล้ายกันสำหรับการเขียนเอกสารร่วมกัน "การเขียนร่วม" หมายถึงงานจำลองแบบ: ผู้ใช้แต่ละรายมีสำเนาเอกสารที่แบ่งปันของตนเอง จากนั้นจึงทำการแก้ไข และการเปลี่ยนแปลงทั้งหมดจะถูกส่งผ่านเครือข่ายไปยังส่วนที่เหลือ ของผู้เข้าร่วม การเปลี่ยนแปลงเอกสารแบบออฟไลน์ส่งผลให้เกิดความไม่สอดคล้องกันของเอกสารชั่วคราวเกี่ยวกับผู้เข้าร่วมรายอื่น และการซิงโครไนซ์ใหม่จำเป็นต้องมีการจัดการข้อขัดแย้ง สำหรับที่มีเพียงแค่นี้ ประเภทข้อมูลจำลองที่ปราศจากข้อขัดแย้ง ในความเป็นจริง (CRDT) นั้นค่อนข้างใหม่ซึ่งมีสาระสำคัญที่กำหนดขึ้นในปี 2011 เท่านั้น การพูดคุยนี้กล่าวถึงสิ่งที่เกิดขึ้นตั้งแต่นั้นมาในโลกของ CRDT การพัฒนาล่าสุดคืออะไร กล่าวถึงแนวทางการสร้างแอปพลิเคชันที่ใช้ในท้องถิ่นเป็นอันดับแรกโดยทั่วไป และการใช้ไลบรารีโอเพ่นซอร์ส ผสานอัตโนมัติ โดยเฉพาะอย่างยิ่ง.

สัปดาห์หน้าเราจะเผยแพร่บทสัมภาษณ์ใหญ่ของ Martin เกี่ยวกับ Habré ซึ่งจะน่าสนใจ

เปโดร รามาลเฮเต - โครงสร้างข้อมูลที่ไม่ต้องรอและธุรกรรมที่ไม่ต้องรอ

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Pedro ทำงานที่ Cisco และได้พัฒนาอัลกอริทึมแบบขนานในช่วงสิบปีที่ผ่านมา รวมถึงกลไกการซิงโครไนซ์ โครงสร้างข้อมูลแบบไม่ต้องล็อกและไม่มีการรอ และทุกสิ่งที่คุณนึกถึงในหัวข้อนี้ ความสนใจด้านการวิจัยและวิศวกรรมในปัจจุบันของเขามุ่งเน้นไปที่ Universal Constructions, Software Transactional Memory, Persistent Memory และเทคโนโลยีที่คล้ายคลึงกันเพื่อเปิดใช้งานแอปพลิเคชันที่ถูกต้อง ปรับขยายได้ และทนทานต่อข้อผิดพลาด และเขายังเป็นผู้เขียนบล็อกที่รู้จักกันแพร่หลายในวงแคบอีกด้วย Freaks พร้อมกัน.

ปัจจุบัน แอปพลิเคชันแบบมัลติเธรดส่วนใหญ่ทำงานบนโครงสร้างข้อมูลแบบขนาน ตั้งแต่การใช้คิวข้อความระหว่างตัวแสดงไปจนถึงโครงสร้างข้อมูลที่จัดทำดัชนีในที่เก็บคีย์-ค่า พวกเขาทำงานสำเร็จใน Java JDK มาหลายปีแล้ว และกำลังถูกเพิ่มลงใน C ++ อย่างช้าๆ

วิธีที่ง่ายที่สุดในการปรับใช้โครงสร้างข้อมูลแบบขนานคือการใช้งานแบบอนุกรม (เธรดเดียว) ซึ่งเมธอดได้รับการป้องกันโดย mutexes สิ่งนี้ใช้ได้กับทุก ๆ เดือนมิถุนายน แต่มีปัญหาด้านขนาดและประสิทธิภาพที่ชัดเจน ในขณะเดียวกัน โครงสร้างข้อมูลที่ไม่มีการล็อกและไม่มีการรอไม่เพียงแต่จัดการข้อผิดพลาดได้ดีขึ้นเท่านั้น แต่ยังมีโปรไฟล์ประสิทธิภาพที่ดีขึ้นด้วย อย่างไรก็ตาม การพัฒนาต้องอาศัยความเชี่ยวชาญเชิงลึกและการปรับให้เข้ากับกรณีการใช้งานเฉพาะ รหัสผิดบรรทัดเดียวก็เพียงพอที่จะทำลายทุกอย่าง

จะแน่ใจได้อย่างไรว่าแม้แต่ผู้ที่ไม่ใช่ผู้เชี่ยวชาญก็สามารถออกแบบและใช้โครงสร้างข้อมูลดังกล่าวได้ เป็นที่ทราบกันดีว่าอัลกอริทึมแบบลำดับใด ๆ สามารถทำให้เธรดปลอดภัยได้ การออกแบบที่เป็นสากลหรือหน่วยความจำธุรกรรม ประการหนึ่ง พวกเขาสามารถลดเกณฑ์การเข้าเพื่อแก้ปัญหานี้ได้ อย่างไรก็ตาม โซลูชันทั้งสองมีแนวโน้มที่จะนำไปสู่การปฏิบัติที่ไม่มีประสิทธิภาพ Pedro จะพูดคุยเกี่ยวกับวิธีที่พวกเขาจัดการเพื่อทำให้สิ่งก่อสร้างเหล่านี้มีประสิทธิภาพมากขึ้น และวิธีที่สามารถนำไปใช้กับอัลกอริทึมของพวกเขาได้

ไฮดี้ โฮเวิร์ด- การปลดปล่อยฉันทามติแบบกระจาย

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Heidi Howard เป็นเหมือน Martin นักวิจัยระบบกระจายที่มหาวิทยาลัยเคมบริดจ์ ความเชี่ยวชาญของเธอคือความสม่ำเสมอ การยอมรับข้อผิดพลาด ประสิทธิภาพ และฉันทามติแบบกระจาย เธอเป็นที่รู้จักกันดีที่สุดจากการวางอัลกอริทึม Paxos ของเธอโดยทั่วไป Paxos ที่ยืดหยุ่น.

จำได้ว่า แพซอส - ตระกูลโปรโตคอลสำหรับแก้ปัญหาฉันทามติในเครือข่ายคอมพิวเตอร์ที่ไม่น่าเชื่อถือซึ่งอิงตามผลงานของ Leslie Lamport ดังนั้น วิทยากรของเราบางคนจึงทำงานตามที่เสนอโดยวิทยากรท่านอื่นของเรา และนี่เป็นเรื่องที่ยอดเยี่ยมมาก

ความสามารถในการค้นหาฉันทามติระหว่างโฮสต์หลาย ๆ ตัว—สำหรับการระบุที่อยู่ การเลือกผู้นำ การบล็อก หรือการประสานงาน—เป็นปัญหาพื้นฐานในระบบแบบกระจายในปัจจุบัน ขณะนี้ Paxos เป็นวิธีหลักในการแก้ปัญหาที่เป็นเอกฉันท์ และมีการวิจัยจำนวนมากเกี่ยวกับปัญหาดังกล่าวเพื่อขยายและเพิ่มประสิทธิภาพอัลกอริทึมสำหรับความต้องการในทางปฏิบัติต่างๆ

ในรายงานนี้ เราจะทบทวนพื้นฐานทางทฤษฎีของ Paxos อีกครั้ง โดยผ่อนคลายข้อกำหนดเบื้องต้นและสรุปอัลกอริทึม เราจะเห็นว่า Paxos เป็นเพียงหนึ่งในตัวเลือกจากแนวทางต่างๆ มากมายเพื่อฉันทามติ และประเด็นอื่นๆ บนสเปกตรัมก็มีประโยชน์มากทีเดียวสำหรับการสร้างระบบกระจายที่ดี

อเล็กซ์ เปตรอฟ - ลดต้นทุนการจัดเก็บของคุณด้วยการจำลองแบบชั่วคราวและโควรัมราคาถูก

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม อเล็กซ์เป็นผู้เชี่ยวชาญด้านฐานข้อมูลและสตอเรจ และที่สำคัญกว่านั้นคือเป็นคอมมิชชันที่ คาสซานดรา. เขากำลังทำงานร่วมกับ O'Reilly ในหนังสือ Database Internals

สำหรับระบบที่มี ความสม่ำเสมอในที่สุด (ในคำศัพท์ภาษารัสเซีย - "สอดคล้องกันในที่สุด") หลังจากโหนดขัดข้องหรือแยกเครือข่าย ภาวะที่กลืนไม่เข้าคายไม่ออกต่อไปนี้จำเป็นต้องได้รับการแก้ไข: ดำเนินการตามคำขอต่อไป เสียสละความสอดคล้อง หรือปฏิเสธที่จะดำเนินการและเสียสละความพร้อมใช้งาน ในระบบดังกล่าว โควรัม ชุดย่อยที่ทับซ้อนกันของโหนด และการตรวจสอบให้แน่ใจว่าโหนดอย่างน้อยหนึ่งโหนดมีค่าล่าสุด สามารถเป็นโซลูชันขอบที่ดี เป็นไปได้ที่จะรอดพ้นจากความล้มเหลวและการสูญเสียการเชื่อมต่อกับบางโหนด ในขณะที่ยังคงตอบสนองด้วยค่าล่าสุด

อย่างไรก็ตาม ทุกอย่างมีราคาของมัน รูปแบบการจำลองแบบองค์ประชุมหมายถึงค่าใช้จ่ายในการจัดเก็บที่เพิ่มขึ้น: คุณต้องจัดเก็บข้อมูลที่ซ้ำซ้อนไว้บนหลายโหนดพร้อมกันเพื่อให้แน่ใจว่ามีสำเนาเพียงพอเมื่อเกิดปัญหา ปรากฎว่าคุณไม่สามารถเก็บข้อมูลทั้งหมดในแบบจำลองทั้งหมดได้ คุณสามารถลดภาระในการจัดเก็บได้หากคุณเก็บข้อมูลเฉพาะบนโหนดบางส่วน และใช้โหนดพิเศษ (Transient Replica) สำหรับสถานการณ์การจัดการความล้มเหลว

ในระหว่างการรายงานเราจะพิจารณา พยานจำลองรูปแบบการจำลองที่ใช้ใน ประแจ и เมก้าสโตร์และการนำแนวคิดนี้ไปใช้ใน Apache Cassandra ภายใต้ชื่อ การจำลองแบบชั่วคราว & โควรัมราคาถูก.

Dmitry Vyukov - เปิดเผย goroutines

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Dmitry เป็นนักพัฒนาของ Google ที่ทำงานเกี่ยวกับ C/C++ และ Go การทดสอบไดนามิก - Address/Memory/ThreadSanitizer และเครื่องมือที่คล้ายกันสำหรับเคอร์เนล Linux เขาได้สนับสนุนตัวกำหนดตารางเวลา goroutine ที่ปรับขนาดได้ เครื่องมือสำรวจเครือข่าย และตัวรวบรวมขยะที่ทำงานพร้อมกันให้กับ Go เขาเป็นผู้เชี่ยวชาญด้านมัลติเธรด ผู้เขียนอัลกอริธึมแบบไม่บล็อกใหม่นับสิบ และเป็นเจ้าของ เข็มขัดสีดำ อินเทล

ตอนนี้เล็กน้อยเกี่ยวกับรายงานเอง ภาษา Go มีการรองรับแบบเนทีฟสำหรับมัลติเธรดในรูปแบบของ goroutines (เธรดที่มีน้ำหนักเบา) และช่องสัญญาณ (คิว FIFO) ด้วยกลไกเหล่านี้ทำให้ผู้ใช้เขียนแอปพลิเคชันแบบมัลติเธรดที่ทันสมัยได้ง่ายและน่าพอใจมากและดูเหมือนเวทมนตร์ อย่างที่เราเข้าใจไม่มีเวทมนตร์ที่นี่ ในรายงานนี้ Dmitry จะเจาะลึกความซับซ้อนของตัวกำหนดตารางเวลา Go และแสดงความลับของการใช้ "เวทมนตร์" นี้ ขั้นแรก เขาจะอธิบายภาพรวมขององค์ประกอบหลักของตัวกำหนดตารางเวลาว่ามันทำงานอย่างไร ต่อไป เราจะพิจารณารายละเอียดบางประการ เช่น กลยุทธ์การจอดรถ / ยกเลิกการจอดรถ และการจัดการการเรียกระบบบล็อก สุดท้าย Dmitry จะพูดคุยเกี่ยวกับการปรับปรุงที่เป็นไปได้เล็กน้อยในตัวกำหนดตารางเวลา

ดมิทรี บูไกเชนโก - เร่งการวิเคราะห์กราฟแบบกระจายด้วยภาพร่างความน่าจะเป็นและอื่น ๆ

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Dmitry ทำงานด้านเอาท์ซอร์สมาเกือบ 9 ปี โดยไม่ขาดการติดต่อกับมหาวิทยาลัยและชุมชนวิทยาศาสตร์ การวิเคราะห์ข้อมูลขนาดใหญ่ใน Odnoklassniki เป็นโอกาสพิเศษสำหรับเขาที่จะรวมการฝึกอบรมเชิงทฤษฎีและพื้นฐานทางวิทยาศาสตร์เข้ากับการพัฒนาผลิตภัณฑ์จริงที่เป็นที่ต้องการ

การวิเคราะห์กราฟแบบกระจายนั้นเป็นงานที่ยากและยังคงเป็นงานที่ยาก เมื่อจำเป็นต้องได้รับข้อมูลเกี่ยวกับการเชื่อมต่อของจุดยอดที่อยู่ใกล้เคียง ข้อมูลมักจะต้องถูกถ่ายโอนระหว่างเครื่อง ซึ่งนำไปสู่การเพิ่มเวลาดำเนินการและโหลดบนเครือข่าย โครงสร้างพื้นฐาน ในการพูดคุยนี้ เราจะมาดูกันว่าคุณจะได้รับการประมวลผลที่รวดเร็วขึ้นอย่างมากได้อย่างไรโดยใช้โครงสร้างข้อมูลที่น่าจะเป็นหรือข้อเท็จจริง เช่น ความสมมาตรของกราฟมิตรภาพในโซเชียลเน็ตเวิร์ก ทั้งหมดนี้แสดงด้วยตัวอย่างโค้ด Apache Spark

เดนิส ริสซอฟ - ลดต้นทุนการจัดเก็บของคุณด้วยการจำลองแบบชั่วคราวและโควรัมราคาถูก

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม เดนิส - นักพัฒนา คอสมอส DBผู้เชี่ยวชาญในการตรวจสอบแบบจำลองที่สอดคล้องกัน อัลกอริทึมที่สอดคล้องกัน และธุรกรรมแบบกระจาย ตอนนี้เขาทำงานที่ Microsoft และก่อนหน้านั้นเขามีส่วนร่วมในระบบกระจายที่ Amazon และ Yandex

ในรายงานนี้ เราจะทำความคุ้นเคยกับโปรโตคอลธุรกรรมแบบกระจายที่ได้รับการคิดค้นในช่วงไม่กี่ปีที่ผ่านมา ซึ่งสามารถนำไปใช้ในฝั่งไคลเอนต์บนที่เก็บข้อมูลใดๆ ที่รองรับการอัปเดตแบบมีเงื่อนไข (เปรียบเทียบและตั้งค่า) สิ่งสำคัญที่สุดคือชีวิตไม่ได้จบลงด้วยการคอมมิตแบบสองเฟส ธุรกรรมสามารถเพิ่มบนฐานข้อมูลใดก็ได้ - ที่ระดับแอปพลิเคชัน แต่โปรโตคอลที่แตกต่างกัน (2PC, Percolator, RAMP) มีการแลกเปลี่ยนที่แตกต่างกันและไม่ได้มอบให้เรา ฟรี.

อเล็กซี่ ซิโนเวียฟ - อัลกอริธึม ML บางส่วนไม่ได้จบลงในสวรรค์แบบกระจาย

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม อเล็กซี่ (ซาเลสลอว์) เป็นผู้บรรยายมายาวนานและเป็นสมาชิกของคณะกรรมการโครงการในการประชุมอื่นๆ ผู้ฝึกสอนที่ EPAM Systems และเป็นเพื่อนกับ Hadoop / Spark และข้อมูลขนาดใหญ่อื่นๆ ตั้งแต่ปี 2012

ในการพูดคุยนี้ Alexey จะพูดถึงปัญหาของการปรับอัลกอริทึมการเรียนรู้ของเครื่องแบบคลาสสิกสำหรับการดำเนินการแบบกระจายตามประสบการณ์ของเขากับ Apache Spark ML, Apache Mahout, Apache Flink ML และประสบการณ์ในการสร้าง Apache Ignite ML Alexey จะพูดคุยเกี่ยวกับการใช้อัลกอริทึม ML แบบกระจายในเฟรมเวิร์กเหล่านี้

และโดยสรุป รายงานสองฉบับจากยานเดกซ์เกี่ยวกับฐานข้อมูลยานเดกซ์

วลาดิสลาฟ คุซเนตซอฟ — ฐานข้อมูล Yandex - วิธีที่เราให้การยอมรับข้อผิดพลาด

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Vladislav เป็นนักพัฒนาที่ Yandex ในกลุ่มแพลตฟอร์มแบบกระจาย Yandex Database เป็น DBMS ที่ปรับขนาดตามแนวนอน กระจายตามพื้นที่ และทนทานต่อข้อผิดพลาด ซึ่งสามารถทนต่อความล้มเหลวของดิสก์ เซิร์ฟเวอร์ แร็ค และศูนย์ข้อมูลโดยไม่สูญเสียความสม่ำเสมอ เพื่อให้แน่ใจว่ามีความทนทานต่อข้อผิดพลาด จึงมีการใช้อัลกอริธึมที่เป็นเอกฉันท์แบบกระจายที่เป็นกรรมสิทธิ์ รวมถึงโซลูชันทางเทคนิคจำนวนหนึ่ง ซึ่งจะกล่าวถึงในรายละเอียดในรายงาน รายงานนี้อาจเป็นที่สนใจของทั้งนักพัฒนา DBMS และผู้พัฒนาโซลูชันที่ใช้ตาม DBMS

เซมยอน เชเชรินดา - การทำธุรกรรมแบบกระจายใน YDB

หัวไฮดร้า 19 หัว ภาพรวมที่ดีของโปรแกรม Semyon เป็นนักพัฒนาในกลุ่มแพลตฟอร์มแบบกระจายที่ Yandex ซึ่งทำงานเกี่ยวกับความเป็นไปได้ในการใช้การติดตั้ง YDB แบบหลายผู้เช่า

Yandex Database ได้รับการออกแบบมาสำหรับการสืบค้น OLTP และตรงตามข้อกำหนดของกรดสำหรับระบบธุรกรรม ในรายงาน เราจะพิจารณาอัลกอริทึมการตั้งเวลาธุรกรรมที่อยู่ภายใต้ระบบธุรกรรม YDB มาวิเคราะห์กันว่าหน่วยงานใดมีส่วนร่วมในการทำธุรกรรม ใครเป็นผู้กำหนดคำสั่งซื้อสากลให้กับธุรกรรม การทำธุรกรรมในระดับปรมาณู ความน่าเชื่อถือ และระดับการแยกตัวที่เข้มงวดเป็นอย่างไร ใช้ตัวอย่างของงานทั่วไป ลองพิจารณาการดำเนินธุรกรรมโดยใช้การกระทำแบบสองเฟสและธุรกรรมที่กำหนดขึ้น มาหารือเกี่ยวกับความแตกต่างของพวกเขา

ทำอะไรต่อไป

โปรแกรมการประชุมยังคงเต็มไปด้วยรายงานใหม่ๆ โดยเฉพาะอย่างยิ่ง เราคาดหวังรายงานจาก นิกิต้า โควัล (เอ็นโควาล) จาก JetBrains และ โอเล็ก อนาสตาซีเยฟ (m0nstermind) จาก Odnoklassniki Nikita ทำงานเกี่ยวกับอัลกอริทึมสำหรับ coroutines ในทีม Kotlin และ Oleg พัฒนาสถาปัตยกรรมและโซลูชันสำหรับระบบที่มีโหลดสูงในแพลตฟอร์ม Odnoklassniki นอกจากนี้ยังมีช่องว่างตามเงื่อนไขอีก 1 ช่องพร้อมผู้สมัครที่คณะกรรมการโครงการกำลังดำเนินการอยู่

การประชุม Hydra จะจัดขึ้นในวันที่ 11-12 กรกฎาคมที่เซนต์ปีเตอร์สเบิร์ก ตั๋วสามารถ ซื้อบนเว็บไซต์อย่างเป็นทางการ. ให้ความสนใจกับความพร้อมใช้งานของตั๋วออนไลน์ - หากคุณไม่สามารถไปเซนต์ปีเตอร์สเบิร์กได้ด้วยเหตุผลบางประการในปัจจุบัน

เจอกันที่ไฮดรา!

ที่มา: will.com

เพิ่มความคิดเห็น