RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean

Tha fulangas sgàinidhean agus ruigsinneachd àrd nan cuspairean mòra, agus mar sin bheir sinn artaigilean air leth gu RabbitMQ agus Kafka. Tha an artaigil seo mu dheidhinn RabbitMQ, agus tha an ath fhear mu dheidhinn Kafka, an taca ri RabbitMQ. Is e artaigil fada a tha seo, mar sin dèan thu fhèin comhfhurtail.

Bheir sinn sùil air na ro-innleachdan fulangas locht, cunbhalachd, agus ruigsinneachd àrd (HA) agus na malairtidhean a bhios gach ro-innleachd a’ dèanamh. Faodaidh RabbitMQ ruith air cruinneachadh de nodan - agus an uairsin tha e air a chomharrachadh mar shiostam sgaoilte. Nuair a thig e gu siostaman sgaoilte, bidh sinn gu tric a’ bruidhinn mu sheasmhachd agus ruigsinneachd.

Tha na bun-bheachdan sin a’ mìneachadh mar a bhios siostam gan giùlan fhèin nuair a dh’fhailicheas e. Fàilligeadh ceangal lìonraidh, fàilligeadh an fhrithealaiche, fàiligeadh draibh cruaidh, dìth frithealaiche ri fhaighinn gu sealach mar thoradh air cruinneachadh sgudail, call pacaid, no slaodadh ceangail lìonraidh. Faodaidh seo uile leantainn gu call dàta no còmhstri. Tha e a ’tionndadh a-mach gu bheil e cha mhòr do-dhèanta siostam a chuir suas a tha an dà chuid gu tur cunbhalach (gun chall dàta, gun sgaradh dàta) agus a tha ri fhaighinn (gabhaidh ri leughadh agus sgrìobhadh) airson a h-uile suidheachadh fàilligeadh.

Chì sinn gu bheil cunbhalachd agus ruigsinneachd air gach taobh den speactram, agus feumaidh tu taghadh dè an dòigh as fheàrr. Is e an deagh naidheachd gu bheil an roghainn seo comasach le RabbitMQ. Tha an seòrsa luamhan “nerdy” agad gus an cothromachadh a ghluasad gu barrachd cunbhalachd no barrachd ruigsinneachd.

Bheir sinn aire shònraichte do na rèiteachaidhean a dh’ adhbhraicheas call dàta mar thoradh air clàran dearbhte. Tha sreath de dhleastanas eadar foillsichearan, brocairean agus luchd-cleachdaidh. Cho luath ‘s a thèid an teachdaireachd a chuir chun broker, is e an obair aige gun a bhith a’ call an teachdaireachd. Nuair a dh’ aithnicheas am broker gun d’ fhuair am foillsichear an teachdaireachd, chan eil sinn an dùil gun tèid a chall. Ach chì sinn gum faod seo tachairt dha-rìribh a rèir an rèiteachadh broker is foillsichear agad.

Prìomhachasan Seasmhachd Nòd Singilte

Ciudha / slighe seasmhach

Tha dà sheòrsa ciudha ann an RabbitMQ: seasmhach agus neo-sheasmhach. Tha a h-uile ciudha air a shàbhaladh ann an stòr-dàta Mnesia. Bithear ag ath-sanasachd ciudhaichean seasmhach aig toiseach tòiseachaidh nód agus mar sin mairidh iad ath-thòiseachadh, tubaistean siostam, no tubaistean frithealaiche (fhad ‘s a mhaireas an dàta). Tha seo a’ ciallachadh fhad ‘s a dhearbhas tu gu bheil slighe (iomlaid) agus ciudha tapaidh, gun till am bun-structar ciudha / slighe air ais air-loidhne.

Thèid ciudhaichean luaineach agus slighe a thoirt air falbh nuair a thèid an nód ath-thòiseachadh.

Teachdaireachdan seasmhach

Dìreach air sgàth ‘s gu bheil ciudha seasmhach chan eil sin a’ ciallachadh gum mair a h-uile teachdaireachd aige bho ath-thòiseachadh nód. Chan eil ach teachdaireachdan air an suidheachadh leis an fhoillsichear mar tapaidh (leanmhainn). Bidh teachdaireachdan leantainneach a 'cruthachadh luchd a bharrachd air a' bhròcair, ach ma tha call teachdaireachd neo-iomchaidh, chan eil roghainn eile ann.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 1. Matrix seasmhachd

A’ cruinneachadh le sgàthan ciudha

Gus a bhith beò le call broker, feumaidh sinn call dreuchd. Is urrainn dhuinn grunn nodan RabbitMQ a chur còmhla ann am brabhsair, agus an uairsin call obrach a bharrachd a chuir ris le bhith ag ath-aithris ciudhaichean eadar ioma nodan. San dòigh seo, ma dh’ fhailicheas aon nód, cha chaill sinn dàta agus bidh sinn fhathast ri fhaighinn.

Sgàthan ciudha:

  • aon phrìomh ciudha (maighstir), a gheibh a h-uile òrdugh sgrìobhaidh is leughaidh
  • aon sgàthan no barrachd a gheibh a h-uile brath agus meata-dàta bhon phrìomh ciudha. Chan eil na sgàthanan sin ann airson sgèileadh, ach dìreach airson call obrach.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 2. Sgàthan ciudha

Tha sgàthan air a shuidheachadh leis a’ phoileasaidh iomchaidh. Ann, faodaidh tu an co-èifeachd mac-samhail a thaghadh agus eadhon na nodan air am bu chòir an ciudha a bhith suidhichte. Eisimpleirean:

  • ha-mode: all
  • ha-mode: exactly, ha-params: 2 (aon mhaighstir agus aon sgàthan)
  • ha-mode: nodes, ha-params: rabbit@node1, rabbit@node2

Dearbhadh foillsichear

Gus clàradh cunbhalach a choileanadh, tha feum air Dearbhadh Foillsichear. Às aonais, tha cunnart ann gun tèid teachdaireachdan a chall. Thèid dearbhadh a chuir chun fhoillsichear às deidh don teachdaireachd a bhith air a sgrìobhadh gu diosc. Bidh RabbitMQ a’ sgrìobhadh teachdaireachdan gu diosc chan ann nuair a gheibhear iad, ach bho àm gu àm, timcheall air ceudan milliseconds. Nuair a thèid ciudha a nochdadh, cha tèid aithne a chuir a-steach ach às deidh a h-uile sgàthan an leth-bhreac den teachdaireachd aca a sgrìobhadh gu diosc. Tha seo a’ ciallachadh gu bheil cleachdadh dearbhaidhean a’ cur ri latency, ach ma tha tèarainteachd dàta cudromach, tha feum orra.

Ciudha failover

Nuair a sguireas broker no a thuiteas e, bidh a h-uile stiùiriche ciudha (maighstirean) air an nód sin a’ tuiteam còmhla ris. Bidh an cruinneachadh an uairsin a’ taghadh an sgàthan as sine de gach maighstir agus ga bhrosnachadh mar mhaighstir ùr.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 3. Ioma ciudha mar sgàthan agus am poileasaidhean

Tha Broker 3 a ’dol sìos. Thoir an aire gu bheil sgàthan Ciudha C air Broker 2 ga bhrosnachadh gu bhith na mhaighstir. Thoir an aire cuideachd gun deach sgàthan ùr a chruthachadh airson Ciudha C air Broker 1. Bidh RabbitMQ an-còmhnaidh a’ feuchainn ris a’ bhàillidh mac-samhail a tha air a shònrachadh anns na poileasaidhean agad a chumail suas.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 4. Broker 3 a 'fàilligeadh, ag adhbharachadh ciudha C fàilligeadh

Bidh an ath Broker 1 a 'tuiteam! Chan eil againn ach aon broker air fhàgail. Tha sgàthan Ciudha B air a bhrosnachadh gu bhith na mhaighstir.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Fig. 5

Tha sinn air Broker 1 a thilleadh. A dh'aindeoin dè cho math 'sa tha an dàta air a bhith beò bho chall agus faighinn air ais a' bhròcair, thèid a h-uile teachdaireachd ciudha le sgàthan a thoirt air falbh nuair a thèid ath-thòiseachadh. Tha seo cudromach a thoirt fa-near oir bidh buaidhean ann. Bheir sinn sùil air na buaidhean sin a dh’ aithghearr. Mar sin tha Broker 1 a-nis na bhall den bhuidheann a-rithist, agus bidh am buidheann a’ feuchainn ri cumail ris na poileasaidhean agus mar sin a’ cruthachadh sgàthan air Broker 1.

Anns a 'chùis seo, bha call Broker 1 deiseil, mar a bha an dàta, agus mar sin chaidh Ciudha B gun sgàthan a chall gu tur.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 6. Broker 1 a 'tilleadh gu seirbheis

Tha Broker 3 air ais air-loidhne, agus mar sin bidh ciudhaichean A agus B a’ faighinn air ais na sgàthan a chaidh a chruthachadh air gus na poileasaidhean HA aca a shàsachadh. Ach a-nis tha na prìomh ciudha uile air aon nód! Chan eil seo air leth freagarrach, tha e nas fheàrr cuairteachadh cothromach eadar nodan. Gu mì-fhortanach, chan eil mòran roghainnean an seo airson maighstirean ath-chothromachadh. Thig sinn air ais chun iris seo nas fhaide air adhart oir feumaidh sinn coimhead air sioncronadh ciudha an toiseach.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 7. Broker 3 a 'tilleadh gu seirbheis. A h-uile prìomh ciudha air aon nód!

Mar sin a-nis bu chòir dhut beachd a bhith agad air mar a tha sgàthan a’ toirt seachad call obrach agus fulangas sgàinidhean. Bidh seo a’ dèanamh cinnteach gum bi cothrom ann ma dh’ fhàillig aon nód agus a dhìonas an aghaidh call dàta. Ach chan eil sinn deiseil fhathast, oir ann an da-rìribh tha e tòrr nas iom-fhillte.

Syncronadh

Nuair a chruthaicheas tu sgàthan ùr, bidh a h-uile teachdaireachd ùr an-còmhnaidh air ath-aithris don sgàthan seo agus do chàch. A thaobh an dàta a th ’ann mar-thà anns a’ phrìomh ciudha, is urrainn dhuinn ath-riochdachadh gu sgàthan ùr, a thig gu bhith na leth-bhreac iomlan den mhaighstir. Faodaidh sinn cuideachd roghnachadh gun a bhith ag ath-aithris teachdaireachdan gnàthaichte agus leigeil leis a’ phrìomh ciudha agus an sgàthan ùr tighinn còmhla ann an ùine, le teachdaireachdan ùra a’ tighinn chun earbaill agus teachdaireachdan gnàthaichte a’ fàgail ceann a’ phrìomh chiudha.

Thèid an sioncronadh seo a dhèanamh gu fèin-ghluasadach no le làimh agus air a riaghladh a’ cleachdadh poileasaidh ciudha. Bheir sinn sùil air eisimpleir.

Tha dà chiudha sgàthan againn. Tha ciudha A air a shioncronachadh gu fèin-ghluasadach, agus tha Ciudha B air a shioncronachadh le làimh. Tha deich teachdaireachdan anns an dà ciudha.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 8. Dà ciudha le diofar dhòighean sioncronaidh

A-nis tha sinn a’ call Broker 3.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 9. Thuit Broker 3

Bidh Broker 3 a 'tilleadh gu seirbheis. Bidh an cruinneachadh a’ cruthachadh sgàthan airson gach ciudha air an nód ùr agus gu fèin-obrachail a’ sioncronadh Ciudha A ùr leis a’ mhaighstir. Ach, tha sgàthan an Ciudha B ùr fhathast falamh. San dòigh seo tha làn dhreuchd againn air Ciudha A agus dìreach aon sgàthan airson teachdaireachdan Ciudha B a th’ ann mar-thà.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 10. Bidh sgàthan ùr Ciudha A a' faighinn a h-uile teachdaireachd a th' ann mar-thà, ach chan eil an sgàthan ùr aig Ciudha B.

Bidh deich teachdaireachdan eile a’ ruighinn an dà ciudha. Bidh Broker 2 an uairsin a 'bualadh agus Ciudha A a' dol air ais chun sgàthan as sine, a tha air Broker 1. Chan eil call dàta ann nuair a dh'fhàilligeas e. Ann an Ciudha B, tha fichead teachdaireachd anns a’ mhaighstir agus dìreach deich san sgàthan oir cha do rinn an ciudha seo a-riamh na deich teachdaireachdan tùsail.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 11. Ciudha A roiligeadh air ais gu Broker 1 gun call teachdaireachdan

Bidh deich teachdaireachdan eile a’ ruighinn an dà ciudha. A-nis tha Broker 1 a’ tuiteam. Bidh ciudha A gu furasta a’ tionndadh chun sgàthan gun a bhith a’ call teachdaireachdan. Ach, tha trioblaidean aig Ciudha B. Aig an ìre seo is urrainn dhuinn cothrom no cunbhalachd a bharrachadh.

Ma tha sinn airson ruigsinneachd a mheudachadh, an uairsin am poileasaidh ha-adhartachadh-air-fàilligeadh bu chòir a chuir a-steach an còmhnaidh. Is e seo an luach bunaiteach, agus mar sin chan urrainn dhut am poileasaidh a shònrachadh idir. Anns a 'chùis seo, tha sinn gu bunaiteach a' ceadachadh fàilligidhean ann an sgàthan neo-shioncronaichte. Bidh seo ag adhbhrachadh gun tèid teachdaireachdan a chall, ach bidh an ciudha fhathast furasta a leughadh agus a sgrìobhadh.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 12. Tha ciudha A air a roiligeadh air ais gu Broker 3 gun a bhith a’ call teachdaireachdan. Bidh Ciudha B a’ dol air ais gu Broker 3 le deich teachdaireachdan air chall

Faodaidh sinn cuideachd a stàladh ha-promote-on-failure ann an ciall when-synced. Anns a’ chùis seo, an àite a dhol air ais chun sgàthan, fuirichidh an ciudha gus an till Broker 1 leis an dàta aige gu modh air-loidhne. Às deidh dha tilleadh, tha am prìomh ciudha air ais air Broker 1 gun chall dàta sam bith. Tha cothrom air a thoirt seachad airson tèarainteachd dàta. Ach is e modh cunnartach a tha seo a dh’ fhaodadh eadhon leantainn gu call dàta iomlan, air am bi sinn a ’coimhead a dh’ aithghearr.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 13. Chan eil Ciudha B fhathast ri fhaighinn às deidh dha Broker 1 a chall

Faodaidh tu faighneachd, “A bheil e nas fheàrr sioncronadh fèin-ghluasadach a chleachdadh gu bràth?” Is e am freagairt gur e gnìomhachd bacaidh a th’ ann an sioncronachadh. Rè sioncronaidh, chan urrainn don phrìomh ciudha gnìomhachd leughaidh no sgrìobhaidh sam bith a dhèanamh!

Bheir sinn sùil air eisimpleir. A-nis tha ciudha glè fhada againn. Ciamar as urrainn dhaibh fàs gu leithid de mheud? Airson grunn adhbharan:

  • Chan eil ciudhaichean air an cleachdadh gu gnìomhach
  • Tha iad sin nan ciudhaichean aig astar luath, agus an-dràsta tha luchd-cleachdaidh slaodach
  • Is e ciudhaichean aig astar luath a th’ ann, tha glitch air a bhith ann agus tha luchd-ceannach a ’glacadh suas

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 14. Dà ciudha mòr le diofar mhodhan sioncronaidh

A-nis tha Broker 3 a ’tuiteam.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 15. Bidh Broker 3 a 'tuiteam, a' fàgail aon mhaighstir agus sgàthan anns gach ciudha

Bidh Broker 3 a’ tighinn air ais air-loidhne agus tha sgàthanan ùra gan cruthachadh. Bidh Prìomh Ciudha A a’ tòiseachadh ag ath-aithris teachdaireachdan gnàthaichte chun sgàthan ùr, agus rè na h-ùine seo chan eil an Ciudha ri fhaighinn. Bheir e dà uair a thìde airson an dàta ath-riochdachadh, agus mar thoradh air sin bidh dà uair a thìde de dh’ ùine downt airson a’ chiudha seo!

Ach, tha Ciudha B fhathast ri fhaighinn fad na h-ùine. Dh'ìobair i beagan dreuchd airson ruigsinneachd.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 16. Chan eil ciudha fhathast ri fhaighinn aig àm sioncronaidh

Às deidh dà uair a thìde, bidh Ciudha A ri fhaighinn cuideachd agus faodaidh e tòiseachadh a’ gabhail ri leughadh is sgrìobhadh a-rithist.

Ùrachaidhean

Tha an giùlan bacaidh seo aig àm sioncronaidh ga dhèanamh duilich cruinneachaidhean ùrachadh le ciudhaichean glè mhòr. Aig àm air choreigin, feumar am prìomh nód ath-thòiseachadh, a tha a’ ciallachadh an dàrna cuid atharrachadh gu sgàthan no an ciudha a chuir dheth fhad ‘s a tha am frithealaiche ag ùrachadh. Ma roghnaicheas sinn gluasad, caillidh sinn teachdaireachdan mura h-eil na sgàthan air an sioncronachadh. Gu gnàthach, aig àm briseadh broker, cha tèid fàiligeadh gu sgàthan gun shioncronachadh a dhèanamh. Tha seo a’ ciallachadh, cho luath ‘s a thilleas am broker, nach caill sinn teachdaireachdan sam bith, b’ e ciudha sìmplidh an aon mhilleadh. Tha riaghailtean giùlain nuair a tha broker air a dhì-cheangal air a shuidheachadh le poileasaidh ha-promote-on-shutdown. Faodaidh tu aon de dhà luach a shuidheachadh:

  • always= tha gluasad gu sgàthanan gun shioncronachadh air a chomasachadh
  • when-synced= gluasad gu sgàthan sioncronaich a-mhàin, air neo cha ghabh an ciudha a leughadh agus nach gabh sgrìobhadh. Bidh an ciudha a’ tilleadh gu seirbheis cho luath ‘s a thilleas am broker

Aon dòigh no dòigh eile, le ciudhaichean mòra feumaidh tu taghadh eadar call dàta agus neo-ruigsinneachd.

Nuair a bhios ruigsinneachd a’ leasachadh tèarainteachd dàta

Tha aon dhuilgheadas eile ri bheachdachadh mus dèan thu co-dhùnadh. Ged a tha sioncronadh fèin-ghluasadach nas fheàrr airson call dreuchd, ciamar a bheir e buaidh air tèarainteachd dàta? Gu dearbh, le call dreuchd nas fheàrr, chan eil RabbitMQ cho dualtach teachdaireachdan gnàthaichte a chall, ach dè mu dheidhinn teachdaireachdan ùra bho fhoillsichearan?

An seo feumaidh tu beachdachadh air na leanas:

  • Am b' urrainn dhan fhoillsichear dìreach mearachd a thilleadh agus an t-seirbheis shuas an abhainn no an cleachdaiche feuchainn ris a-rithist nas fhaide air adhart?
  • Am faod am foillsichear an teachdaireachd a shàbhaladh gu h-ionadail neo ann an stòr-dàta gus feuchainn ris a-rithist nas anmoiche?

Mura h-urrainn don fhoillsichear ach an teachdaireachd a chuir air falbh, gu dearbh, bidh leasachadh ruigsinneachd cuideachd a’ leasachadh tèarainteachd dàta.

Mar sin, feumar cothromachadh a shireadh, agus tha am fuasgladh an urra ris an t-suidheachadh sònraichte.

Duilgheadasan le ha-promote-on-failure=nuair a thèid a shioncronachadh

Idea ha-adhartachadh-air-fàilligeadh= nuair a chaidh a shioncronachadh is e sin gun cuir sinn stad air atharrachadh gu sgàthan gun shioncronachadh agus mar sin a’ seachnadh call dàta. Tha an ciudha fhathast gun leughadh no sgrìobhadh. An àite sin, bidh sinn a’ feuchainn ris a’ bhròcair a chaidh a thubaist fhaighinn air ais leis an dàta aige slàn gus an urrainn dha ath-thòiseachadh ag obair mar mhaighstir gun chall dàta.

Ach (agus is e fìor mhòr a tha seo) ma tha am broker air an dàta aige a chall, tha duilgheadas mòr againn: tha an ciudha air chall! Tha a h-uile dàta air falbh! Fiù ma tha sgàthan agad a bhios mar as trice a’ dol suas ris a’ phrìomh ciudha, thèid na sgàthan sin a thilgeil air falbh cuideachd.

Gus nód leis an aon ainm ath-chur ris, bidh sinn ag iarraidh air a’ bhraisle an nód caillte a dhìochuimhneachadh (leis an àithne rabbitmqctl forget_cluster_node) agus tòisich broker ùr leis an aon ainm aoigheachd. Fhad ‘s a tha am buidheann a’ cuimhneachadh air an nód a chaidh air chall, tha cuimhne aige air an t-seann ciudha agus sgàthan gun shioncronachadh. Nuair a thèid iarraidh air buidheann a bhith a’ dìochuimhneachadh nód dìlleachdan, thathas cuideachd a’ dìochuimhneachadh a’ chiudha sin. A-nis feumaidh sinn ath-aithris a dhèanamh air. Chaill sinn an dàta gu lèir, ged a bha sgàthan againn le seata de dhàta ann am pàirt. Bhiodh e na b’ fheàrr atharrachadh gu sgàthan neo-shioncronaichte!

Mar sin, sioncronadh làimhe (agus fàilligeadh air sioncronadh) ann an co-bhonn le ha-promote-on-failure=when-synced, nam bheachd-sa, gu math cunnartach. Tha na docaichean ag ràdh gu bheil an roghainn seo ann airson tèarainteachd dàta, ach is e sgian le dà oir a th’ ann.

Maighstir ag ath-chothromachadh

Mar a chaidh a ghealltainn, bidh sinn a 'tilleadh chun an duilgheadas a thaobh cruinneachadh de mhaighstirean air aon no grunn nodan. Faodaidh seo tachairt eadhon mar thoradh air ùrachadh brabhsair leantainneach. Ann am buidheann trì-nód, cruinnichidh a h-uile prìomh ciudha air aon no dhà.

Faodaidh ath-chothromachadh maighstirean a bhith na dhuilgheadas airson dà adhbhar:

  • Chan eil innealan math ann airson ath-chothromachadh a dhèanamh
  • Sioncronadh ciudha

Tha treas pàrtaidh ann airson ath-chothromachadh plugan, nach eil a’ faighinn taic oifigeil. A thaobh plugins treas-phàrtaidh ann an leabhar-làimhe RabbitMQ thuirt: “Tha am plugan a’ toirt seachad innealan rèiteachaidh is aithris a bharrachd, ach chan eil sgioba RabbitMQ a ’toirt taic no dearbhadh dha. Cleachd air do chunnart fhèin."

Tha cleas eile ann am prìomh chiudha a ghluasad tro phoileasaidhean HA. Tha an leabhar-làimhe a 'toirt iomradh sgriobt airson seo. Bidh e ag obair mar seo:

  • A’ toirt air falbh a h-uile sgàthan a’ cleachdadh poileasaidh sealach aig a bheil prìomhachas nas àirde na am poileasaidh HA a th’ ann an-dràsta.
  • Ag atharrachadh poileasaidh sealach HA gus modh nód a chleachdadh, a’ sònrachadh an nód air am bu chòir am prìomh ciudha a ghluasad.
  • Sioncronaich an ciudha airson imrich putaidh.
  • Às deidh an imrich a bhith deiseil, cuir às don phoileasaidh sealach. Bidh a’ chiad phoileasaidh HA a’ tighinn gu buil agus tha an àireamh riatanach de sgàthan air a chruthachadh.

Is e an ana-cothrom a th’ ann gur dòcha nach obraich an dòigh-obrach seo ma tha ciudhaichean mòra agad no ma tha feumalachdan call obrach teann agad.

A-nis chì sinn mar a bhios cruinneachaidhean RabbitMQ ag obair le sgaraidhean lìonra.

A 'call ceangal

Tha nodan siostam sgaoilte ceangailte le ceanglaichean lìonra, agus faodar agus thèid ceanglaichean lìonra a dhì-cheangal. Tha tricead brisidhean an urra ris a’ bhun-structar ionadail no cho earbsach sa tha an sgòth taghte. Ann an suidheachadh sam bith, feumaidh siostaman sgaoilte a bhith comasach air dèiligeadh riutha. A-rithist tha roghainn againn eadar ruigsinneachd agus cunbhalachd, agus a-rithist is e an deagh naidheachd gu bheil RabbitMQ a’ toirt seachad an dà roghainn (dìreach chan ann aig an aon àm).

Le RabbitMQ tha dà phrìomh roghainn againn:

  • Leig le sgaradh loidsigeach (sgoltadh-eanchainn). Bidh seo a’ dèanamh cinnteach gu bheil e ri fhaighinn, ach dh’ fhaodadh sin call dàta adhbhrachadh.
  • Cuir à comas dealachadh loidsigeach. Dh’ fhaodadh sin call geàrr-ùine a chall a rèir mar a bhios teachdaichean a’ ceangal ris a’ bhuidheann. Faodaidh seo cuideachd leantainn gu neo-ruigsinneachd iomlan ann am buidheann dà-nód.

Ach dè a th’ ann an sgaradh loidsigeach? Seo nuair a bhios buidheann a’ sgaradh na dhà air sgàth call cheanglaichean lìonra. Air gach taobh, tha na sgàthan air an àrdachadh gu maighstir, gus am bi grunn mhaighstirean ann mu dheireadh.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 17. Prìomh chiudha agus dà sgàthan, gach fear air nód air leth. An uairsin bidh fàilligeadh lìonra a 'tachairt agus thèid aon sgàthan a sgaradh. Tha an nód dealaichte a 'faicinn gu bheil an dithis eile air tuiteam dheth agus a' brosnachadh a sgàthan chun a 'mhaighstir. Tha dà phrìomh chiudha againn a-nis, an dà chuid a ghabhas sgrìobhadh agus a ghabhas leughadh.

Ma chuireas foillsichearan dàta chun an dà mhaighstir, bidh dà leth-bhreac eadar-dhealaichte againn den ciudha.

Tha na modhan eadar-dhealaichte aig RabbitMQ a’ toirt seachad cothrom no cunbhalachd.

Mothaich am modh (bunaiteach)

Bidh am modh seo a’ dèanamh cinnteach à ruigsinneachd. Às deidh call ceangail, bidh sgaradh loidsigeach a ‘tachairt. Às deidh don cheangal a bhith air ath-nuadhachadh, feumaidh an rianaire co-dhùnadh dè am pàirt a bheir prìomhachas dha. Thèid an taobh call ath-thòiseachadh agus thèid a h-uile dàta cruinnichte air an taobh sin a chall.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 18. Tha trì foillsichearan co-cheangailte ri trì brocairean. Taobh a-staigh, bidh an cruinneachadh a’ ruith a h-uile iarrtas chun phrìomh ciudha air Broker 2.

A-nis tha sinn a 'call Broker 3. Tha e a 'faicinn gu bheil brocairean eile air tuiteam dheth agus a' brosnachadh a sgàthan don mhaighstir. Seo mar a tha sgaradh loidsigeach a 'tachairt.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 19. Roinn loidsigeach (sgoltadh-eanchainn). Bidh clàran a’ dol a-steach do dhà phrìomh chiudha, agus tha an dà leth-bhreac eadar-dhealaichte.

Tha ceangal air ath-nuadhachadh, ach tha dealachadh loidsigeach fhathast ann. Feumaidh an rianaire an taobh a tha a’ call a thaghadh le làimh. Anns a 'chùis gu h-ìosal, bidh an rianaire ag ath-nuadhachadh Broker 3. Tha a h-uile teachdaireachd nach do stiùir e airson a tharraing air chall.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 20. Bidh an rianaire a’ cur à comas Broker 3.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 21. Bidh an rianadair a 'tòiseachadh Broker 3 agus bidh e a' tighinn còmhla ris a 'chlàir, a' call a h-uile teachdaireachd a chaidh fhàgail an sin.

Nuair a chaidh ceanglaichean a chall agus às deidh ath-nuadhachadh, bha an cruinneachadh agus an ciudha seo rim faighinn airson leughadh agus sgrìobhadh.

Modh fèin-slànachaidh

Ag obair mar an ceudna ri modh Ignore, ach a-mhàin gu bheil am buidheann fhèin a’ taghadh an taobh a tha a’ call gu fèin-ghluasadach às deidh dhaibh ceangal a sgaradh agus ath-nuadhachadh. Bidh an taobh a tha a’ call a’ tilleadh don bhuidheann falamh, agus bidh an ciudha a’ call a h-uile teachdaireachd a chaidh a chuir chun taobh sin a-mhàin.

Cuir stad air Modh Mion-chinnidh

Mura h-eil sinn airson cead a thoirt do sgaradh loidsigeach, is e an aon roghainn a th’ againn a bhith a’ cuir air falbh leughaidhean agus sgrìobhadh air an taobh as lugha às deidh sgaradh a’ chnuasaich. Nuair a chì am broker gu bheil e air an taobh nas lugha, bidh e a ’cuir stad air obair, is e sin, bidh e a’ dùnadh a h-uile ceangal a th ’ann agus a’ diùltadh feadhainn ùra sam bith. Aon uair san diog bidh e a’ sgrùdadh airson ath-nuadhachadh ceangail. Aon uair ‘s gu bheil an ceangal air ath-nuadhachadh, bidh e ag obair a-rithist agus a’ tighinn a-steach don bhuidheann.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 22. Tha trì foillsichearan co-cheangailte ri trì brocairean. Taobh a-staigh, bidh an cruinneachadh a’ ruith a h-uile iarrtas chun phrìomh ciudha air Broker 2.

Bidh brocairean 1 agus 2 an uairsin a 'sgaradh bho Broker 3. An àite a bhith a 'brosnachadh an sgàthan gu maighstir, bidh Broker 3 a' stad agus a 'fàs neo-riatanach.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 23. Bidh Broker 3 a’ stad, a’ dì-cheangal a h-uile neach-dèiligidh, agus a’ diùltadh iarrtasan ceangail.

Aon uair ‘s gu bheil an ceangal air ath-nuadhachadh, tillidh e chun bhuidheann.

Bheir sinn sùil air eisimpleir eile far a bheil a’ phrìomh ciudha air Broker 3.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 24. Prìomh ciudha air Broker 3.

An uairsin bidh an aon chall ceangail a ’tachairt. Bidh Broker 3 a’ stad leis gu bheil e air an taobh as lugha. Air an taobh eile, tha na nodan a 'faicinn gu bheil Broker 3 air tuiteam dheth, agus mar sin tha an sgàthan as sine bho Brokers 1 agus 2 air a bhrosnachadh gu bhith na mhaighstir.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 25. Eadar-ghluasad gu Broker 2 mura h-eil Broker 3 ri fhaighinn.

Nuair a thèid ceangal ath-nuadhachadh, thèid Broker 3 a-steach don bhuidheann.

RabbitMQ vs Kafka: Fulangas sgàinidhean agus ruigsinneachd àrd ann an cruinneachaidhean
Reis. 26. Tha am braisle air tilleadh gu obrachadh àbhaisteach.

Is e an rud cudthromach a thuigsinn an seo gum faigh sinn cunbhalachd, ach gum faigh sinn cothrom cuideachd, если Bidh sinn gu soirbheachail a’ gluasad teachdaichean chun mhòr-chuid den roinn. Airson a’ mhòr-chuid de shuidheachaidhean, bhithinn gu pearsanta a’ taghadh am modh Pause Minority, ach tha e gu mòr an urra ris a’ chùis fa-leth.

Gus dèanamh cinnteach gu bheil e ri fhaighinn, tha e cudromach dèanamh cinnteach gu bheil teachdaichean gu soirbheachail a’ ceangal ris an aoigh. Bheir sinn sùil air na roghainnean againn.

A’ dèanamh cinnteach à ceanglaichean teachdaiche

Tha grunn roghainnean againn a thaobh mar a stiùireas sinn teachdaichean gu prìomh phàirt a’ chnuasaich no gu nodan obrach (às deidh dha aon nód fàiligeadh) às deidh call ceangail. An toiseach, cuimhnichidh sinn gu bheil ciudha sònraichte air a chumail air nód sònraichte, ach gu bheil slighe agus poileasaidhean air an ath-aithris thar gach nod. Faodaidh teachdaichean ceangal a dhèanamh ri nód sam bith, agus stiùiridh slighe a-staigh iad far am feum iad a dhol. Ach nuair a thèid nód a chuir dheth, bidh e a ’diùltadh ceanglaichean, agus mar sin feumaidh teachdaichean ceangal ri nód eile. Ma thuiteas an nód dheth, chan eil mòran a nì e idir.

Na roghainnean againn:

  • Gheibhear a-steach don bhuidheann le bhith a’ cleachdadh inneal-cothromachaidh luchdan a bhios dìreach a’ rothaireachd tro na nodan agus bidh teachdaichean a’ feuchainn ri ceangal a-rithist gus am bi iad soirbheachail. Ma tha nód sìos no crochte, bidh oidhirpean gus ceangal ris an nód sin a’ fàiligeadh, ach thèid oidhirpean às deidh sin gu frithealaichean eile (ann am fasan robin cruinn). Tha seo freagarrach airson call ceangail geàrr-ùine no frithealaiche sìos a thèid a thoirt air ais gu sgiobalta.
  • Faigh a-steach don bhuidheann tro chothromachadh luchdan agus thoir air falbh nodan crochte / fàilligte bhon liosta cho luath ‘s a lorgar iad. Ma nì sinn seo gu sgiobalta, agus ma tha e comasach do luchd-cleachdaidh an ceangal a dhèanamh a-rithist, gheibh sinn cothrom seasmhach.
  • Thoir liosta de na nodan gu lèir do gach neach-dèiligidh, agus bidh an neach-dèiligidh a’ taghadh fear dhiubh air thuaiream nuair a bhios iad a’ ceangal. Ma gheibh e mearachd nuair a tha e a’ feuchainn ri ceangal a dhèanamh, gluaisidh e chun ath nód air an liosta gus an ceangail e.
  • Thoir air falbh trafaic bho nód a dh’ fhàillig / crochte a ’cleachdadh DNS. Tha seo air a dhèanamh le bhith a’ cleachdadh TTL beag.

toraidhean

Tha na buannachdan agus na h-eas-bhuannachdan aig cruinneachadh RabbitMQ. Is iad na h-eas-bhuannachdan as miosa:

  • nuair a thèid iad a-steach do bhuidheann, bidh nodan a’ tilgeil air falbh an dàta aca;
  • tha bacadh sioncronaidh ag adhbhrachadh nach bi an ciudha ri fhaighinn.

Tha a h-uile co-dhùnadh duilich a 'tighinn bhon dà fheart ailtireachd seo. Nam b’ urrainn dha RabbitMQ dàta a shàbhaladh nuair a thèid an cruinneachadh a-rithist, bhiodh sioncronadh nas luaithe. Nam biodh e comasach air sioncronadh gun bhacadh, bhiodh e na b’ fheàrr taic a thoirt do ciudhaichean mòra. Dhèanadh socrachadh an dà chùis seo adhartas mòr air coileanadh RabbitMQ mar theicneòlas teachdaireachd a tha fulangach le lochdan agus a tha ri fhaighinn gu mòr. Bhithinn leisg RabbitMQ a mholadh le cruinneachadh anns na suidheachaidhean a leanas:

  • Lìonra neo-earbsach.
  • Stòradh neo-earbsach.
  • Ciudha glè fhada.

Nuair a thig e gu roghainnean ruigsinneachd àrd, beachdaich air na leanas:

  • ha-promote-on-failure=always
  • ha-sync-mode=manual
  • cluster_partition_handling=ignore (no autoheal)
  • teachdaireachdan leantainneach
  • dèan cinnteach gu bheil teachdaichean a’ ceangal ris an nód gnìomhach nuair a dh’ fhailicheas cuid de nód

Airson cunbhalachd (tèarainteachd dàta), beachdaich air na roghainnean a leanas:

  • Foillsichear a 'dearbhadh agus a' toirt buidheachas làimhe air taobh luchd-cleachdaidh
  • ha-promote-on-failure=when-synced, mas urrainn dha na foillsichearan feuchainn a-rithist nas fhaide air adhart agus ma tha stòradh fìor earbsach agad! Mur eil cuir =always.
  • ha-sync-mode=automatic (ach airson ciudhaichean mòra neo-ghnìomhach dh’ fhaodadh gum bi feum air modh làimhe; beachdaich cuideachd an toireadh dìth teachdaireachdan air chall)
  • Cuir stad air modh Mion-chinnidh
  • teachdaireachdan leantainneach

Chan eil sinn air dèiligeadh ris a h-uile cùis mu fhulangas lochdan agus ruigsinneachd àrd fhathast; mar eisimpleir, mar a choileanas tu modhan rianachd gu tèarainte (leithid ùrachadh leantainneach). Feumaidh sinn cuideachd bruidhinn mu dheidhinn caidreachas agus plugan Shovel.

Ma tha mi air rud sam bith eile a chall, leig fios dhomh.

Faic cuideachd mo dreuchd, far am bi mi a’ dèanamh milleadh air cruinneachadh RabbitMQ a’ cleachdadh Docker and Blockade gus deuchainn a dhèanamh air cuid de na suidheachaidhean call teachdaireachd a tha air am mìneachadh san artaigil seo.

Artaigilean roimhe san t-sreath:
Àir. 1 - habr.com/ru/company/itsumma/blog/416629
Àir. 2 - habr.com/ru/company/itsumma/blog/418389
Àir. 3 - habr.com/ru/company/itsumma/blog/437446

Source: www.habr.com

Cuir beachd ann