Hacker News

Mmejuputa Zig – io_uring na Grand Central Dispatch std.Io rutere

Mmejuputa Zig – io_uring na Grand Central Dispatch std.Io rutere Nchọgharị a na-abanye n'ime io_uring, na-enyocha mkpa ya na mmetụta ọ nwere. Ekpuchiri echiche isi Isi ihe a na-enyocha: Ụkpụrụ bụ isi na...

9 min read Via ziglang.org

Mewayz Team

Editorial Team

Hacker News

Ọbá akwụkwọ ọkọlọtọ Zig eruola nnukwu ihe dị mkpa: nwa afọ io_uring na Grand Central Dispatch (GCD) backends maka std.Io abanyela n'ọchịchị, na-eweta arụmọrụ dị elu, I/O n'elu ikpo okwu-asynchronous asynchronous na otu n'ime mmemme ọgbara ọhụrụ na-ekwe nkwa. Maka ndị mmepe na-ewu akụrụngwa nke na-enye ike nyiwe azụmahịa nke ọgbọ na-abịa - dị ka sistemụ arụmọrụ 207-module n'azụ Mewayz - mmepe a na-egosi oge ọhụrụ nke arụmọrụ azụ azụ na scalability.

Gịnị bụ io_uring na gịnị kpatara o ji dị mkpa maka ngwa ọgbara ọhụrụ?

Ewebatara na Linux kernel 5.1, io_uring bụ ihe nrụmọrụ asynchronous I/O nke na-agbanwe n'ụzọ bụ isi ka ngwa si arụ ọrụ na sistemụ arụmọrụ. Ụdị I/O omenala na-amanye mmemme ime oku usoro onye ọ bụla maka ịgụ ma ọ bụ dee ọrụ ọ bụla - njem njem dị oke ọnụ nke na-ebelata arụmọrụ n'ogo. io_uring na-eji mgbanaka mgbanaka na-ekekọrịta n'etiti oghere ndị ọrụ na kernel dochie nke a, na-enye ohere ka ngwa nyefee ma mechaa ọtụtụ puku ọrụ I/O na obere ego.

Mmetụta bara uru dị egwu. Sava webụ, ọdụ data, na ikpo okwu SaaS nke na-ejikwa ọtụtụ puku njikọ na-emekọ ihe na-erite uru ozugbo site na mbelata CPU n'isi na obere latency. Maka ikpo okwu na-ejere ndị ọrụ 138,000 nọ n'ọrụ n'ofe modul 207 dị iche iche - faịlụ ọ bụla na-akpali akpali na-agụ, ajụjụ nchekwa data, na arịrịọ netwọk - ọdịiche dị n'etiti ihe nketa I/O na io_uring nwere ike ịtụgharị ozugbo n'ime nkwalite oge nzaghachi yana mbelata ọnụ ahịa akụrụngwa.

"io_uring bụ ihe ịrụ ụka adịghị ya na mgbakwunye kachasị dị ịrịba ama na Linux I/O n'ime afọ iri. Site n'iwepụ ihe ndị gbara gburugburu-switching overhead of traditional syscalls, ọ na-enyere onye ọrụ-ohere mmemme ịbịaru raw hardware throughput - a game-Changer maka ngwa ọ bụla ebe I/O bụ bottleneck."

Kedụ ka Grand Central Dispatch si dabara na akụkọ Zig std.Io?

Ọ bụ ezie na io_uring bụ Linux-kpọmkwem, Apple's Grand Central Dispatch (GCD) ejewo ogologo oge dị ka ihe nrịbama nke mbụ na usoro izipu ọrụ na macOS na iOS. GCD na-ewepụta njikwa eri ka ọ bụrụ ụdị kwụ n'ahịrị, na-ekwe ka sistemu arụ ọrụ nwee ike hazie ọrụ n'ofe cores CPU dị na-enweghị ndị nrụpụta na-eji aka na-ejikwa ọdọ mmiri eri.

Site n'itinye azụ azụ abụọ n'okpuru std.Io abstraction jikọtara ọnụ, ndị otu Zig enwetala ihe siri ike: otu async I/O API elu nke na-agbakọta na ala ala, idiomatic async primitives na ma Linux na nyiwe Apple. Nke a pụtara mmemme Zig nke edere megide std.Io na akpaghị aka na-etinye io_uring na sava Linux yana GCD na igwe mmepe macOS - yana alaka n'elu ikpo okwu efu na koodu ngwa.

Gịnị bụ ọnọdụ akụkọ ihe mere eme dị n'azụ njem I/O nke Zig's Async?

Ụzọ Zig gaa na akụkọ async kwụsiri ike abụwo nke ọma n'usoro. Ụdị asụsụ mbụ gụnyere ihe nnwale async/echere syntax nke emechara wepụrụ ka ndị otu ahụ tụgharịrị uche na nhazi ahụ. Kama itinye aka n'ụdị concurrency emebere n'ime ụtọ ụtọ asụsụ, ndị otu Zig core ahọrọla oyi akwa abstraction I/O na ọkwa ọba akwụkwọ - nke na-anọgide na-enwe ike iji usoro mmebe dị iche iche.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
Nkà ihe ọmụma a kwekọrọ n'ụkpụrụ ụkpụrụ nhazi sara mbara nke Zig: enweghị nchịkwa nchịkwa zoro ezo, oke n'ụzọ doro anya, na usoro ndị na-edepụta amụma. Ihe ngosi std.Io na-anọchite anya njedebe nke afọ arụmụka obodo, ihe nlere anya na nzaghachi ụwa n'ezie. Ndaghachi io_uring na GCD na-egosi mgbanwe site na nnwale gaa na mmepụta-njikere maka gburugburu ebe obibi async nke Zig.

Gịnị bụ Mmetụta bara uru maka akụrụngwa SaaS na Platform Azụmaahịa?

Maka otu na-ewu ma ọ bụ na-enyocha akụrụngwa azụ azụ maka nyiwe SaaS ọtụtụ ndị nwe ụlọ, akụkọ Zig io_uring nwere ọtụtụ ihe pụtara:

  • Ebelata ụgwọ ọrụ akụrụngwa:Mmepụta I/O dị elu maka nkesa ọ bụla pụtara igwe ole na ole achọrọ iji rụọ ọrụ nhata, na-emetụta mmefu igwe ojii ozugbo.
  • Amụma a na-atụghị anya ya n'ọ̀tụ̀tụ̀: Ụdị nrubeisi nke io_uring na-eme ka spikes latency na-emekarị n'okpuru nnukwu concurrency, na-eme ka ahụmịhe onye ọrụ gafee modul niile nke ikpo okwu.
  • Cross-platform developer tooling: Site na nkwado GCD, ndị mmepe na macOS nwere ike na-arụ otu mgbagha I/O na mpaghara nke na-ebuga na sava mmepụta Linux - na-emechi oghere dị ogologo na ịnwale ikwesị ntụkwasị obi.
  • Mwepụta sistemụ na-egosi n'ọdịnihu: Ka nkuchi io_uring na-etolite na ngwaọrụ ndị dị n'akụkụ (databases, proxies, runtimes), nkwado nwa afọ Zig na-etinye ya nke ọma maka ịme ya na gburugburu ebe obibi Linux ọgbara ọhụrụ.
  • Nchekwa nchekwa na-enweghị nchịkọta mkpofu: Ụdị nwe Zig na-ejikọta ụzọ abụọ na ikike io_uring's zero-demi maka njikwa nchekwa nke na-ewepụ ụdị ahụhụ niile na-ahụkarị na koodu netwọk-ọkwa sistemụ.

Olee Ụdị Ọdịnihu Ndị Mmepe Kwesịrị Ikiri Ka Usoro Ihe Elu A Na-agbasa?

Ndadata nke azụ azụ ndị a bụ mmalite, ọ bụghị njedebe. Ọtụtụ mmepe kwesịrị ka a na-enyocha ya nke ọma. Nke mbụ, gburugburu Zig ka na-eto eto gburugburu abstractions dị elu - sava HTTP, ndị ọkwọ ụgbọ ala nchekwa data, na usoro RPC nke e wuru na std.Io ga-ekpebi otú ngwa ngwa asụsụ si abanye n'ime mmepụta SaaS stacks. Nke abụọ, io_uring n'onwe ya na-aga n'ihu na-agbanwe; atụmatụ dị kaihe nchekwa a kapịrị ọnụ, ọrụ multishot, nantuli aka n'akụkụ kernelna-enye ụlọ ọrụ arụmọrụ agbakwunyere na azụ azụ Zig nwere ike ikpughe nke ọma. Nke atọ, dị ka WebAssembly runtimes na-esiwanye ikpughe WASI I/O interfaces, Zig's abstraction Layer dokwa ya ka o lekwasịrị anya na gburugburu ebe obibi ahụ, na-eme ka koodu sistemụ dee otu ugboro-agba ọsọ-ebe ọ bụla.

Maka nyiwe na-ebute ụzọ arụmọrụ arụmọrụ - dị ka Mewayz, nke na-akpakọ sistemu arụ ọrụ azụmahịa niile n'ime ndenye aha $19- $49 / ọnwa - akụrụngwa nkwalite ọkwa ọkwa a. Uru arụmọrụ ọ bụla na oyi akwa sistemu na-atụgharị gaa n'isi ụlọ maka njirimara ndị ọzọ, ọtụtụ ndị ọrụ na oke oke.

Ajụjụ a na-ajụkarị

Io_uring ọ dị mma iji na gburugburu mmepụta taa?

Ee. io_uring dị kemgbe Linux kernel 5.1 (2019) ma a na-ewere ya dị ka ọ kwụsiri ike maka iji mmepụta. Nnukwu ọrụ gụnyere Redis, RocksDB, na ọtụtụ sava netwọk dị elu nakweere ya. Mmejuputa Zig na-esote otu kernel interface ma dabara adaba maka nrụpụta ọrụ na nkesa Linux ọgbara ọhụrụ na-agba kernel 5.6 ma ọ bụ karịa maka nkwado njirimara zuru oke.

Akwesịrị m idegharị koodu Zig dị ugbu a iji jiri nkwado ndabere std.Io ọhụrụ?

Ọnweghị nnukwu idegharị achọrọ. Emebere interface std.Io ka ọ bụrụ oyi akwa abstraction kwụsiri ike - koodu ngwa edere megide ya ga-erite uru ozugbo na io_uring ma ọ bụ azụ GCD dabere na ebumnuche mkpokọta. Mgbalị mbugharị nke mbụ gụnyere imelite ụdị ngwa ọrụ Zig dị ugbu a nke gụnyere azụ azụ ndị a yana mezie koodu ọ bụla ejiribu syscalls I/O kpọmkwem n'elu ikpo okwu.

Kedu ka nke a si jiri tụnyere async I/O na Rust's Tokio ma ọ bụ Go's runtime?

Tokio na Linux na-ejikwa io_uring site na tokio-uring crate, n'agbanyeghị na ọ dị iche na oge ọsọ Tokio ndabara nke na-eji epoll. Oge ọsọ nke Go na-eji nhazi oge ya nwere I/O dabere na epoll. Ụzọ Zig dị iche na std.Io bụ mmetụ-mmetụta na ọkwa API - enweghị async/echere syntax - ebe ọ ka na-ezigara ndị primitives async n'okpuru mkpuchi. Nke a na-echekwa agụ ma na-ezere nsogbu "ọrụ agba" nke na-eme ka async rust codebases sie ike.


Ma ị bụ onye nrụpụta na-enyocha asụsụ mmemme sistemu maka ọrụ akụrụngwa gị na-esote ma ọ bụ onye nwe azụmaahịa na-achọ nyiwe arụnyere na teknụzụ dị mma, nke nwere ike ịgbatị, ọnọdụ ngwaọrụ dị ka Zig na-egosipụta ngbanwe sara mbara n'ebe arụmọrụ-mbụ ngwanrọ mbụ. A na-ewuMewayz n'otu ụkpụrụ a - na-ebuga modul azụmahịa 207 jikọtara ọnụ na ndị ọrụ 138,000 na ntakịrị ọnụ ahịa nke ikpokọta ngwaọrụ ndị yiri ya n'otu n'otu. Site na CRM na nyocha iji jikọta-in-bio na nnyefe nkuzi, OS azụmaahịa niile dị na-amalite na $19 / ọnwa. Malite nnwale gị n'efu na app.mewayz.com wee hụ ka nhazi ikpo okwu ọgbara ọhụrụ na nke ọma dị ka n'omume.