Ang isang distributed system sa pinakasimpleng kahulugan nito ay isang pangkat ng mga computer na nagtutulungan na lumalabas bilang isa sa end user. Ang mga makina ay nagbabahagi ng isang karaniwang estado, tumatakbo nang sabay-sabay, at maaaring gumana nang hiwalay nang hindi naaapektuhan ang oras ng paggana ng buong system. Ang katotohanan ay ang pamamahala sa gayong mga sistema ay isang kumplikadong paksang puno ng mga pitfalls.
Pangkalahatang-ideya ng system
Pinapayagan ng distributed system ang pagbabahagi ng mga mapagkukunan (kabilang ang software) na konektado sa network nang sabay.
Mga halimbawa ng pamamahagi ng system:
- Tradisyonal na stack. Ang mga database na ito ay naka-imbak sa file system ng isang makina. Sa tuwing gustong makatanggap ng impormasyon ang user, direktang nakikipag-ugnayan siya sa makinang ito. Upang maipamahagi ang database system na ito, kailangan mong patakbuhin ito sa maraming PC nang sabay-sabay.
- Ibinahagi na arkitektura.
Nakabahaging sistemanagbibigay-daan sa iyo na mag-scale nang pahalang at patayo. Halimbawa, ang tanging paraan upang mahawakan ang mas maraming trapiko ay ang pag-upgrade ng hardware na nagpapatakbo ng database. Ito ay tinatawag na vertical scaling. Ang vertical scaling ay mabuti hanggang sa isang tiyak na limitasyon, pagkatapos nito kahit na ang pinakamahusay na kagamitan ay hindi makayanan ang pagbibigay ng kinakailangang trapiko.
Ang pag-scale nang pahalang ay nangangahulugan ng pagdaragdag ng higit pang mga computer, hindi pag-upgrade ng hardware sa isa. Pinapataas ng vertical scaling ang performance sa pinakabagong mga kakayahan ng hardware sa mga distributed system. Ang mga pagkakataong ito ay hindi sapat para sa mga kumpanya ng teknolohiya na may katamtaman hanggang sa mabibigat na workload. Ang pinakamagandang bagay tungkol sa pahalang na pag-scale ay walang mga limitasyon sa laki. Kapag bumaba ang performance, nagdaragdag lang ng isa pang makina, na, sa prinsipyo, ay maaaring gawin nang walang katapusan.
Sa antas ng korporasyon, ang isang distributed control system ay kadalasang nagsasangkot ng iba't ibang hakbang. Sa mga proseso ng negosyo sa pinaka mahusay na mga lugar ng network ng computer ng enterprise. Halimbawa, sa isang tipikal na pamamahagi gamit ang isang three-tier distributed system model, ang pagpoproseso ng data ay ginagawa sa isang PC sa lokasyon ng user, ang pagpoproseso ng negosyo ay ginagawa sa isang malayong computer, at ang pag-access sa database at pagpoproseso ng data ay ginagawa sa isang ganap na naiibang computer. na nagbibigay ng sentralisadong access para sa maraming negosyo. mga proseso. Kadalasan, ang ganitong uri ng distributed computinggumagamit ng modelo ng pakikipag-ugnayan ng client-server.
Mga Pangunahing Gawain
Ang mga pangunahing gawain ng isang distributed control system ay kinabibilangan ng:
- Transparency - Makamit ang isang imahe ng system nang hindi itinatago ang lokasyon, pag-access, paglipat, concurrency, failover, relocation, pagtitiyaga at mga detalye ng mapagkukunan sa mga user.
- Pagiging bukas - pinapasimple ang pag-setup at mga pagbabago sa network.
- Reliability - Kung ikukumpara sa iisang control system, dapat itong maaasahan, pare-pareho at may mataas na posibilidad na magkaroon ng mga error sa pag-mask.
- Performance - Kung ikukumpara sa ibang mga modelo, ang mga distributed na modelo ay nagbibigay ng pagpapalakas ng performance.
- Scalable - Dapat na scalable ang mga distributed control system na ito sa mga tuntunin ng teritoryo, pangangasiwa, o laki.
Ang mga gawain ng mga sistema ng pamamahagi ay kinabibilangan ng:
- Ang seguridad ay isang malaking isyu sa isang distributed na kapaligiran, lalo na kapag gumagamit ng mga pampublikong network.
- Fault tolerance - maaaring maging mahirap kapag ang modelo ay ginawa gamit ang mga hindi mapagkakatiwalaang bahagi.
- Koordinasyon at pamamahagi ng mga mapagkukunan - maaaring maging mahirap kung walang wastong protocol o kinakailangang mga patakaran.
Nakabahaging computing environment
Ang (DCE) ay isang malawakang ginagamit na pamantayan sa industriya na sumusuporta sa naturang distributed computing. Sa Internet, nag-aalok ang mga third-party na provider ng ilang mga generic na serbisyo,na akma sa modelong ito.
Ang Grid computing ay isang modelo ng computing na may distributed architecture ng malaking bilang ng mga computer na nauugnay sa paglutas ng isang kumplikadong problema. Sa modelo ng grid computing, ang mga server o personal na computer ay nagsasagawa ng mga independiyenteng gawain at maluwag na nakakonekta sa isa't isa sa pamamagitan ng Internet o mga mababang-bilis na network.
Ang pinakamalaking proyekto sa grid computing ay SETI@home, kung saan ang mga indibidwal na may-ari ng computer ay nagboluntaryo na gawin ang ilan sa kanilang multitasking processing cycles gamit ang kanilang computer para sa Search for Extraterrestrial Intelligence (SETI) na proyekto. Ang problema sa computer na ito ay gumagamit ng libu-libong mga computer upang mag-download at maghanap ng data ng radio telescope.
Ang isa sa mga unang paggamit ng grid computing ay upang sirain ang cryptographic code ng isang pangkat na kilala ngayon bilang distributed.net. Inilalarawan din ng pangkat na ito ang kanilang modelo bilang distributed computing.
Pag-scale ng database
Ang pagkalat ng bagong impormasyon mula sa master patungo sa alipin ay hindi nangyayari kaagad. Sa katunayan, mayroong isang window ng oras kung saan maaari kang makakuha ng hindi napapanahong impormasyon. Kung hindi ito ang kaso, ang pagganap ng pagsulat ay magdurusa, dahil ang mga distributed system ay kailangang maghintay nang sabay-sabay para sa data na magpalaganap. May kaunting kompromiso ang mga ito.
Paggamit ng diskarte sa database ng alipin, posibleng i-scale out ang read traffic sa ilang lawak. Mayroong maraming mga pagpipilian dito. Ngunit kailangan mo lamang na hatiin ang pagsulat ng trapiko sa ilanmga server dahil hindi nito kayang hawakan ito. Ang isang paraan ay ang paggamit ng multi-master na diskarte sa pagtitiklop. Doon, sa halip na mga alipin, mayroong ilang pangunahing node na sumusuporta sa pagbabasa at pagsusulat.
Ang isa pang paraan ay tinatawag na sharding. Sa pamamagitan nito, nahahati ang server sa ilang mas maliliit na server, na tinatawag na shards. Ang mga shards na ito ay may iba't ibang mga entry, ang mga panuntunan ay nilikha tungkol sa kung aling mga entry ang napupunta sa kung aling shard. Napakahalaga na lumikha ng gayong panuntunan na ang data ay ibinahagi nang pantay-pantay. Ang isang posibleng diskarte dito ay ang pagtukoy ng mga saklaw ayon sa ilang impormasyon sa talaan.
Ang shard key na ito ay dapat na maingat na piliin, dahil ang pagkarga ay hindi palaging katumbas ng mga base ng mga arbitrary na column. Ang tanging shard na nakakakuha ng mas maraming kahilingan kaysa sa iba ay tinatawag na hotspot, at sinusubukan nilang pigilan itong mabuo. Kapag nahati, ang data ng pag-recalibrate ay magiging napakamahal at maaaring magresulta sa makabuluhang downtime.
Database consensus algorithm
Mahirap ipatupad ang DB sa mga distributed security system dahil hinihiling ng mga ito ang bawat node na makipag-ayos sa tamang interrupt o gumawa ng aksyon. Ang kalidad na ito ay kilala bilang consensus at isang pangunahing problema sa pagbuo ng isang sistema ng pamamahagi. Ang pagkamit ng uri ng kasunduan na kailangan para sa "commit" na problema ay simple kung ang mga prosesong kasangkot at ang network ay ganap na maaasahan. Gayunpaman, ang mga tunay na sistema ay napapailalim sa isang bilang ngposibleng mga pagkabigo ng mga proseso ng networking, nawala, nasira o na-duplicate na mga mensahe.
Nagdudulot ito ng problema at hindi masisiguro na ang tamang pinagkasunduan ay maaabot sa loob ng limitadong panahon sa isang hindi mapagkakatiwalaang network. Sa pagsasagawa, may mga algorithm na nakakaabot ng consensus sa halip na mabilis sa isang hindi mapagkakatiwalaang network. Talagang nagbibigay si Cassandra ng mga magaan na transaksyon sa pamamagitan ng paggamit ng Paxos algorithm para sa distributed consensus.
Nakabahagi na computing ang susi sa pagdagsa ng malaking pagpoproseso ng data na ginamit sa mga nakalipas na taon. Ito ay isang paraan ng paghiwa-hiwalay ng malaking gawain, tulad ng pinagsama-samang 100 bilyong rekord, kung saan walang isang computer ang kayang gawin ang halos anumang bagay sa sarili nitong, sa maraming mas maliliit na gawain na maaaring magkasya sa isang makina. Hinahati ng developer ang kanyang malaking gawain sa mas maliliit na gawain, ginagawa ang mga ito sa maraming machine nang magkatulad, kinokolekta ang data nang naaangkop, pagkatapos ay malulutas ang orihinal na problema.
Ang diskarteng ito ay nagbibigay-daan sa iyong mag-scale nang pahalang - kapag may malaking gawain, magdagdag lang ng higit pang mga node sa pagkalkula. Ang mga gawaing ito ay ginampanan ng maraming taon ng modelo ng programming ng MapReduce na nauugnay sa pagpapatupad para sa parallel processing at pagbuo ng malalaking set ng data gamit ang isang distributed algorithm sa isang cluster.
Sa kasalukuyan, ang MapReduce ay medyo luma na at nagdudulot ng ilang problema. Ang iba pang mga arkitektura ay lumitaw na tumutugon sa mga isyung ito. Namely, Lambda Architecture para sa ipinamahagimga sistema ng pagpoproseso ng daloy. Ang mga pag-unlad sa lugar na ito ay nagdala ng mga bagong tool: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.
File storage at replication system
Nakabahagi na mga file system ay maaaring ituring na mga distributed data store. Ito ay kapareho ng konsepto - pag-iimbak at pag-access ng malaking halaga ng data sa isang kumpol ng mga makina na iisang entity. Karaniwang sumasabay ang mga ito sa Distributed Computing.
Halimbawa, ang Yahoo ay kilala sa pagpapatakbo ng HDFS sa mahigit 42,000 node upang mag-imbak ng 600 petabytes ng data mula noong 2011. Tinutukoy ng Wikipedia ang pagkakaiba sa naipamahagi na mga file system na nagbibigay-daan sa pag-access ng file gamit ang parehong mga interface at semantika gaya ng mga lokal na file, sa halip na sa pamamagitan ng custom na API gaya ng Cassandra Query Language (CQL).
Ang Hadoop Distributed File System (HDFS) ay isang system na ginagamit para sa pag-compute sa imprastraktura ng Hadoop. Laganap, ginagamit ito upang mag-imbak at magtiklop ng malalaking file (laki ng GB o TB) sa maraming makina. Ang arkitektura nito ay pangunahing binubuo ng NameNodes at DataNodes.
Ang NameNodes ay may pananagutan sa pag-imbak ng metadata tungkol sa cluster, gaya ng kung aling node ang naglalaman ng mga block ng file. Gumaganap sila bilang mga network coordinator, na nag-iisip kung saan pinakamahusay na mag-imbak at magkopya ng mga file, na sinusubaybayan ang kalusugan ng system. Ang DataNodes ay nag-iimbak lamang ng mga file at nagsasagawa ng mga utos tulad ng pagtitiklop ng file, bagong pagsusulat, atiba pa.
Hindi nakakagulat, ang HDFS ay pinakamahusay na ginagamit sa Hadoop para sa computing, dahil nagbibigay ito ng kaalaman sa impormasyon sa gawain. Ang mga tinukoy na trabaho ay tatakbo sa mga node na nag-iimbak ng data. Nagbibigay-daan ito sa iyong gamitin ang lokasyon ng data - ino-optimize ang mga kalkulasyon at binabawasan ang dami ng trapiko sa network.
Ang Interplanetary File System (IPFS) ay isang kapana-panabik na bagong peer-to-peer protocol/network para sa distributed file system. Gamit ang teknolohiyang Blockchain, ipinagmamalaki nito ang ganap na desentralisadong arkitektura na walang iisang may-ari o punto ng pagkabigo.
Ang IPFS ay nag-aalok ng sistema ng pagbibigay ng pangalan (katulad ng DNS) na tinatawag na IPNS at nagbibigay-daan sa mga user na madaling makuha ang impormasyon. Iniimbak nito ang file sa pamamagitan ng makasaysayang bersyon, katulad ng ginagawa ng Git. Nagbibigay-daan ito sa pag-access sa lahat ng nakaraang estado ng file. Dumadaan pa rin ito sa mabigat na pag-unlad (v0.4 sa oras ng pagsulat) ngunit nakakita na ng mga proyektong interesado sa pagbuo nito (FileCoin).
Messaging system
Ang Messaging system ay nagbibigay ng isang sentral na lokasyon para sa pag-iimbak at pamamahagi ng mga mensahe sa loob ng isang karaniwang system. Nagbibigay-daan sa iyo ang mga ito na paghiwalayin ang logic ng application mula sa direktang komunikasyon sa ibang mga system.
Kilalang sukat - Ang Kafka cluster ng LinkedIn ay nagpoproseso ng 1 trilyong mensahe bawat araw na may pinakamataas na 4.5 milyong mensahe bawat segundo.
Sa madaling salita, gumagana ang platform ng pagmemensahe tulad nito:
- Mensaheipinasa mula sa application na posibleng lumikha nito, na tinatawag na producer, napupunta sa platform, at binabasa mula sa maraming application, na tinatawag na mga consumer.
- Kung kailangan mong mag-imbak ng isang partikular na kaganapan sa maraming lugar, gaya ng paggawa ng user para sa isang database, storage, serbisyo sa pagpapadala ng email, kung gayon ang platform ng pagmemensahe ang pinakamalinis na paraan para ipamahagi ang mensaheng iyon.
May ilang sikat na top-notch messaging platform.
Ang RabbitMQ ay isang message broker na nagbibigay-daan sa iyong mas i-fine-tune ang kontrol ng kanilang mga trajectory gamit ang mga panuntunan sa pagruruta at iba pang madaling i-configure na mga parameter. Matatawag itong "matalinong" broker dahil marami itong lohika at mahigpit na sinusubaybayan ang mga mensaheng dumadaan dito. Nagbibigay ng mga opsyon para sa mga AP at CP mula sa CAP.
Ang Kafka ay isang message broker na medyo hindi gaanong gumagana dahil hindi nito sinusubaybayan kung aling mga mensahe ang nabasa at hindi pinapayagan ang kumplikadong routing logic. Nakakatulong ito na makamit ang kamangha-manghang pagganap at kinakatawan ang pinakamalaking pangako sa espasyong ito sa aktibong pagbuo ng mga distributed system ng open-source na komunidad at ang suporta ng Confluent team. Ang Kafka ay pinakasikat sa mga high-tech na kumpanya.
Mga Application sa Pakikipag-ugnayan sa Machine
Ang distribution system na ito ay isang pangkat ng mga computer na nagtutulungan upang lumabas bilang isang hiwalay na computer sa end user. Ang mga makinang ito ay nasa pangkalahatang kondisyon, gumaganasabay-sabay at maaaring gumana nang nakapag-iisa nang hindi naaapektuhan ang uptime ng buong system.
Kung isasaalang-alang mo ang database bilang ipinamahagi, kung ang mga node ay nakikipag-ugnayan sa isa't isa upang i-coordinate ang kanilang mga aksyon. Sa kasong ito, tulad ng isang application na nagpapatakbo ng internal code nito sa isang peer-to-peer network at nauuri bilang isang distributed application.
Mga halimbawa ng naturang mga application:
- Known Scale - BitTorrent swarm 193,000 node para sa Game of Thrones episode.
- Basic register technology ng mga distributed Blockchain system.
Ang mga distributed ledger ay maaaring ituring na isang hindi nababago, application-only na database na ginagaya, naka-synchronize, at nakabahagi sa lahat ng node sa distribution network.
Ang kilalang sukat - ang Ethereum network - ay mayroong 4.3 milyong transaksyon bawat araw noong Enero 4, 2018. Ginagamit nila ang pattern ng Event Sourcing, na nagbibigay-daan sa iyong ibalik ang estado ng database anumang oras.
Ang Blockchain ay ang kasalukuyang pinagbabatayan na teknolohiya na ginagamit para sa mga distributed ledger at talagang minarkahan ang kanilang simula. Ang pinakabago at pinakamalaking inobasyon na ito sa distributed space ay lumikha ng unang tunay na ipinamahagi na protocol ng pagbabayad, bitcoin.
Ang Blockchain ay isang distributed ledger na may nakaayos na listahan ng lahat ng transaksyon na naganap sa network nito. Ang mga deal ay pinagsama-sama at naka-imbak sa mga bloke. Ang buong blockchain ay mahalagang isang naka-link na listahan ng mga bloke. Mga Tinukoy na Blockay mahal upang lumikha at mahigpit na pinagsama sa isa't isa sa pamamagitan ng cryptography. Sa madaling salita, ang bawat bloke ay naglalaman ng isang espesyal na hash (na nagsisimula sa X bilang ng mga zero) ng mga nilalaman ng kasalukuyang bloke (sa anyo ng isang Merkle tree) kasama ang hash ng nakaraang bloke. Ang hash na ito ay nangangailangan ng maraming CPU power.
Mga halimbawa ng mga distributed operating system
Lalabas ang mga uri ng system sa user dahil ang mga ito ay mga system ng solong user. Ibinabahagi nila ang kanilang memorya, disk, at ang user ay walang problema sa pag-navigate sa data. Ang gumagamit ay nag-iimbak ng isang bagay sa kanyang PC at ang file ay naka-imbak sa maraming lokasyon i.e. nakakonektang mga computer upang madaling mabawi ang nawalang data.
Mga halimbawa ng mga distributed operating system:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (Apache server).
Kung ang anumang computer ay nag-boot nang mas mataas, iyon ay, kung maraming mga kahilingan ang ipinagpapalit sa pagitan ng mga indibidwal na PC, ito ay kung paano nangyayari ang pagbalanse ng load. Sa kasong ito, ang mga kahilingan ay pinalaganap sa kalapit na PC. Kung ang network ay nagiging mas load, maaari itong palawakin sa pamamagitan ng pagdaragdag ng higit pang mga system sa network. Naka-synchronize ang network file at mga folder at ginagamit ang mga convention sa pagbibigay ng pangalan para walang error na mangyari kapag nakuha ang data.
Ginagamit din ang Caching kapag nagmamanipula ng data. Ang lahat ng mga computer ay gumagamit ng parehong namespace upang pangalanan ang mga file. Peroang file system ay may bisa para sa bawat computer. Kung may mga update sa file, ito ay isinusulat sa isang computer at ang mga pagbabago ay ipapalaganap sa lahat ng mga computer, kaya ang file ay mukhang pareho.
Ang mga file ay naka-lock sa panahon ng proseso ng pagbabasa/pagsusulat, kaya walang deadlock sa pagitan ng iba't ibang mga computer. Nagaganap din ang mga session, gaya ng pagbabasa, pagsusulat ng mga file sa isang session at pagsasara ng session, at pagkatapos ay magagawa rin ng isa pang user at iba pa.
Mga pakinabang ng paggamit ng
Isang operating system na idinisenyo upang gawing mas madali ang pang-araw-araw na buhay ng mga tao. Para sa mga benepisyo at pangangailangan ng user, ang operating system ay maaaring iisang user o ibinahagi. Sa isang distributed resource system, maraming computer ang konektado sa isa't isa at nagbabahagi ng kanilang mga mapagkukunan.
Mga pakinabang ng paggawa nito:
- Kung ang isang PC sa naturang system ay may sira o nasira, isa pang node o computer ang mag-aasikaso dito.
- Madaling maidagdag ang higit pang mapagkukunan.
- Ang mga mapagkukunan gaya ng mga printer ay maaaring maghatid ng maraming computer.
Ito ay isang maikling tungkol sa sistema ng pamamahagi, kung bakit ito ginagamit. Ilang mahahalagang bagay na dapat tandaan: kumplikado ang mga ito at pinili para sa sukat at presyo at mas mahirap gamitin. Ang mga system na ito ay ipinamamahagi sa ilang mga kategorya ng imbakan: computing, file at mga sistema ng pagmemensahe, mga rehistro, mga aplikasyon. At ang lahat ng ito ay napakababaw lamang tungkol sa isang kumplikadong sistema ng impormasyon.