Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Sa a se yon kontinyasyon nan yon istwa long sou chemen litijyeu nou an nan kreye yon sistèm pwisan, gwo chaj ki asire operasyon an nan echanj la. Premye pati a isit la: habr.com/en/post/444300

Erè misterye

Apre anpil tès, yo te mete ajou sistèm nan komès ak netwaye, epi nou te rankontre yon ensèk sou ki nou te kapab ekri yon istwa detektif-mistik.

Yon ti tan apre lansman sou sèvè prensipal la, youn nan tranzaksyon yo te trete ak yon erè. Sepandan, tout bagay te byen sou sèvè backup la. Li te tounen soti ke yon senp operasyon matematik nan kalkile ekspozan an sou sèvè prensipal la te bay yon rezilta negatif nan agiman reyèl la! Nou te kontinye rechèch nou an, epi nan rejis SSE2 a nou te jwenn yon diferans nan yon ti jan, ki responsab pou awondi lè w ap travay ak nimewo k ap flote.

Nou te ekri yon itilite tès senp pou kalkile ekspozan an ak seri ti jan awondi a. Li te tounen soti ke nan vèsyon an nan RedHat Linux ke nou te itilize, te gen yon ensèk nan travay ak fonksyon an matematik lè yo te mete ti kras nan malere. Nou rapòte sa a RedHat, apre yon ti tan nou te resevwa yon plak nan men yo epi woule li soti. Erè a pa te fèt ankò, men li pa t klè ki kote ti sa a te soti? Fonksyon an te responsab pou li fesetround soti nan lang C. Nou analize ak anpil atansyon kòd nou an nan rechèch nan sipoze erè a: nou tcheke tout sitiyasyon posib; gade tout fonksyon ki itilize awondi; te eseye repwodui yon sesyon ki echwe; itilize diferan konpilateur ak opsyon diferan; Yo te itilize analiz estatik ak dinamik.

Pa ka jwenn kòz erè a.

Lè sa a, yo te kòmanse tcheke pyès ki nan konpitè: yo te fè tès chaj nan processeurs yo; tcheke RAM la; Nou menm te fè tès pou senaryo a trè fasil nan yon erè milti-bit nan yon sèl selil. San anyen.

Nan fen a, nou rete sou yon teyori ki soti nan mond lan nan fizik gwo enèji: kèk patikil ki gen gwo enèji te vole nan sant done nou an, pèse miray ka a, frape processeur a epi li te lakòz latch la deklanche kole nan ti kras sa a. Teyori absid sa a te rele "neutrino". Si ou se lwen fizik patikil: neutrinos prèske pa kominike ak mond lan deyò, epi yo sètènman pa kapab afekte operasyon an nan processeur la.

Piske li pa t posib pou jwenn kòz echèk la, yo te retire sèvè a "ofanse" nan operasyon jis nan ka.

Apre kèk tan, nou te kòmanse amelyore sistèm nan backup cho: nou prezante sa yo rele "rezèv cho" (cho) - kopi asynchrone. Yo te resevwa yon kouran tranzaksyon ki ta ka lokalize nan sant done diferan, men chofe pa t 'aktivman kominike ak lòt sèvè.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Poukisa sa te fèt? Si sèvè a backup echwe, Lè sa a, cho mare nan sèvè prensipal la vin nouvo backup la. Sa vle di, apre yon echèk, sistèm nan pa rete ak yon sèl sèvè prensipal jouk nan fen sesyon an komès.

Epi lè yo te teste nouvo vèsyon sistèm lan epi li te mete an fonksyon, erè awondi a te fèt ankò. Anplis, ak ogmantasyon nan kantite serveurs cho, erè a te kòmanse parèt pi souvan. An menm tan an, vandè a pa te gen anyen pou montre, paske pa te gen okenn prèv konkrè.

Pandan analiz kap vini an nan sitiyasyon an, yon teyori leve ke pwoblèm nan ta ka gen rapò ak OS la. Nou te ekri yon pwogram senp ki rele yon fonksyon nan yon bouk kontinuèl fesetround, sonje eta aktyèl la ak tcheke li nan dòmi, epi sa a se fè nan anpil fil konpetisyon. Lè w fin chwazi paramèt yo pou dòmi ak kantite fil, nou te kòmanse toujou repwodui echèk la ti jan apre apeprè 5 minit nan kouri sèvis piblik la. Sepandan, sipò Red Hat pa t 'kapab repwodui li. Tès lòt serveurs nou yo te montre ke se sèlman moun ki gen sèten processeurs yo sansib a erè a. An menm tan an, chanje nan yon nouvo nwayo rezoud pwoblèm nan. Nan fen a, nou tou senpleman ranplase eksplwatasyon an, ak kòz la vre nan ensèk la rete klè.

Epi toudenkou ane pase a te pibliye yon atik sou Habré "Ki jan mwen jwenn yon ensèk nan processeurs Intel Skylake" Sitiyasyon ki dekri nan li a te sanble anpil ak nou an, men otè a te pran ankèt la pi lwen epi li te pwopoze yon teyori ke erè a te nan mikrokod la. Epi lè nwayo Linux yo mete ajou, manifaktirè yo tou mete ajou mikrokod la.

Pli lwen devlopman nan sistèm nan

Malgre ke nou te debarase m de erè a, istwa sa a te fòse nou rekonsidere achitekti sistèm lan. Apre yo tout, nou pa te pwoteje kont repetisyon nan pinèz sa yo.

Prensip sa yo te fòme baz pou pwochen amelyorasyon nan sistèm rezèvasyon an:

  • Ou pa ka fè pèsonn konfyans. Sèvè yo ka pa fonksyone byen.
  • Rezèvasyon majorite.
  • Asire konsansis. Kòm yon adisyon lojik nan rezèvasyon majorite.
  • Doub echèk posib.
  • Vitalite. Nouvo konplo sibstiti cho a pa ta dwe pi mal pase anvan an. Komès ta dwe kontinye san enteripsyon jiska dènye sèvè a.
  • Ti ogmantasyon nan latansi. Nenpòt D' implique gwo pèt finansye.
  • Minim entèraksyon rezo pou kenbe latansi pi ba ke posib.
  • Chwazi yon nouvo sèvè mèt an segonn.

Okenn nan solisyon yo disponib sou mache a te adapte nou, ak pwotokòl Raft la te toujou nan anfans li, kidonk nou te kreye pwòp solisyon nou an.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Rezo

Anplis sistèm rezèvasyon an, nou te kòmanse modènize entèraksyon rezo a. Sou-sistèm I/O a te gen anpil pwosesis, ki te gen pi move enpak sou jitter ak latansi. Ak dè santèn de pwosesis manyen koneksyon TCP, nou te fòse yo toujou ap chanje ant yo, ak sou yon echèl mikrosgond sa a se yon operasyon olye tan konsome. Men, pati ki pi mal la se ke lè yon pwosesis te resevwa yon pake pou trete, li voye li nan yon sèl keu SystemV epi li tann pou yon evènman ki soti nan yon lòt keu SystemV. Sepandan, lè gen yon gwo kantite nœuds, arive yon nouvo pake TCP nan yon pwosesis ak resi done nan keu la nan yon lòt reprezante de evènman konpetisyon pou OS la. Nan ka sa a, si pa gen okenn processeur fizik ki disponib pou tou de travay yo, yo pral trete youn, epi yo pral mete dezyèm lan nan yon keu datant. Li enposib predi konsekans yo.

Nan sitiyasyon sa yo, yo ka itilize kontwòl priyorite pwosesis dinamik, men sa pral mande pou itilize apèl sistèm ki gen anpil resous. Kòm yon rezilta, nou chanje nan yon sèl fil lè l sèvi avèk epoll klasik, sa a anpil ogmante vitès la ak redwi tan an pwosesis tranzaksyon. Nou menm tou nou te debarase m de pwosesis kominikasyon rezo separe ak kominikasyon atravè SystemV, siyifikativman redwi kantite apèl sistèm ak te kòmanse kontwole priyorite yo nan operasyon yo. Sou subsistèm I/O pou kont li, li te posib pou konsève pou apeprè 8-17 mikrosgond, tou depann de senaryo a. Konplo yon sèl-threaded sa a te itilize san okenn chanjman depi lè sa a; yon sèl fil epoll ak yon maj se ase pou sèvis tout koneksyon.

Pwosesis Tranzaksyon

Chaj k ap grandi sou sistèm nou an te mande pou amelyore prèske tout eleman li yo. Men, malerezman, stagnation nan kwasans lan nan vitès revèy processeur nan dènye ane yo pa te fè li posib ankò echèl pwosesis tèt-sou. Se poutèt sa, nou deside divize pwosesis motè a nan twa nivo, ak pi okipe nan yo se sistèm nan tcheke risk, ki evalye disponiblite a nan lajan nan kont yo ak kreye tranzaksyon yo tèt yo. Men, lajan ka nan diferan lajan, epi li te nesesè yo konnen sou ki baz yo ta dwe pwosesis la nan demann ap divize.

Solisyon lojik la se divize li pa lajan: yon sèvè echanj an dola, yon lòt nan liv, ak yon tyè nan ero. Men, si, ak yon konplo sa yo, de tranzaksyon yo voye yo achte diferan lajan, Lè sa a, pwoblèm nan desenkronizasyon bous ap parèt. Men, senkronizasyon se difisil ak chè. Se poutèt sa, li ta kòrèk separeman pa bous ak separeman pa enstriman. By wout la, pi fò echanj oksidantal yo pa gen travay la nan tcheke risk osi byen ke nou fè, kidonk pi souvan sa a se fè offline. Nou te bezwen aplike verifikasyon sou entènèt.

Ann eksplike ak yon egzanp. Yon komèsan vle achte $ 30, epi demann lan ale nan validation tranzaksyon: nou tcheke si machann vann sa a gen dwa nan mòd komès sa a epi si li gen dwa ki nesesè yo. Si tout bagay nan lòd, demann lan ale nan sistèm verifikasyon risk la, i.e. pou tcheke sifizans lajan pou konkli yon tranzaksyon. Gen yon nòt ke kantite lajan ki nesesè yo bloke kounye a. Lè sa a, demann lan voye bay sistèm komès la, ki apwouve oswa dezapwouve tranzaksyon an. Ann di tranzaksyon an apwouve - Lè sa a, sistèm verifikasyon risk la make ke lajan an debloke, ak rubles yo tounen dola.

An jeneral, sistèm pou tcheke risk la gen algoritm konplèks epi li fè yon gwo kantite kalkil ki gen anpil resous, epi li pa tou senpleman tcheke "balans kont lan", kòm li ta ka sanble nan premye gade.

Lè nou te kòmanse divize pwosesis motè a an nivo, nou te rankontre yon pwoblèm: kòd ki te disponib nan epòk sa a te itilize aktivman menm seri done nan etap validasyon ak verifikasyon, sa ki te mande pou reekri tout baz kòd la. Kòm yon rezilta, nou te prete yon teknik pou trete enstriksyon nan processeur modèn: chak nan yo divize an ti etap ak plizyè aksyon yo fèt an paralèl nan yon sèl sik.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Apre yon ti adaptasyon nan kòd la, nou te kreye yon tiyo pou pwosesis tranzaksyon paralèl, nan ki tranzaksyon an te divize an 4 etap nan tiyo a: rezo entèraksyon, validation, ekzekisyon ak piblikasyon rezilta a.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Ann gade yon egzanp. Nou gen de sistèm pwosesis, seri ak paralèl. Premye tranzaksyon an rive epi yo voye l pou validation nan tou de sistèm yo. Dezyèm tranzaksyon an rive imedyatman: nan yon sistèm paralèl li imedyatman pran travay, ak nan yon sistèm sekans li mete nan yon keu ap tann pou premye tranzaksyon an ale nan etap pwosesis aktyèl la. Sa vle di, avantaj prensipal la nan pwosesis tiyo se ke nou trete keu tranzaksyon an pi vit.

Men ki jan nou te vini ak sistèm ASTS+ la.

Se vre, se pa tout bagay ki tèlman lis ak transporteurs swa. Ann di nou gen yon tranzaksyon ki afekte etalaj done nan yon tranzaksyon vwazen; sa a se yon sitiyasyon tipik pou yon echanj. Yon tranzaksyon konsa pa ka egzekite nan yon tiyo paske li ka afekte lòt moun. Sitiyasyon sa a rele danje done, ak tranzaksyon sa yo tou senpleman trete separeman: lè tranzaksyon yo "vit" nan keu la fini, tiyo a sispann, sistèm nan trete tranzaksyon "ralanti" a, ak Lè sa a, kòmanse tiyo a ankò. Erezman, pwopòsyon tranzaksyon sa yo nan koule an jeneral piti anpil, kidonk tiyo a sispann tèlman raman ke li pa afekte pèfòmans jeneral.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Lè sa a, nou te kòmanse rezoud pwoblèm nan nan senkronize twa fil nan ekzekisyon. Rezilta a se te yon sistèm ki baze sou yon tanpon bag ak selil gwosè fiks yo. Nan sistèm sa a, tout bagay sijè a vitès pwosesis; done yo pa kopye.

  • Tout pake rezo fèk ap rantre yo antre nan etap alokasyon an.
  • Nou mete yo nan yon etalaj epi make yo kòm disponib pou etap #1.
  • Dezyèm tranzaksyon an rive, li disponib ankò pou etap No 1.
  • Premye fil pwosesis la wè tranzaksyon ki disponib yo, trete yo, epi li deplase yo nan pwochen etap la nan dezyèm fil pwosesis la.
  • Lè sa a, li trete premye tranzaksyon an ak drapo selil ki koresponn lan deleted - li disponib kounye a pou nouvo itilizasyon.

Tout keu la trete nan fason sa a.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Pwosesis chak etap pran inite oswa dè dizèn de mikrosgond. Men, si nou itilize rapid OS senkronizasyon estanda, Lè sa a, nou pral pèdi plis tan sou senkronizasyon nan tèt li. Se poutèt sa nou te kòmanse itilize spinlock. Sepandan, sa a se yon fòm trè move nan yon sistèm an tan reyèl, ak RedHat estrikteman pa rekòmande fè sa, kidonk nou aplike yon spinlock pou 100 ms, ak Lè sa a, chanje nan mòd semaphore elimine posiblite pou yon enpas.

Kòm yon rezilta, nou reyalize yon pèfòmans nan apeprè 8 milyon tranzaksyon pou chak segonn. Ak literalman de mwa pita nan Atik sou LMAX Disruptor nou te wè yon deskripsyon yon sikwi ak menm fonksyonalite a.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Koulye a, ta ka gen plizyè fil nan ekzekisyon nan yon etap. Tout tranzaksyon yo te trete youn pa youn, nan lòd yo te resevwa yo. Kòm yon rezilta, pik pèfòmans ogmante soti nan 18 mil a 50 mil tranzaksyon pou chak segonn.

Sistèm jesyon risk echanj

Pa gen okenn limit nan pèfeksyon, e byento nou te kòmanse modènizasyon ankò: nan kad ASTS+, nou te kòmanse deplase sistèm jesyon risk ak operasyon règleman nan eleman otonòm. Nou devlope yon achitekti modèn fleksib ak yon nouvo modèl risk yerarchize, epi nou te eseye sèvi ak klas la tout kote sa posib fixed_point olye pou yo double.

Men, yon pwoblèm imedyatman leve: ki jan yo senkronize tout lojik biznis ki te travay pou anpil ane epi transfere li nan nouvo sistèm nan? Kòm yon rezilta, premye vèsyon an nan pwototip nan nouvo sistèm nan te dwe abandone. Dezyèm vèsyon an, ki aktyèlman ap travay nan pwodiksyon, baze sou menm kòd la, ki travay nan tou de pati komès ak risk. Pandan devlopman, bagay ki pi difisil pou fè se te git fizyone ant de vèsyon. Kolèg nou an Evgeniy Mazurenok te fè operasyon sa a chak semèn e chak fwa li te madichon pou yon tan trè lontan.

Lè w ap chwazi yon nouvo sistèm, nou imedyatman te oblije rezoud pwoblèm nan nan entèraksyon. Lè w ap chwazi yon otobis done, li te nesesè pou asire ki estab ak latansi minimòm. Rezo InfiniBand RDMA te pi byen adapte pou sa: tan an mwayèn pwosesis se 4 fwa mwens pase nan rezo Ethernet 10 G. Men, sa ki vrèman kaptive nou se diferans lan nan percentiles - 99 ak 99,9.

Natirèlman, InfiniBand gen defi li yo. Premyèman, yon API diferan - ibverbs olye pou yo sipò. Dezyèmman, gen prèske pa gen solisyon messagerie sous louvri lajman disponib. Nou te eseye fè pwòp pwototip nou an, men li te vin trè difisil, kidonk nou te chwazi yon solisyon komèsyal - Confinity Low Latency Messaging (ansyen IBM MQ LLM).

Lè sa a, travay la nan byen divize sistèm nan risk leve. Si ou tou senpleman retire Risk Engine la epi ou pa kreye yon ne entèmedyè, Lè sa a, tranzaksyon ki soti nan de sous yo ka melanje.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Sa yo rele solisyon Ultra Low Latency yo gen yon mòd rekòmande: tranzaksyon ki soti nan de sous yo ka ranje nan lòd ki nesesè lè yo resevwa; sa a se aplike lè l sèvi avèk yon kanal separe pou echanj enfòmasyon sou lòd la. Men, nou poko sèvi ak mòd sa a: li konplike tout pwosesis la, ak nan yon kantite solisyon li pa sipòte ditou. Anplis de sa, chak tranzaksyon ta dwe asiyen timestamp korespondan, ak nan konplo nou an mekanis sa a se trè difisil aplike kòrèkteman. Se poutèt sa, nou itilize konplo klasik la ak yon koutye mesaj, se sa ki, ak yon dispatcher ki distribye mesaj ant Risk Engine la.

Dezyèm pwoblèm nan te gen rapò ak aksè kliyan: si gen plizyè Risk Gateways, kliyan an bezwen konekte ak chak nan yo, e sa pral mande pou chanjman nan kouch kliyan an. Nou te vle jwenn lwen sa a nan etap sa a, kidonk konsepsyon Risk Gateway aktyèl la trete tout kouran done yo. Sa a limite anpil debi maksimòm, men anpil senplifye entegrasyon sistèm lan.

Kopi

Sistèm nou an pa ta dwe gen yon sèl pwen echèk, se sa ki, tout eleman yo dwe kopi, ki gen ladan koutye mesaj la. Nou rezoud pwoblèm sa a lè l sèvi avèk sistèm CLLM la: li gen yon gwoup RCMS kote de dispatcher ka travay nan mòd mèt-esklav, epi lè youn echwe, sistèm nan otomatikman chanje nan lòt la.

Travay ak yon sant done backup

InfiniBand optimize pou operasyon kòm yon rezo lokal, se sa ki, pou konekte ekipman etajè-mòn, ak yon rezo InfiniBand pa ka mete ant de sant done distribye jeyografikman. Se poutèt sa, nou aplike yon pon / dispatcher, ki konekte ak depo mesaj la atravè rezo Ethernet regilye ak relè tout tranzaksyon yo nan yon dezyèm rezo IB. Lè nou bezwen emigre soti nan yon sant done, nou ka chwazi ki sant done yo travay avèk kounye a.

Rezilta

Tout sa ki anwo yo pa t 'fè nan yon fwa; li te pran plizyè iterasyon nan devlope yon nouvo achitekti. Nou te kreye pwototip nan yon mwa, men li te pran plis pase de ane pou jwenn li nan kondisyon travay. Nou te eseye reyalize pi bon konpwomi ant ogmante tan pwosesis tranzaksyon ak ogmante fyab sistèm.

Depi sistèm lan te mete ajou anpil, nou te aplike rekiperasyon done ki soti nan de sous endepandan. Si magazen mesaj la pa fonksyone kòrèkteman pou kèk rezon, ou ka pran jounal tranzaksyon an nan yon dezyèm sous - nan Risk Engine la. Prensip sa a obsève nan tout sistèm nan.

Pami lòt bagay, nou te kapab prezève API kliyan an pou ni koutye yo, ni okenn lòt moun pa ta mande siyifikatif retravay pou nouvo achitekti a. Nou te oblije chanje kèk interfaces, men pa te gen okenn bezwen fè chanjman enpòtan nan modèl la opere.

Nou te rele vèsyon aktyèl la nan platfòm nou an Rebus - kòm yon abrevyasyon pou de inovasyon ki pi aparan nan achitekti a, Risk Engine ak BUS.

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Okòmansman, nou te vle asiyen sèlman pati nan netwaye, men rezilta a se te yon gwo sistèm distribiye. Kliyan yo kapab kounye a kominike avèk swa Trade Gateway, Clearing Gateway, oswa toude.

Ki sa nou finalman reyalize:

Evolisyon nan achitekti nan sistèm nan komès ak netwaye nan Moskou Echanj la. Pati 2

Redwi nivo latansi a. Avèk yon ti volim tranzaksyon, sistèm nan travay menm jan ak vèsyon anvan an, men an menm tan an ka kenbe tèt ak yon chaj pi wo.

Pèfòmans pik ogmante de 50 mil a 180 mil tranzaksyon pou chak segonn. Yon ogmantasyon plis antrave pa kouran an sèlman nan matche lòd.

Gen de fason pou plis amelyorasyon: paralelize matche ak chanje fason li travay ak Gateway. Koulye a, tout Gateways opere dapre yon konplo replikasyon, ki, anba yon chaj konsa, sispann fonksyone nòmalman.

Finalman, mwen ka bay kèk konsèy bay moun ki finalize sistèm antrepriz:

  • Prepare pou pi mal la tout tan. Pwoblèm toujou rive san atann.
  • Anjeneral li enposib byen vit remake achitekti. Espesyalman si ou bezwen reyalize maksimòm fyab atravè plizyè endikatè. Plis nœuds, plis resous ki nesesè pou sipò.
  • Tout solisyon koutim ak pwopriyetè yo pral mande pou resous adisyonèl pou rechèch, sipò ak antretyen.
  • Pa sispann rezoud pwoblèm nan fyab sistèm ak rekiperasyon apre echèk; pran yo an kont nan premye etap konsepsyon an.

Sous: www.habr.com

Add nouvo kòmantè