Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 12132|Atbildi: 1

[Paziņojums] Izpratne par BIO un NIO

[Kopēt saiti]
Publicēts 17.05.2019 15:34:50 | | |

Anotācija: BIO un NIO izpratne
Nesen es, iespējams, apskatīju ZooKeeper un Mina avota kodu un atklāju, ka tie abi ir ieviesti Java NIO, tāpēc ir nepieciešams noskaidrot, kas ir NIO. Šis ir mans kopsavilkums, kas balstīts uz tiešsaistes informāciju, lai ietaupītu laiku, es uzzīmēju diagrammu nejauši, ja vien varu sasniegt nozīmi.

Ievads:
BIO: sinhronā bloķēšana IO, servera ieviešanas režīms ir savienot vienu pavedienu vienlaikus, tas ir, kad klientam ir savienojuma pieprasījums, serverim ir jāsāk pavediens apstrādei, ja šis savienojums neko nedara, radīs nevajadzīgu pavedienu, protams, to var uzlabot, izmantojot pavedienu baseina mehānismu.
NIO: sinhrons nebloķējošs IO, servera ieviešanas režīms ir viens pieprasījums katram pavedienam, tas ir, klienta nosūtītais savienojuma pieprasījums tiks reģistrēts multiplekserā, un multipleksers sāks pavedienu apstrādei, kad savienojumam ir I/O pieprasījums.
AIO (NIO.2): asinhrons nebloķējošs IO, servera ieviešanas režīms ir efektīvi pieprasīt vienu pavedienu, un klienta I/O pieprasījumus vispirms aizpilda OS un pēc tam paziņo servera lietojumprogrammai, lai sāktu pavedienu apstrādei.

BIO
Sinhronā bloķēšana IO, es uzskatu, ka visi, kas ir iemācījušies operētājsistēmas tīkla programmēšanu vai jebkuru valodu tīkla programmēšanu, ir pazīstami, kamēr cilpā serveris izsauks pieņemšanas metodi, lai gaidītu saņemošā klienta savienojuma pieprasījumu, tiklīdz ir saņemts savienojuma pieprasījums, šajā sakaru ligzdā var izveidot sakaru ligzdu lasīšanas un rakstīšanas operācijām, šobrīd tas vairs nevar saņemt citus klienta savienojuma pieprasījumus, var gaidīt tikai operācijas izpildi ar pašlaik pievienoto klientu.
Ja BIO vēlas, lai vienlaikus varētu apstrādāt vairākus klienta pieprasījumus, tai ir jāizmanto vairāku pavedienu, tas ir, katru reizi, kad tiek pieņemti bloki, gaida klienta pieprasījumu, tiklīdz ir saņemts savienojuma pieprasījums, tiek izveidota sakaru ligzda un tiek atvērts jauns pavediens, lai apstrādātu šīs ligzdas datu lasīšanas un rakstīšanas pieprasījumu, un pēc tam nekavējoties turpiniet pieņemt un gaidīt citus klienta savienojuma pieprasījumus, tas ir, katram klienta savienojuma pieprasījumam tiek izveidots pavediens, kas jāapstrādā atsevišķi, shēma, iespējams, ir šāda:
C:/Users/kevin/AppData/Local/YNote/data/kevinsir2003@163.com/8107c3f773ad4d2aa1a5a476e650ef84/094528_zqyy.jpeg

Lai gan serverim šobrīd ir augsta vienlaicīgība, tas ir, tas vienlaikus var apstrādāt vairākus klientu pieprasījumus, tas rada problēmu, palielinoties atvērto pavedienu skaitam, tas patērēs pārāk daudz atmiņas resursu, izraisot servera palēnināšanos vai pat avāriju, un NIO zināmā mērā var atrisināt šo problēmu.

NIO
Sinhronas nebloķējošas IO atslēga ir pieņemt notikumu virzītu ideju, lai ieviestu multiplekseru.
Lielākā atšķirība starp NIO un BIO ir tā, ka jums ir jāatver tikai pavediens, lai apstrādātu IO notikumus no vairākiem klientiem.
Tas ir multipleksers, kas var klausīties IO notikumus no vairākiem klientiem:
A. Ja serveris uzklausa klienta savienojuma pieprasījumu, tas izveidos tam sakaru ligzdu (kanāls Java) un pēc tam atgriezīsies, lai turpinātu klausīšanos.
B. Ja serveris klausās datus, kas nosūtīti no klienta, kas ir izveidojis sakaru ligzdu, tas izsauks atbilstošo saskarni, lai apstrādātu saņemtos datus, un, ja vienlaikus ir vairāki klienti, datus var apstrādāt arī pēc kārtas.
C. Klausieties vairāku klientu savienojuma pieprasījumus un saņemiet datu pieprasījumus, kā arī klausieties, kad jums ir jānosūta dati.
C:/Users/kevin/AppData/Local/YNote/data/kevinsir2003@163.com/41709898aa0a4f8a830d7c348ed05fbb/094528_of9c.jpeg


Īsāk sakot, vienā pavedienā jūs varat izsaukt multipleksēšanas interfeisu (atlasiet java), lai vienlaikus bloķētu un klausītos IO pieprasījumus no vairākiem klientiem, un, tiklīdz ir saņemts IO pieprasījums, tiks izsaukta atbilstošā funkcija, lai to apstrādātu.

Attiecīgie pielietojuma scenāriji
Šajā brīdī jūs, iespējams, esat pamanījuši, ka, tiklīdz tiek saņemts pieprasījums (neatkarīgi no tā, vai tas ir vairāki vienlaicīgi vai tikai viens), tiks izsaukta atbilstošā IO apstrādes funkcija, lai to apstrādātu, tādēļ:
(1) NIO ir piemērots scenāriju apstrādei ar lielu savienojumu skaitu, bet savienojumi ir salīdzinoši īsi (viegla darbība), piemēram, Jetty, Mina, ZooKeeper utt., Kas visi tiek īstenoti, pamatojoties uz java nio.
(2) BIO metode ir piemērota scenārijiem, kad savienojumu skaits ir salīdzinoši mazs un fiksēts, kas prasa lielus servera resursus un ir ierobežots ar lietojumprogrammām.





Iepriekšējo:Atšķirība starp ajax un axios un fetch
Nākamo:Atvērtā koda darbu plānošanas sistēma Quartz
Publicēts 21.05.2019 19:32:33 |
Iemācieties mācīties
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com