Lub rooj sib tham yuav muaj nyob rau lub Xya Hli 11-12 hauv St Hydra, mob siab rau txoj kev loj hlob ntawm parallel thiab faib tshuab. Qhov ua kom yuam kev ntawm Hydra yog tias nws sib sau ua ke cov kws tshawb fawb txias (uas feem ntau tuaj yeem pom tsuas yog hauv cov rooj sib tham txog kev tshawb fawb txawv teb chaws) thiab cov kws tshaj lij kws tshaj lij ua haujlwm rau hauv ib qho haujlwm loj ntawm kev sib tshuam ntawm kev tshawb fawb thiab kev xyaum.
Hydra yog ib qho ntawm peb lub rooj sib tham tseem ceeb tshaj plaws hauv ob peb xyoos dhau los. Nws tau ua ntej los ntawm kev npaj loj heev, xaiv cov neeg hais lus thiab cov lus ceeb toom. Lub lim tiam dhau los txog qhov no habro kev xam phaj tawm tuaj nrog tus thawj coj ntawm JUG.ru Group, Alexey Fedorov (23 deev).
Peb xa hais txog peb tus neeg tseem ceeb, tus tsim ntawm txoj kev xav ntawm kev faib tshuab - Leslie Lamport, Maurice Herlihy thiab Michael Scott. Nws yog lub sij hawm los tham kom meej ntxiv txog tag nrho cov kev pab cuam!
Kev Txhawb
Yog tias koj koom nrog hauv programming, ces ib txoj hauv kev los yog lwm qhov koj tab tom cuam tshuam nrog multithreading thiab faib xam. Cov kws tshaj lij hauv cov haujlwm tseem ceeb ua haujlwm nrog lawv ncaj qha, tab sis implicitly, kev faib tawm yog saib peb los ntawm txhua qhov chaw: hauv txhua lub khoos phis tawj lossis cov kev pabcuam xa tawm muaj qee yam uas ua rau kev suav ua ke.
Muaj ntau lub rooj sib tham uas hais txog ntau yam ntawm kev thov kev pab cuam. Nyob rau lwm sab ntawm lub spectrum, peb muaj cov tsev kawm ntawv tshwj xeeb scientific uas qhia ntau npaum li cas txoj kev xav nyob rau hauv cov lus qhuab qhia. Piv txwv li, nyob rau hauv parallel nrog Hydra nyob rau hauv St. Petersburg muaj SPTDC tsev kawm ntawv. Ntawm Hydra lub rooj sib tham, peb tau sim coj ua ke kev xyaum hnyav, kev tshawb fawb, thiab txhua yam ntawm lawv qhov kev sib tshuam.
Xav txog qhov no: peb nyob hauv lub sijhawm zoo kawg nkaus thaum koj tuaj yeem ntsib tus neeg tsim ntawm kev tshawb fawb thiab engineering uas peb kawm. Physicists yuav tsis ntsib Newton lossis Einstein - lub tsheb ciav hlau tau tawm mus. Tab sis nyob ib sab ntawm peb tseem nyob cov neeg uas tsim lub hauv paus ntawm txoj kev xav ntawm kev faib tshuab, tsim cov lus programming nrov, thiab thawj zaug embodied tag nrho cov no hauv kev ua haujlwm prototypes. Cov neeg no tsis tau tso lawv txoj haujlwm ib nrab, lawv tam sim no ua haujlwm rau cov teeb meem hauv ntiaj teb muaj npe nrov hauv cov tsev kawm qib siab thiab cov tuam txhab, thiab yog cov peev txheej loj tshaj plaws ntawm kev paub thiab kev paub niaj hnub no.
Ntawm qhov tod tes, lub sijhawm los ntsib lawv feem ntau tseem nyob hauv kev xav: ob peb ntawm peb tuaj yeem saib xyuas cov xwm txheej pej xeem ntawm qee lub Tsev Kawm Ntawv Qib Siab Rochester, thiab tom qab ntawd maj mus rau Tebchaws Meskas thiab rov qab mus rau kev qhuab qhia nrog Michael Scott. Kev mus ntsib txhua tus tswv cuab Hydra yuav raug nqi me me, tsis suav lub abyss ntawm lub sij hawm nkim sij hawm (txawm hais tias nws zoo li ib qho kev tshawb nrhiav nthuav).
Ntawm qhov tod tes, peb muaj ntau tus kws tshaj lij sab saum toj uas ua haujlwm ntawm cov teeb meem hauv kev faib tawm tam sim no, thiab lawv yeej muaj ntau yam qhia. Tab sis ntawm no yog qhov teeb meem - lawv ΡΠ°Π±ΠΎΡΠ°ΡΡ, thiab lawv lub sijhawm tseem ceeb heev. Yog lawm, yog tias koj yog ib tus neeg ua haujlwm ntawm Microsoft, Google lossis JetBrains, qhov tshwm sim ntawm kev sib ntsib ib tus neeg hais lus nto moo ntawm qhov kev tshwm sim sab hauv nce siab, tab sis feem ntau, tsis yog, qhov no tsis tshwm sim txhua hnub.
Ua li no, Hydra Conference ua tiav ib txoj hauj lwm tseem ceeb uas peb feem ntau ua tsis tau ntawm peb tus kheej - nyob rau hauv ib qho chaw thiab nyob rau hauv ib lub sij hawm, nws coj los ua ke cov neeg uas nws lub tswv yim los yog kev sib tham nrog leej twg tuaj yeem hloov koj lub neej. Kuv lees tias tsis yog txhua tus xav tau kev faib tawm lossis qee yam tseem ceeb. Koj tuaj yeem tsim CRUDs hauv PHP rau tag nrho koj lub neej thiab nyob twj ywm zoo siab. Tab sis leej twg xav tau nws, qhov no yog koj lub caij nyoog.
Tau ntev heev tau dhau los txij li thawj zaug tshaj tawm ntawm Hydra lub rooj sib tham ntawm Habre. Lub sijhawm no, ntau txoj haujlwm tau ua tiav - thiab tam sim no peb muaj cov npe ntawm yuav luag tag nrho cov lus ceeb toom. Tsis muaj qhov qeeb qeeb ib leeg-xov algorithms, tsuas yog muab faib ua nyuaj! Cia peb ua tiav nrog cov lus dav dav thiab saib seb peb muaj dab tsi ntawm peb txhais tes tam sim no.
Cov ntsiab lus tseem ceeb
Cov lus tseem ceeb pib thiab xaus rau hnub ntawm lub rooj sab laj. Feem ntau lub ntsiab lus ntawm lub ntsiab lus qhib yog los teeb tsa lub siab dav thiab kev coj ntawm lub rooj sab laj. Lub ntsiab lus tseem ceeb kaw tau kos ib kab thiab piav qhia seb peb yuav ua li cas nrog kev paub thiab kev txawj ntse tau txais thaum lub rooj sib tham. Qhov pib thiab qhov kawg: qhov tseem ceeb tshaj plaws, thiab feem ntau, tau nce qhov tseem ceeb.
Cliff yog ib zaj dab neeg hauv Java ntiaj teb. Nyob rau hauv lub lig 90s, rau nws PhD thesis, nws sau ib daim ntawv muaj cai "Combining Analyzes, Combining Optimizations", uas qee lub sijhawm tom qab dhau los ua lub hauv paus rau HotSpot JVM Server Compiler. Ob xyoos tom qab, nws twb tau ua haujlwm ntawm Sun Microsystems ntawm JVM thiab qhia tag nrho lub ntiaj teb tias JIT muaj txoj cai muaj nyob. Tag nrho zaj dab neeg no hais txog yuav ua li cas Java yog ib qho ntawm cov neeg ua haujlwm nrawm tshaj plaws niaj hnub nrog kev ua kom zoo tshaj plaws thiab nrawm tshaj plaws los ntawm Cliff Click. Thaum pib, nws tau ntseeg tias yog tias ib yam dab tsi nkag tau mus rau qhov zoo li qub compiler, koj tsis tas yuav sim jit nws. Ua tsaug rau kev ua haujlwm ntawm Cliff thiab pab neeg, txhua yam lus tshiab pib tsim nrog lub tswv yim ntawm JIT muab tso ua ke los ntawm lub neej ntawd. Tau kawg, qhov no tsis yog ib txoj haujlwm ib tug txiv neej, tab sis Cliff ua lub luag haujlwm tseem ceeb hauv nws.
Nyob rau hauv lub ntsiab lus qhib, Cliff yuav tham txog nws lwm qhov kev sim siab - H20, ib qho hauv-nco platform rau kev faib thiab scalable tshuab kawm rau kev siv tshuab. Los yog ntau precisely, hais txog kev faib cia ntawm tus yuam sij-tus nqi khub hauv nws. Qhov no yog qhov ceev ceev cia nrog ntau cov khoom nthuav (cov npe tseeb yog nyob rau hauv piav qhia), uas tso cai rau siv cov kev daws teeb meem zoo sib xws hauv kev ua lej ntawm cov ntaub ntawv loj streaming.
Michael Scott - Xib fwb ntawm Computer Science ntawm University of Rochester, uas txoj hmoo tau txuas nrog nws xa 34y, thiab ntawm nws lub tsev University of Wisconsin-Madison, nws tau ua tus thawj saib xyuas tau tsib xyoos. Nws tshawb fawb thiab qhia cov tub ntxhais kawm txog kev sib luag thiab faib cov programming thiab tsim hom lus.
Maurice Herlihy - tus yeej ntawm ob qhov khoom plig Dijkstra. Thawj qhov yog rau kev ua haujlwm "Tos-Free Synchronization" (Brown University), thiab qhov thib ob, tsis ntev los no - "Transactional Memory: Architectural Support for Lock-Free Data Structures" (Virginia Tech University). Qhov khoom plig Dijkstra lees paub txog kev ua haujlwm uas nws qhov tseem ceeb thiab qhov cuam tshuam tau pom tsawg kawg kaum xyoo, thiab Maurice yog ib tus kws tshaj lij tshaj plaws hauv kev ua haujlwm. Tam sim no nws ua hauj lwm ua ib tug xib fwb ntawm Brown University thiab muaj cov kab lus ntev ntawm cov kev ua tiav.
Hauv cov lus tseem ceeb kaw no, Maurice yuav tham txog txoj kev xav thiab kev coj ua ntawm blockchain faib tshuab los ntawm qhov pom ntawm cov classics ntawm kev faib xam thiab yuav ua li cas nws yooj yim rau ntau yam teeb meem. Qhov no yog ib daim ntawv qhia tshwj xeeb rau lub ntsiab lus ntawm lub rooj sib tham - tsis yog txhua yam hais txog mining hype, tab sis hais txog yuav ua li cas peb cov kev paub yuav siv tau zoo heev thiab tsim nyog nyob rau hauv kev sib raug zoo nrog ntau yam dej num.
Thaum Lub Xya Hli 2017, Maurice twb tuaj rau tebchaws Russia mus kawm SPTDC lub tsev kawm ntawv, koom nrog JUG.ru kev sib ntsib, thiab cov ntaub ntawv kaw tseg tuaj yeem pom hauv YouTube:
Txoj haujlwm tseem ceeb
Tom ntej no yuav muaj cov ntsiab lus luv luv ntawm cov ntawv ceeb toom suav nrog hauv qhov program. Qee cov ntawv ceeb toom tau piav qhia ntawm no kom ntxaws, lwm qhov luv luv. Cov lus piav qhia ntev mus feem ntau yog cov ntaub ntawv hais lus Askiv uas yuav tsum tau txuas mus rau cov ntaub ntawv tshawb fawb, cov ntsiab lus ntawm Wikipedia, thiab lwm yam. Daim ntawv teev tag nrho muaj saib ntawm lub rooj sib tham lub vev xaib. Cov npe ntawm lub vev xaib yuav raug hloov kho thiab ntxiv.
Pedro ua haujlwm ntawm Cisco thiab tau tsim cov txheej txheem sib npaug rau kaum xyoo dhau los lossis yog li ntawd, suav nrog cov txheej txheem synchronization, kaw-dawb thiab tos-dawb cov ntaub ntawv qauv thiab txhua yam koj tuaj yeem xav txog ntawm lub ncauj lus no. Nws txoj kev tshawb fawb tam sim no thiab engineering nyiam tsom mus rau Universal Constructions, Software Transactional Memory, Persistent Memory thiab cov thev naus laus zis zoo sib xws uas ua kom muaj tseeb, scalable thiab ua txhaum kev zam. Nws kuj yog tus sau ntawm blog uas paub dav hauv cov voj voog nqaim Concurrency Freaks.
Feem ntau cov ntawv thov kev sib txuas tam sim no khiav ntawm cov ntaub ntawv sib luag, los ntawm kev siv cov kab lus sib txuas ntawm cov neeg ua yeeb yam mus rau cov ntaub ntawv teev cov qauv hauv cov khw muag khoom tseem ceeb. Lawv tau ua haujlwm tiav hauv Java JDK tau ntau xyoo, thiab lawv tau maj mam ntxiv rau C ++.
Txoj hauv kev yooj yim tshaj plaws los siv cov ntaub ntawv sib luag yog ib qho kev ua tiav (ib leeg-xov) uas siv cov txheej txheem tiv thaiv los ntawm mutexes. Qhov no siv tau rau txhua lub Rau Hli, tab sis muaj teeb meem pom tseeb nrog kev ntsuas thiab kev ua haujlwm. Nyob rau tib lub sijhawm, cov ntaub ntawv kaw-dawb thiab tos-dawb cov ntaub ntawv tsis tsuas yog tiv thaiv tau zoo dua nrog cov kev ua yuam kev, tab sis kuj muaj qhov kev ua tau zoo dua - txawm li cas los xij, lawv txoj kev loj hlob yuav tsum muaj kev txawj ntse tob thiab hloov mus rau ib daim ntawv thov tshwj xeeb. Ib txoj kab tsis raug cai yog txaus los rhuav tshem txhua yam.
Peb yuav ua li cas thiaj ua tau kom txawm tias ib tus neeg tsis muaj kev txawj ntse tuaj yeem tsim thiab siv cov ntaub ntawv zoo li no? Nws yog lub npe hu hais tias ib tug sequential algorithm yuav ua tau xov zoo siv los yog universal tsim, los yog kev hloov pauv kev nco. Rau ib yam, lawv tuaj yeem txo qhov cuam tshuam rau kev nkag mus rau kev daws qhov teeb meem no. Txawm li cas los xij, ob qho kev daws teeb meem feem ntau ua rau kev siv tsis zoo. Pedro yuav tham txog yuav ua li cas lawv tswj kom ua cov qauv no zoo dua thiab koj tuaj yeem siv lawv li cas rau koj cov algorithms.
Alex yog tus kws tshaj lij database thiab khaws cia, thiab tseem ceeb tshaj rau peb, tus neeg ua haujlwm hauv Cassandra. Tam sim no nws tab tom ua haujlwm ntawm phau ntawv, Database Internals, nrog O'Reilly.
Rau systems nrog kev sib raug zoo (nyob rau hauv Lavxias teb sab terminology - "qhov kawg sib xws"), tom qab lub node crashes los yog ib tug network sib cais, koj yuav tsum tau daws cov teeb meem nram qab no: los yog txuas ntxiv mus ua raws li kev thov, txi raws li, los yog tsis kam coj lawv thiab txi muaj. Nyob rau hauv xws li ib tug system, pawg pawg, sib tshooj subsets ntawm nodes thiab xyuas kom meej tias tsawg kawg ib node muaj tus nqi tsis ntev los no, yuav yog ib tug zoo ntug daws. Koj tuaj yeem muaj sia nyob tsis ua haujlwm thiab poob ntawm kev sib txuas rau qee qhov nodes thaum tseem teb nrog cov txiaj ntsig tshiab kawg.
Txawm li cas los xij, txhua yam muaj nws tus nqi. Cov txheej txheem rov ua dua pawg pawg txhais tau hais tias muaj cov nqi khaws cia ntau ntxiv: cov ntaub ntawv rov ua dua yuav tsum tau muab khaws cia ntawm ntau lub nodes ib zaug kom ntseeg tau tias muaj cov ntawv luam txaus thaum muaj teeb meem tshwm sim. Nws hloov tawm hais tias koj tsis tas yuav khaws tag nrho cov ntaub ntawv ntawm tag nrho cov replicas. Koj tuaj yeem txo qhov load ntawm qhov chaw cia yog tias koj khaws cov ntaub ntawv tsuas yog ntawm ib feem ntawm cov nodes, thiab siv cov nodes tshwj xeeb (Transient Replica) rau kev ua haujlwm tsis ua haujlwm.
Dmitry yog tus tsim tawm ntawm Google ua haujlwm ntawm kev ntsuas dynamic rau C / C ++ thiab Mus - Chaw Nyob / Memory / ThreadSanitizer, thiab cov cuab yeej zoo sib xws rau Linux kernel. Pab txhawb rau Mus rau lub sijhawm teem sijhawm goroutine, tus neeg pov npav hauv lub network, thiab tus neeg khaws khib nyiab sib npaug. Nws yog tus kws tshaj lij hauv multithreading, tus sau ntawm lub kaum os tshiab uas tsis yog thaiv cov algorithms thiab yog tus tswv ntawm Black Belt Intel.
Tam sim no me ntsis txog daim ntawv qhia nws tus kheej. Cov lus Go muaj kev txhawb nqa ib txwm muaj rau kev sib txuas lus hauv daim ntawv goroutines (lub teeb threads) thiab raws (FIFO queues). Cov txheej txheem no ua rau nws yooj yim heev thiab txaus siab rau cov neeg siv los sau cov ntawv thov niaj hnub ntau txoj xov, thiab nws zoo li khawv koob. Raws li peb nkag siab, tsis muaj khawv koob ntawm no. Nyob rau hauv no hais lus, Dmitry yuav delve rau hauv intricacies ntawm lub Go teem sij hawm thiab qhia cov secrets ntawm kev siv no "magic". Ua ntej, nws yuav muab cov ntsiab lus ntawm cov khoom tseem ceeb ntawm tus teem sijhawm thiab qhia koj seb nws ua haujlwm li cas. Tom ntej no, peb yuav ua tib zoo saib ntawm tus kheej yam xws li lub tswv yim nres tsheb / unparking thiab tuav thaiv kev hu xov tooj. Thaum kawg, Dmitry yuav tham me ntsis txog kev txhim kho tuaj yeem ua rau tus teem sijhawm.
Dmitry tau ua haujlwm nyob rau hauv outsourcing yuav luag 9 xyoo yam tsis tau poob kev sib cuag nrog lub tsev kawm ntawv thiab lub zej zog kev tshawb fawb. Kev tsom xam cov ntaub ntawv loj hauv Odnoklassniki tau los ua rau nws lub sijhawm tshwj xeeb los ua ke kev cob qhia theoretical thiab kev tshawb fawb lub hauv paus nrog kev txhim kho cov khoom tiag tiag, hauv kev xav tau.
Kev txheeb xyuas cov duab faib tau thiab tseem yog ib txoj haujlwm nyuaj: thaum nws tsim nyog kom tau txais cov ntaub ntawv hais txog kev sib txuas ntawm cov vertex nyob sib ze, cov ntaub ntawv feem ntau yuav tsum tau xa mus rau ntawm cov tshuab, uas ua rau kom muaj sijhawm ua tiav thiab thauj khoom ntawm lub network infrastructure. Hauv kev hais lus no, peb yuav pom tias koj tuaj yeem tau txais kev ua haujlwm tseem ceeb los ntawm kev siv cov ntaub ntawv muaj txiaj ntsig lossis qhov tseeb zoo li qhov sib luag ntawm cov duab phooj ywg hauv kev sib raug zoo. Tag nrho cov no tau piav qhia nrog cov qauv code hauv Apache Spark.
Semyon yog tus tsim tawm hauv pawg faib platform ntawm Yandex, ua haujlwm ntawm qhov muaj peev xwm siv ntau tus neeg xauj tsev ntawm YDB kev teeb tsa.
Yandex Database yog tsim los rau OLTP cov lus nug thiab ua raws li ACID cov cai rau kev hloov pauv. Hauv tsab ntawv tshaj tawm no, peb yuav txiav txim siab txog kev teem sijhawm sib pauv hloov pauv uas cuam tshuam txog YDB kev hloov pauv. Cia peb saib seb cov koom haum twg koom nrog hauv kev lag luam, leej twg muab kev txiav txim thoob ntiaj teb rau kev lag luam, yuav ua li cas kev hloov pauv atomicity, kev ntseeg siab, thiab qib nruj ntawm kev sib cais ua tiav. Siv ib qho teeb meem ua piv txwv, cia peb saib kev ua lag luam siv ob-theem commits thiab txiav txim siab muas. Cia peb tham txog lawv qhov sib txawv.
Yuav ua li cas yog tom ntej no?
Qhov kev pab cuam lub rooj sab laj tseem muaj cov ntaub ntawv tshiab. Tshwj xeeb, peb cia siab tias yuav muaj tsab ntawv ceeb toom los ntawm Nikita Koob (ndkoval ua) los ntawm JetBrains thiab Oleg Anastasyev (m0n xav) los ntawm lub tuam txhab Odnoklassniki. Nikita ua hauj lwm ntawm algorithms rau coroutines nyob rau hauv pab neeg Kotlin, thiab Oleg tsim architecture thiab kev daws teeb meem rau high-load systems nyob rau hauv lub Odnoklassniki platform. Tsis tas li ntawd, muaj 1 qhov chaw khoob ntxiv, pawg neeg ua haujlwm tau ua haujlwm nrog cov neeg sib tw rau nws tam sim no.
Lub rooj sib tham Hydra yuav muaj nyob rau lub Xya Hli 11-12 hauv St. Daim pib muaj yuav ntawm lub vev xaib official. Thov xyuam xim rau qhov muaj daim pib Online - yog vim li cas koj tsis tuaj yeem mus rau St. Petersburg hnub no.