Deall broceriaid negeseuon. Dysgu mecaneg negeseuon gydag ActiveMQ a Kafka. Pennod 1

Helo bawb!

Dechreuais i gyfieithu llyfr bach:
«Deall Broceriaid Negeseuon«,
awdur: Jakub Korab, cyhoeddwr: O'Reilly Media, Inc., dyddiad cyhoeddi: Mehefin 2017, ISBN: 9781492049296.

O'r cyflwyniad i'r llyfr:
"... Bydd y llyfr hwn yn eich dysgu sut i feddwl am systemau negeseuon brocer, gan gymharu a chyferbynnu dwy dechnoleg brocer poblogaidd: Apache ActiveMQ ac Apache Kafka. Bydd yn amlinellu’r achosion defnydd a’r cymhellion datblygu a arweiniodd at eu datblygwyr i ddefnyddio dulliau gwahanol iawn o ymdrin â’r un maes—negesu rhwng systemau â brocer canolradd. Byddwn yn edrych ar y technolegau hyn o'r gwaelod i fyny ac yn amlygu effaith gwahanol ddewisiadau dylunio ar hyd y ffordd. Byddwch yn ennill dealltwriaeth ddofn o'r ddau gynnyrch, dealltwriaeth o sut y dylid a sut na ddylid eu defnyddio, a dealltwriaeth o'r hyn i chwilio amdano wrth ystyried technolegau negeseuon eraill yn y dyfodol … »

Rhannau wedi'u cyfieithu hyd yn hyn:
Pennod 1. Rhagymadrodd
Pennod 3. Kafka

Byddaf yn postio penodau gorffenedig wrth iddynt gael eu cyfieithu.

PENNOD 1

Cyflwyniad

Negeseuon system-i-system yw un o'r meysydd TG sy'n cael ei ddeall leiaf. Fel datblygwr neu bensaer, efallai y byddwch yn gyfarwydd iawn â fframweithiau a chronfeydd data amrywiol. Fodd bynnag, mae'n debygol nad ydych ond yn gyfarwydd â sut mae technolegau negeseuon brocer yn gweithio. Os ydych chi'n teimlo fel hyn, peidiwch â phoeni, rydych chi mewn cwmni da.

Fel arfer, cyswllt cyfyngedig iawn sydd gan bobl â'r seilwaith negeseuon. Maent yn aml yn cysylltu â system a grëwyd amser maith yn ôl, neu'n lawrlwytho dosbarthiad o'r Rhyngrwyd, ei osod yn PROM a dechrau ysgrifennu cod ar ei gyfer. Ar ôl rhedeg y seilwaith yn PROM, gellir cymysgu'r canlyniadau: mae negeseuon yn cael eu colli oherwydd methiannau, nid yw anfon yn gweithio fel y disgwyliwyd, neu mae broceriaid yn “hongian” eich cynhyrchwyr neu nid ydynt yn anfon negeseuon at eich defnyddwyr.

Mae'n swnio'n gyfarwydd?

Senario gyffredin yw lle mae'ch cod negeseuon yn gweithio'n wych, am y tro. Hyd nes ei fod yn stopio gweithio. Mae'r cyfnod hwn yn tynnu eich sylw at ymdeimlad ffug o ddiogelwch, gan arwain at fwy o god yn seiliedig ar gredoau ffug am ymddygiad sylfaenol y dechnoleg. Pan fydd pethau'n dechrau mynd o chwith, rydych chi'n wynebu gwirionedd anghyfleus: nad ydych chi wir wedi deall ymddygiad sylfaenol y cynnyrch na'r cyfaddawdau a ddewiswyd gan yr awduron, fel perfformiad yn erbyn dibynadwyedd, neu drafodoldeb yn erbyn graddadwyedd llorweddol. .

Heb ddealltwriaeth ddofn o sut mae broceriaid yn gweithio, mae pobl yn gwneud datganiadau sy'n ymddangos yn rhesymol am eu systemau negeseuon, megis:

  • Ni fydd y system byth yn colli negeseuon
  • Bydd negeseuon yn cael eu prosesu yn olynol
  • Bydd ychwanegu defnyddwyr yn gwneud y system yn gyflymach
  • Dim ond unwaith y bydd negeseuon yn cael eu danfon

Yn anffodus, mae rhai o'r datganiadau hyn yn seiliedig ar ragdybiaethau sydd ond yn berthnasol o dan rai amgylchiadau, tra bod eraill yn syml anghywir.

Bydd y llyfr hwn yn eich dysgu sut i feddwl am systemau negeseuon brocer, gan gymharu a chyferbynnu dwy dechnoleg brocer poblogaidd: Apache ActiveMQ ac Apache Kafka. Bydd yn amlinellu’r achosion defnydd a’r cymhellion datblygu a arweiniodd at eu datblygwyr i ddefnyddio dulliau gwahanol iawn o ymdrin â’r un maes—negesu rhwng systemau â brocer canolradd. Byddwn yn edrych ar y technolegau hyn o'r gwaelod i fyny ac yn amlygu effaith gwahanol ddewisiadau dylunio ar hyd y ffordd. Byddwch yn ennill dealltwriaeth ddofn o'r ddau gynnyrch, dealltwriaeth o sut y dylid a sut na ddylid eu defnyddio, a dealltwriaeth o'r hyn i chwilio amdano wrth ystyried technolegau negeseuon eraill yn y dyfodol.

Cyn i ni ddechrau, gadewch i ni fynd dros y pethau sylfaenol.

Beth yw System Negeseuon a pham fod ei hangen?

Er mwyn i ddau gymhwysiad gyfathrebu â'i gilydd, rhaid iddynt ddiffinio rhyngwyneb yn gyntaf. Mae diffinio'r rhyngwyneb hwn yn golygu dewis trafnidiaeth neu brotocol, fel HTTP, MQTT, neu SMTP, a thrafod y fformatau neges a fydd yn cael eu cyfnewid rhwng y systemau. Gall hyn fod yn broses llym, megis diffinio sgema XML gyda gofynion cost llwyth tâl neges, neu gall fod yn llawer llai ffurfiol, megis cytundeb rhwng dau ddatblygwr y bydd rhyw ran o'r cais HTTP yn cynnwys y dynodwr cleient.

Cyhyd â bod fformat y negeseuon a'r drefn y cânt eu hanfon yn gyson rhwng systemau, gallant gyfathrebu â'i gilydd heb boeni am weithrediad y system arall. Gall elfennau mewnol y systemau hyn, megis yr iaith raglennu neu'r fframwaith a ddefnyddir, newid dros amser. Cyn belled â bod y contract ei hun yn cael ei gynnal, gall y rhyngweithio barhau heb newidiadau o'r ochr arall. Mae'r ddwy system yn cael eu datgysylltu (gwahanu) yn effeithiol gan y rhyngwyneb hwn.

Mae systemau negeseuon fel arfer yn cynnwys cyfryngwr rhwng dwy system sy'n rhyngweithio i ddatgysylltu ymhellach (ar wahân) yr anfonwr oddi wrth y derbynnydd neu'r derbynwyr. Yn yr achos hwn, mae'r system negeseuon yn caniatáu i'r anfonwr anfon neges heb wybod ble mae'r derbynnydd, a yw'n weithredol, neu faint o achosion sydd.

Gadewch i ni edrych ar un neu ddau o gyfatebiaethau ar gyfer y mathau o broblemau y mae system negeseuon yn eu datrys a chyflwyno rhai termau sylfaenol.

Pwynt-i-Bwynt

Mae Alexandra yn mynd i'r swyddfa bost i anfon pecyn at Adam. Mae hi'n mynd at y ffenestr ac yn rhoi'r pecyn i'r gweithiwr. Mae'r gweithiwr yn codi'r pecyn ac yn rhoi derbynneb i Alexandra. Nid oes angen i Adam fod adref pan anfonir y pecyn. Mae Alexandra yn hyderus y bydd y pecyn yn cael ei ddosbarthu i Adam rywbryd yn y dyfodol a gall barhau i fynd o gwmpas ei busnes. Yn ddiweddarach ar ryw adeg mae Adam yn derbyn pecyn.

Dyma enghraifft o fodel negeseuon pwynt-i-bwynt. Mae'r swyddfa bost yma yn gweithredu fel mecanwaith dosbarthu parseli, gan sicrhau bod pob parsel yn cael ei ddosbarthu unwaith. Mae defnyddio swyddfa bost yn gwahanu'r weithred o anfon pecyn oddi wrth ddanfon y pecyn.
Mewn systemau negeseuon clasurol, gweithredir y model pwynt-i-bwynt drwodd ciwiau. Mae'r ciw yn gweithredu fel byffer FIFO (cyntaf i mewn, cyntaf allan) y gall un neu fwy o ddefnyddwyr danysgrifio iddo. Anfonir pob neges yn unig i un o'r defnyddwyr sydd wedi tanysgrifio. Mae ciwiau fel arfer yn ceisio dosbarthu negeseuon yn deg ymhlith defnyddwyr. Dim ond un defnyddiwr fydd yn derbyn y neges hon.

Mae'r term “gwydn” yn cael ei gymhwyso i giwiau. Dibynadwyedd yn eiddo gwasanaeth sy'n sicrhau y bydd y system negeseuon yn parhau negeseuon yn absenoldeb tanysgrifwyr gweithredol nes bod defnyddiwr yn tanysgrifio i'r ciw ar gyfer cyflwyno neges.

Mae dibynadwyedd yn aml yn cael ei ddrysu gyda dyfalwch ac er bod y ddau derm yn cael eu defnyddio yn gyfnewidiol, y maent yn gwasanaethu gwahanol swyddogaethau. Mae dyfalbarhad yn pennu a yw'r system negeseuon yn ysgrifennu neges i ryw fath o storfa rhwng ei dderbyn a'i anfon at y defnyddiwr. Gall negeseuon a anfonir i'r ciw fod yn barhaus neu beidio.
Defnyddir negeseuon pwynt-i-bwynt pan fo'r achos defnydd yn gofyn am weithred un-amser ar y neges. Mae enghreifftiau yn cynnwys adneuo arian mewn cyfrif neu gwblhau archeb danfon. Byddwn yn trafod yn ddiweddarach pam nad yw'r system negeseuon ar ei phen ei hun yn gallu darparu cyflenwad un-amser a pham y gall ciwiau ddarparu gwarant danfon ar y gorau o leiaf unwaith.

Cyhoeddwr-Tanysgrifiwr

Mae Gabriella yn deialu rhif y gynhadledd. Tra ei bod yn gysylltiedig â'r gynhadledd, mae'n clywed popeth y mae'r siaradwr yn ei ddweud, ynghyd â gweddill cyfranogwyr yr alwad. Pan fydd hi'n tiwnio allan, mae hi'n colli'r hyn sy'n cael ei ddweud. Pan gaiff ei hailgysylltu, mae'n parhau i glywed yr hyn sy'n cael ei ddweud.

Dyma enghraifft o fodel negeseuon cyhoeddi-tanysgrifio. Mae galw cynadledda yn gweithredu fel mecanwaith darlledu. Nid yw'r person sy'n siarad yn poeni faint o bobl sydd ar yr alwad ar hyn o bryd - mae'r system yn sicrhau y bydd unrhyw un sy'n gysylltiedig ar hyn o bryd yn clywed yr hyn sy'n cael ei ddweud.
Mewn systemau negeseuon clasurol, gweithredir y model negeseuon cyhoeddi-tanysgrifio drwyddo topiau. Mae Pwnc yn darparu'r un dull darlledu â'r mecanwaith cynadledda. Pan anfonir neges at bwnc, caiff ei ddosbarthu ar gyfer pob defnyddiwr sydd wedi tanysgrifio.

Mae'r pynciau fel arfer annibynadwy (annibynadwy). Yn union fel gwrandäwr na all glywed yr hyn a ddywedir ar alwad cynhadledd pan fydd y gwrandäwr yn datgysylltu, mae tanysgrifwyr pwnc yn colli unrhyw negeseuon sy'n cael eu hanfon pan fyddant all-lein. Am y rheswm hwn, gallwn ddweud bod pynciau yn darparu gwarant cyflenwi dim mwy nag unwaith i bob defnyddiwr.

Defnyddir negeseuon cyhoeddi-tanysgrifio fel arfer pan fo'r negeseuon yn rhai gwybodaeth eu natur ac nid yw colli un neges yn arbennig o arwyddocaol. Er enghraifft, gall pwnc drosglwyddo darlleniadau tymheredd o grŵp o synwyryddion unwaith yr eiliad. Ni fydd system sydd â diddordeb yn y tymheredd presennol ac sy'n tanysgrifio i bwnc yn poeni os yw'n methu neges - bydd un arall yn cyrraedd yn y dyfodol agos.

modelau hybrid

Mae gwefan y siop yn gosod negeseuon archeb mewn "ciw neges." Prif ddefnyddiwr y negeseuon hyn yw'r system weithredol. Yn ogystal, dylai fod gan y system archwilio gopïau o'r negeseuon archeb hyn i'w holrhain yn ddiweddarach. Ni all y ddwy system ganiatáu i negeseuon basio drwodd, hyd yn oed os nad yw'r systemau eu hunain ar gael am beth amser. Ni ddylai'r wefan fod yn ymwybodol o systemau eraill.

Mae achosion defnydd yn aml yn gofyn am gyfuniad o fodelau cyhoeddi-tanysgrifio a negeseuon pwynt-i-bwynt, megis pan fo systemau lluosog angen copi o neges a bod angen dibynadwyedd a dyfalbarhad i atal colli neges.

Mae'r achosion hyn yn gofyn am gyrchfan (term cyffredinol ar gyfer ciwiau a phynciau) sy'n dosbarthu negeseuon yn y bôn fel pwnc, fel bod pob neges yn cael ei hanfon i system ar wahân sydd â diddordeb yn y negeseuon hynny, ond hefyd lle gall pob system ddiffinio sawl defnyddiwr sy'n derbyn sy'n dod i mewn. negeseuon, sy'n debycach i giw. Y math o ddarllen yn yr achos hwn yw unwaith ar gyfer pob rhanddeiliad. Mae'r cyrchfannau hybrid hyn yn aml yn gofyn am wydnwch felly os yw defnyddiwr yn mynd all-lein, mae negeseuon sy'n cael eu hanfon bryd hynny yn cael eu derbyn ar ôl i'r defnyddiwr ailgysylltu.

Nid yw modelau hybrid yn newydd a gellir eu defnyddio yn y mwyafrif o systemau negeseuon, gan gynnwys ActiveMQ (trwy gyrchfannau rhithwir neu gyfansawdd sy'n cyfuno pynciau a chiwiau) a Kafka (yn ymhlyg, fel un o nodweddion sylfaenol ei ddyluniad cyrchfan).

Nawr bod gennym rywfaint o derminoleg sylfaenol a dealltwriaeth o'r hyn y gallem ddefnyddio system negeseuon ar ei gyfer, gadewch i ni fynd i lawr at y manylion.

Cyfieithiad wedi'i wneud: tele.gg/canol_java

Cyfieithwyd y rhan ganlynol: Pennod 3. Kafka

I'w barhau…

Ffynhonnell: hab.com

Ychwanegu sylw