Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 3. Kafka

Fa'aauauina o le fa'aliliuga o se tama'i tusi:
Malamalama Message Brokers
tusitala: Jakub Korab, lomitusi: O'Reilly Media, Inc., aso o le lomiga: Iuni 2017, ISBN: 9781492049296.

Vaega fa'aliliu muamua: Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 1 Folasaga

MATAUPU 3

Kafka

O Kafka na fausia e LinkedIn e faʻafeiloaʻi ai nisi o tapulaʻa a le au fai fefaʻatauaʻiga masani ma aloese mai le faʻatulagaina o le tele o fefaʻatauaʻiga feʻau mo fefaʻatauaʻiga eseese i le itu-i-itu, lea o loʻo faʻamatalaina i lenei tusi i lalo o le "Faʻateleina ma fafo" i le itulau 28 Fa'aoga mataupu LinkedIn e fa'alagolago tele i le fa'aogaina o le tele o fa'amaumauga, e pei o kiliki itulau ma ogalaau avanoa, a'o fa'ataga pea lena fa'amatalaga e fa'aogaina e le tele o faiga e aunoa ma le a'afiaina o le gaosiga o gaosiga po'o isi tagata fa'atau. O le mea moni, o le mafuaʻaga o Kafka o loʻo i ai o le mauaina lea o le ituaiga faʻataʻitaʻiga o feʻau e faʻamatalaina e le Universal Data Pipeline.

Ona o lenei sini autu, o isi manaoga masani na tulai mai. Kafka e tatau ona:

  • Ia matua televave
  • Tuuina atu le tele o bandwidth pe a galue ma feʻau
  • Lagolago le Publisher-subscriber ma faʻataʻitaʻiga Point-to-Point
  • Aua le fa'agesegese i le fa'aopoopoina o tagata fa'atau. Mo se faʻataʻitaʻiga, o le faʻatinoga o le laina ma le autu i ActiveMQ e faʻaleagaina aʻo faʻatupulaia le numera o tagata faʻatau i le mea e alu i ai.
  • Ia mafai ona fuaina faalava; afai e mafai e se tasi faioloa e fa'aauau fe'au ona faia i le maualuga o le saosaoa o le tisiki, o lona uiga e talafeagai le alu i tua atu o se fa'ata'ita'iga se tasi e fa'ateleina le fa'atinoga.
  • Fa'atapula'a le avanoa i le teuina ma le toe aumai o fe'au

Ina ia ausia nei mea uma, na faʻaaogaina e Kafka se fausaga e toe faʻamalamalamaina ai matafaioi ma matafaioi a tagata faʻatau ma fefaʻatauaʻiga feʻau. O le fa'ata'ita'iga a le JMS e fa'atatau i le aufaipisinisi, lea e nafa ai le faioloa mo le tufatufaina atu o fe'au ma e na'o tagata fa'atau e popole i le lafoina ma le mauaina o fe'au. O le Kafka, i le isi itu, e fa'atatau i tagata fa'atau, fa'atasi ai ma le kalani o lo'o fa'aogaina le tele o foliga o se faioloa fa'aleaganu'u, e pei o le tufatufaina sa'o o fe'au talafeagai i tagata fa'atau, e fa'afesuia'i mo se faioloa sili ona vave ma fa'atauva'a. Mo tagata sa galulue i faiga masani fe'au, galulue ma Kafka e mana'omia ai se suiga taua o le mafaufau.
O lenei fa'ainisinia fa'ainisinia ua ta'ita'ia ai le fa'atūina o se fe'au fe'au e mafai ona fa'atuputeleina le gaosiga e ala i le tele o fa'atonuga fa'atusatusa i se faioloa masani. E pei ona o le a tatou vaʻaia, o lenei auala e sau ma fefaʻatauaʻiga, o lona uiga e le fetaui Kafka mo nisi ituaiga o galuega ma faʻapipiʻiina polokalama.

Fa'ata'ita'iga Tulaga Fa'atasi

Ina ia faʻataunuʻuina manaʻoga o loʻo faʻamatalaina i luga, ua tuʻufaʻatasia e Kafka le faʻasalalau-tusitala ma feʻau faʻasalalau i lalo o le tasi ituaiga o taunuuga - autu. E fenumiai lenei mea i tagata sa galulue i faiga fe'au, lea o le upu "autu" e faasino i se faʻasalalauga faʻasalalauga lea (mai le autu) faitau e le tumau. O mataupu Kafka e tatau ona manatu i ai o se ituaiga faʻafeiloaʻiga, e pei ona faʻamatalaina i le folasaga o lenei tusi.

Mo le vaega o totoe o lenei mataupu, se'i vagana ua matou fa'ailoa manino atu, o le faaupuga "autu" o le a fa'asino i se autu Kafka.

Ina ia malamalama atoatoa pe faʻafefea ona amio autu ma poʻo a faʻamaoniga latou te maua, e tatau ona tatou vaʻai muamua pe faʻapefea ona faʻatinoina i Kafka.
O autu taʻitasi i Kafka e iai lana lava ogalaau.
O le au gaosi oloa e auina atu savali i Kafka tusi i lenei ogalaau, ma tagata faʻatau e faitau mai le ogalaau e faʻaaoga ai faʻailoga e agai pea i luma. Mai lea taimi i lea taimi, e tape e Kafka vaega pito i leva o le ogalaau, pe o savali i na vaega na faitau pe leai. O se vaega tutotonu o le mamanu a Kafka e le popole le tagata fai pisinisi pe faitau savali pe leai - o le matafaioi lena a le kalani.

O faaupuga "log" ma le "pointer" e le o iai i totonu Fa'amaumauga a Kafka. O nei faaupuga lauiloa o loʻo faʻaogaina iinei e fesoasoani ai i le malamalama.

O lenei faʻataʻitaʻiga e matua ese lava mai le ActiveMQ, lea o loʻo teuina ai feʻau mai laina uma i totonu o le ogalaau e tasi, ma e faʻailogaina e le tagata fai pisinisi ia feʻau ua tapeina pe a uma ona faitau.
Se'i o tatou eli loloto teisi ma va'ava'ai atili i le fa'amaumauga autu.
O le Kafka log e aofia ai le tele o vaega (Ata 3-1). Kafka faʻamautinoa le faʻatonuina o faʻatonuga i vaega taʻitasi. O lona uiga o fe'au na tusia i le vaeluaga i se fa'atonuga fa'apitoa o le a faitauina i le fa'asologa lava e tasi. O vaega ta'itasi o lo'o fa'atinoina o se faila ogalaau ta'avale o lo'o iai se vaega itiiti (subset) o fe'au uma na lafo i le autu e ana tagata gaosi oloa. O le autu na fatuina e aofia ai, e ala i le faaletonu, tasi le vaeluaga. O le manatu o vaeluaga o le manatu tutotonu lea o Kafka mo le faʻasolosolo faʻasolosolo.

Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 3. Kafka
Ata 3-1. Vaega o Kafka

A tu'uina atu e se tagata gaosi se fe'au i se autu Kafka, e filifili po'o fea vaega e lafo i ai le fe'au. O le a tatou vaʻavaʻai atili i lenei mea mulimuli ane.

Faitau savali

O le kalani e mana'o e faitau fe'au na te pulea se fa'ailo ua ta'ua vaega fa'atau, lea e faasino i fa'apena savali i le vaeluaga. Ole offset ole tulaga fa'aopoopo e amata ile 0 ile amataga ole vaeluaga. O lenei vaega fa'atau, fa'asino ile API e ala ile user-defined group_id, e fetaui ma tasi tagata fa'atau talafeagai po'o faiga.

O le tele o faiga fe'au e faitau fa'amaumauga mai le nofoaga e fa'aaoga ai le tele o fa'ata'ita'iga ma filo e fa'agasolo ai fe'au. O lea la, e masani lava ona tele fa'atauga fa'asoa fa'atasi le vaega fa'atau tutusa.

O le fa'afitauli o le faitau tusi e mafai ona fa'atusalia fa'apea:

  • O le autu e tele vaega
  • Tele vaega o tagata fa'atau e mafai ona fa'aogaina se autu ile taimi e tasi
  • O se vaega o tagata fa'atau e mafai ona iai ni fa'asologa eseese

O se fa'afitauli e le taua tele-i-tele. Ina ia malamalama pe fa'afefea ona fa'atautaia e Kafka so'otaga i le va o vaega fa'atau, fa'ata'ita'iga fa'atau, ma vaeluaga, se'i o tatou va'ai i se fa'asologa o fa'asologa o faitauga fa'asolosolo lavelave.

Tagata fa'atau ma vaega fa'atau

Sei o tatou avea ma amataga se autu e tasi le vaeluaga (Ata 3-2).

Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 3. Kafka
Ata 3-2. Tagata fa'atau faitau mai le vaeluaga

A fa'afeso'ota'i se tagata fa'atau fa'atasi ma lana lava group_id i lenei autu, e tu'uina atu i ai se vaeluaga faitau ma se offset i lena vaeluaga. O le tulaga o lenei offset e mafai ona fetuutuunai i le kalani e avea o se faasinoala i le tulaga aupito lata mai (fe'au fou) po'o le tulaga muamua (fe'au tuai). E talosagaina e le tagata fa'atau (palota) fe'au mai le autu, lea e tau atu i le latou faitauga fa'asologa mai le ogalaau.
O le tulaga offset e masani ona toe tuʻuina atu i Kafka ma teuina e fai ma feʻau i totonu o se autu _consumer_offsets. Faitau fe'au e le'o tapeina lava, e le pei o se faioloa masani, ma e mafai e le kalani ona toe vili le offset e toe fa'agasolo ai fe'au ua uma ona va'ai.

A faʻafesoʻotaʻi se tagata faʻatau lona lua e faʻaaoga ai se isi group_id, na te puleaina se faʻailoga lona lua e tutoʻatasi mai le muamua (Ata 3-3). O le mea lea, o le Kafka autu e galue e pei o se laina lea e tasi le tagata faʻatau ma e pei o se mataupu masani faʻasalalau-subscribe (pub-sub) e toʻatele tagata faʻatau e lesitala i ai, faʻatasi ai ma le faʻamanuiaga faʻaopoopo e teuina uma feʻau ma mafai ona faʻagasolo i le tele o taimi.

Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 3. Kafka
Ata 3-3. E to'alua tagata fa'atau i vaega fa'atau eseese e faitau mai le vaeluaga e tasi

Tagata fa'atau ile vaega fa'atau

A faitau e se tasi tagata fa'atau fa'amatalaga mai se vaeluaga, e iai le pule atoatoa o le fa'asino ma fa'agasolo fe'au e pei ona fa'amatala i le vaega muamua.
Afai e tele taimi o tagata faʻatau e fesoʻotaʻi ma le group_id tutusa i se autu e tasi le vaeluaga, ona tuʻuina atu lea o le faʻataʻitaʻiga e fesoʻotaʻi mulimuli i le faʻatonuga ma mai lena taimi o le a maua ai feʻau uma (Ata 3-4).

Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 3. Kafka
Ata 3-4. E to'alua tagata fa'atau i le vaega fa'atau e tasi na faitau mai le vaeluaga e tasi

O lenei faiga o gaioiga, lea e sili atu ai le numera o tagata faʻatau i le numera o vaeluaga, e mafai ona manatu o se ituaiga tagata faʻatau faapitoa. E mafai ona aoga lenei mea pe afai e te manaʻomia le "active-passive" (poʻo le "vevela-vevela") faʻapipiʻiina o au tagata faʻatau, e ui o le faʻatautaia o le tele o tagata faʻatau i le tutusa ("active-active" poʻo le "vevela-vevela") e sili atu ona masani nai lo tagata fa'atau.

O lenei amio fa'asoa fa'amatalaga o lo'o fa'amatalaina i luga e mafai ona fa'ate'ia pe a fa'atusatusa i le amio masani a le JMS queue. I lenei faʻataʻitaʻiga, o feʻau na lafoina i le laina o le a tufatufa tutusa i le va o tagata faʻatau e lua.

O le tele o taimi, pe a tatou faia ni fa'ata'ita'iga se tele o tagata fa'atau, tatou te faia lea a le o le fa'agaioia o fe'au fa'atasi, pe fa'ateleina le saoasaoa o le faitau, po'o le fa'ateleina o le mautu o le faiga faitau. Talu ai e na'o le tasi le fa'ata'ita'iga fa'atau e mafai ona faitau fa'amatalaga mai se vaeluaga i le taimi, fa'apefea ona ausia lenei mea i Kafka?

O se tasi o auala e fai ai lenei mea o le faʻaaogaina lea o se tagata faʻatau e tasi e faitau uma feʻau ma pasi atu i le filo filo. E ui o lenei faiga e faʻateleina ai le gaosiga o gaioiga, e faʻateleina ai le lavelave o le manatu faʻatau ma e leai se mea e faʻateleina ai le malosi o le faiga faitau. Afai e tasi le kopi o le tagata faatau e alu i lalo ona o se paoa poʻo se mea faapena, ona taofi lea o le toesea.

O le auala masani e foia ai lenei faafitauli i Kafka o le faʻaaogaina lea o bОtele vaeluaga.

Vaeluaga

O vaeluaga o le auala autu lea mo le faʻatusatusaina o le faitau ma le faʻalauteleina o se autu i tua atu o le bandwidth o se tasi tagata fai pisinisi. Ina ia malamalama atili i lenei mea, seʻi o tatou mafaufau i se tulaga o loʻo i ai se autu e lua vaega ma tasi le tagata faʻatau e lesitala i lenei autu (Ata 3-5).

Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 3. Kafka
Ata 3-5. E faitau se tasi tagata fa'atau mai le tele o vaega

I lenei fa'aaliga, e tu'uina atu i le tagata fa'atau le fa'atonuga i fa'ailoga e fetaui ma lona group_id i vaega uma e lua ma amata ona faitau savali mai vaega uma e lua.
A fa'aopoopo se tagata fa'aopoopo mo le group_id e tasi i lenei autu, toe fa'avasega e Kafka se tasi o vaeluaga mai le muamua i le fa'atau lona lua. A maeʻa lena, o faʻataʻitaʻiga taʻitasi a le tagata faʻatau o le a faitau mai le tasi vaega o le autu (Ata 3-6).

Ina ia mautinoa o feʻau o loʻo faʻagasolo tutusa ile 20 filo, e te manaʻomia a itiiti ifo ma le 20 vaega. Afai e itiiti ni vaega, o le a tuʻuina oe ma tagata faʻatau e leai se mea e galue ai, e pei ona faʻamatalaina muamua i le talanoaga a tagata faʻatau faapitoa.

Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 3. Kafka
Ata 3-6. E to'alua tagata fa'atau i le vaega fa'atau e tasi e faitau mai vaeluaga eseese

O lenei polokalame e matua faʻaitiitia ai le lavelave o le Kafka broker pe a faʻatusatusa i le tufatufaina o feʻau e manaʻomia e tausia ai le laina JMS. O iinei e te le manaʻomia le popole i mea nei:

  • O ai tagata fa'atau e tatau ona maua le isi fe'au, e fa'atatau i le vaevaega ta'amilosaga, le gafatia o lo'o i ai nei o fa'apolopolo muamua, po'o fe'au na muamua atu (e pei o vaega o fe'au a le JMS).
  • O fea fe'au e lafo i ai tagata fa'atau ma pe tatau ona toe tu'uina atu pe a fa'aletonu.

Pau lava le mea e fai e le Kafka broker o le tuʻuina atu faʻasolosolo feʻau i le tagata faʻatau pe a talosagaina e le tagata mulimuli.

Ae ui i lea, o manaʻoga mo le faʻatusatusaina o le toe faʻasalalau ma le toe lafoina o feʻau le manuia e le alu ese - o le matafaioi mo i latou e naʻo le pasi mai le tagata fai pisinisi i le kalani. O lona uiga e tatau ona amanaia i latou i lau code.

Auina atu savali

O le matafaioi a lē na faia lena feʻau e filifili po o fea vaega e lafo i ai se feʻau. Ina ia malamalama i le masini e faia ai lenei mea, e tatau ona tatou mafaufau muamua pe o le a tonu le mea o loʻo matou lafoina.

A o le JMS matou te faʻaogaina se faʻasologa o feʻau ma metadata (ulutala ma meatotino) ma se tino o loʻo i ai le uta (totogi), i Kafka o le feʻau paga "taua-taua". O le uta fe'au e lafo e fai ma tau. O le ki, i le isi itu, e masani ona faʻaaogaina mo le vaeluaga ma e tatau ona aofia ai pisinisi fa'atatau ki fa'apitoae tu'u fe'au fa'atatau i le vaeluaga e tasi.

I le Mataupu 2, na matou talanoaina le faʻataʻitaʻiga i luga o le initaneti lea e manaʻomia ai le faʻatulagaina o mea e fesoʻotaʻi ma se tagata faʻatau e toʻatasi:

  1. O lo'o fa'atulagaina le tala fa'aoga.
  2. O tupe o loʻo faʻapipiʻi i le teugatupe.
  3. E fai se peti e aveese ai tupe mai le teugatupe.

Afai o fa'alavelave ta'itasi o se fe'au fa'asalalau i se autu, o le ki fa'anatura o le ID fa'amatalaga.
A lafoina se feʻau e faʻaaoga ai le Kafka Producer API, e tuʻuina atu i se galuega vaeluaga lea, ona o le feʻau ma le tulaga o loʻo i ai nei o le Kafka cluster, toe faʻafoʻi le ID o le vaeluaga e tatau ona lafo i ai le feʻau. O lenei vaega o loʻo faʻatinoina i Java e ala i le vaega o le Partitioner.

O lenei atina'e e pei o lenei:

interface Partitioner {
    int partition(String topic,
        Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster);
}

O le fa'atinoga o le Partitioner e fa'aogaina ai le fa'aogaina lautele o le fa'aogaina o le algorithm i luga o le ki e iloa ai le vaeluaga, po'o le round-robin pe a leai se ki e fa'amaonia. O lenei tau fa'aletonu e aoga lelei i le tele o tulaga. Ae ui i lea, i le lumanaʻi e te manaʻo e tusi sau lava tusi.

Tusia o lau lava fuafuaga o le vaeluaga

Se'i o tatou va'ai i se fa'ata'ita'iga e te mana'o e lafo ai metadata fa'atasi ma le uta fe'au. O le uta i la matou faʻataʻitaʻiga o se faʻatonuga e fai se tupe teu i le teugatupe taʻaloga. O se faatonuga o se mea tatou te mananaʻo e faʻamautinoa e le suia i luga o le faʻasalalauga ma manaʻo ia mautinoa e naʻo se faʻalagolago i luga ole faiga e mafai ona amataina lena faatonuga. I lenei tulaga, o le auina atu ma le mauaina o faiga e malilie i le faʻaaogaina o se saini e faʻamaonia ai le feʻau.
I le JMS masani, matou te faʻamalamalamaina se mea "saini saini" ma faʻaopopo i le feʻau. Ae ui i lea, e le tuʻuina mai e Kafka ia i matou se masini mo le pasia o metadata, naʻo se ki ma se tau.

Talu ai ona o le tau o se uta fesiitaiga faletupe o lona faamaoni tatou te mananaʻo e faʻasaoina, e leai se tatou filifiliga ae faʻamalamalamaina le fausaga faʻamaumauga e faʻaoga i le ki. I le manatu tatou te manaʻomia se ID faʻamatalaga mo le vaeluaga, talu ai o feʻau uma e fesoʻotaʻi ma se teugatupe e tatau ona faʻagasolo i le faasologa, o le a tatou oʻo mai ma le JSON fausaga:

{
  "signature": "541661622185851c248b41bf0cea7ad0",
  "accountId": "10007865234"
}

Talu ai o le tau o le saini o le a fesuisuiai e faalagolago i le totogi, o le faʻaogaina o le faʻaogaina o le faʻaogaina o le vaega o le Partitioner o le a le faʻalagolago i le faʻalapotopotoga o feʻau. O le mea lea, e manaʻomia ona matou tusia a matou lava fuafuaga e faʻavasega ai lenei ki ma vaelua le tau o le accountId.

O le Kafka e aofia ai siaki tupe e iloa ai le piʻopiʻo o feʻau i totonu o le faleoloa ma o loʻo i ai se seti atoa o mea saogalemu. E ui lava i lea, o manaʻoga faʻapitoa faʻapitoa, e pei o le mea o loʻo i luga, e aliali mai i nisi taimi.

Ole faiga ole vaeluaga a le tagata e fa'aoga e tatau ona mautinoa e fa'ai'u uma fe'au feso'ota'i ile vaeluaga e tasi. E ui o lenei mea e foliga faigofie, o le manaʻoga e mafai ona faʻalavelave i le taua o le faʻatonuina o feʻau fesoʻotaʻi ma pe faʻafefea ona faʻamautu le numera o vaeluaga i se autu.

Ole numera o vaeluaga ile autu e mafai ona suia ile taimi, aua e mafai ona faʻaopoopo pe a ova atu felauaiga i tua atu o faʻamoemoega muamua. O le mea lea, e mafai ona feso'ota'i ki fe'au ma le vaeluaga na mua'i auina atu i ai, e fa'ailoa mai ai se vaega o le setete e fa'asoa i le va o fa'ata'ita'iga.

O le isi itu e tatau ona mafaufau i ai o le tufatufaina tutusa o feʻau i vaeluaga. E masani lava, o ki e le tufatufaina tutusa i fe'au, ma e le fa'amaonia e le hash le fa'asoaina lelei o fe'au mo se seti o ki.
E taua le maitauina e tusa lava pe e te filifili e vaevae feʻau, o le separator lava ia e manaʻomia le toe faʻaaogaina.

Manatunatu i le mana'oga e toe faia fa'amatalaga i le va o fuifui Kafka i nofoaga fa'afanua eseese. Mo lenei faʻamoemoe, e sau Kafka ma se meafaigaluega laina laina e taʻua o MirrorMaker, lea e faʻaaogaina e faitau ai feʻau mai le tasi fuifui ma faʻafeiloaʻi i le isi.

E tatau ona malamalama le MirrorMaker i ki o le autu toe faia ina ia mafai ai ona faatumauina le faasologa vavalalata i le va o feʻau pe a toe faia i le va o fuifui, talu ai e le tutusa le numera o vaega mo lena autu i ni fuifui se lua.

O ta'iala fa'apitoa e vaelua ai e fai lava si seasea, ona e lelei le fa'aogaina o le hashing po'o le round robin i le tele o fa'aaliga. Ae peitaʻi, afai e te manaʻomia ni faʻamaoniga malosi o le faʻatonuga poʻo le manaʻomia e aveese mai metadata mai uta, o le vaeluaga o se mea e tatau ona e vaʻai totoʻa i ai.

O le fa'alauteleina ma le fa'atinoga o fa'amanuiaga a Kafka e maua mai i le fa'aliliuina atu o nisi o matafaioi a le fai pisinisi masani i le kalani. I lenei tulaga, ua faia se fa'ai'uga e tufatufa atu fe'au e ono feso'ota'i i le tele o tagata fa'atau o lo'o galulue fa'atasi.

E manaʻomia foʻi e le au fai pisinisi a le JMS ona feagai ma ia manaʻoga. O le mea e malie ai, o le faiga mo le lafoina o feʻau fesoʻotaʻi i le tagata lava e tasi, faʻatinoina e ala i JMS Message Groups (o se fesuiaiga i luga o le faʻapipiʻiina o uta (SLB) taʻiala), e manaʻomia ai foʻi e le tagata e auina atu le faʻailoga o feʻau e fesoʻotaʻi. I le tulaga o le JMS, o le tagata fai pisinisi e nafa ma le auina atu o lenei vaega o feʻau fesoʻotaʻi i se tasi tagata faʻatau mai le tele, ma faʻaliliuina le pule o le vaega pe a pa'ū le tagata faʻatau.

Maliega Faumea

O le vaeluaga e le na o le pau lea o le mea e tatau ona mafaufau i ai pe a auina atu savali. Sei o tatou vaʻavaʻai i auala lafo () o le vasega Faufautua i le Java API:

Future < RecordMetadata > send(ProducerRecord < K, V > record);
Future < RecordMetadata > send(ProducerRecord < K, V > record, Callback callback);

E tatau ona vave maitauina o auala uma e lua e toe foʻi mai i le Lumanai, lea e faʻaalia ai e leʻo faia vave le gaioiga. O le i'uga o se fe'au (ProducerRecord) o lo'o tusia i le fa'apolopolo lafo mo vaeluaga ta'itasi ma tu'u atu i le tagata fai fa'atauva'a e fai ma filo i le faletusi o tagata Kafka. E ui o lenei mea e faʻavavevave ai mea, o lona uiga o se talosaga e leai se poto masani e mafai ona leiloa feʻau pe a taofi lana faagasologa.

E pei lava o taimi uma, o loʻo i ai se auala e faʻamaonia ai le faʻatonuga o le auina atu i le tau o le faʻatinoga. O le tele o lenei paʻu e mafai ona seti i le 0, ma o le lafoina o le filo talosaga o le a faʻamalosia e faʻatali seʻia maeʻa le faʻaliliuina o le feʻau i le tagata fai pisinisi, e pei ona taua i lalo:

RecordMetadata metadata = producer.send(record).get();

E uiga i le faitauina o fe'au

O le faitauina o fe'au e iai fa'alavelave fa'aopoopo e mana'omia ona taumatemate. E le pei o le JMS API, lea e mafai ona faʻatautaia se feʻau faʻalogo i le tali atu i se feʻau, o le tagata faatau Kafka na'o palota. Sei o tatou tilotilo totoa i le auala palota()faʻaaogaina mo lenei faʻamoemoe:

ConsumerRecords < K, V > poll(long timeout);

O le tau toe faafoi o le metotia o se fausaga atigipusa o loʻo i ai le tele o mea faitino fa'amaumauga a tagata fa'atau mai le tele o vaeluaga. fa'amaumauga a tagata fa'atau o ia lava o se mea e umia mo se pa'aga autu-taua ma metadata feso'ota'i, e pei o le vaeluaga e maua mai ai.

E pei ona talanoaina i le Mataupu 2, e tatau ona tatou manatua le mea e tupu i feʻau pe a maeʻa ona faʻatautaia pe le manuia, mo se faʻataʻitaʻiga, pe a le mafai e le tagata o tausia ona faʻagasolo le feʻau pe a faʻaumatia. I le JMS, na fa'atautaia lea e ala i se faiga fa'ailoa. O le a tapeina e le tagata fai pisinisi le feʻau faʻatautaia manuia, pe toe tuʻuina atu le feʻau mataʻutia poʻo le pepelo (faʻapea na faʻaaogaina fefaʻatauaiga).
E matua ese lava galuega a Kafka. O fe'au e le tapeina i totonu o le tagata fai pisinisi pe a mae'a fa'asalalau, ma o le a le mea e tupu i le toilalo o le matafaioi lea a le code proofreading lava ia.

E pei ona matou fai atu, o le vaega faʻatau e fesoʻotaʻi ma le offset i totonu o le ogalaau. Le tulaga ogalaau e fesootai ma lenei offset e fetaui ma le isi savali e tuuina atu e tali atu i palota(). O le taimi e fa'atuputeleina ai lea fa'asili e fa'ailo mo le faitau.

Toe fo'i i le fa'ata'ita'iga faitau na talanoaina muamua, o le faagasologa o fe'au e aofia ai vaega e tolu:

  1. Toe aumai se savali mo le faitau.
  2. Fa'agasolo le fe'au.
  3. Faamaonia le savali.

O le tagata faatau Kafka e sau ma se filifiliga faʻatulagaina enable.auto.commit. Ole fa'aoga masani lea ole fa'aoga masani, e pei ona masani ai fa'asologa o lo'o iai le upu "auto".

Aʻo leʻi oʻo i le Kafka 0.10, o le tagata o tausia e faʻaogaina lenei filifiliga o le a tuʻuina atu le faʻasalaga o le savali mulimuli na faitau i le isi telefoni. palota() ina ua uma le faagasologa. O lona uiga o so'o se fe'au ua uma ona aumai e mafai ona toe fa'agaioia pe afai ua uma ona fa'agasolo e le kalani ae fa'afuase'i ona fa'aumatia a'o le'i vala'au. palota(). Talu ai e le o tausia e le tagata fai pisinisi so'o se setete e uiga i le tele o taimi na faitau ai se fe'au, o le isi tagata fa'atau e toe aumai lena fe'au o le a le iloa se mea leaga na tupu. O lenei amio sa fai fa'afoliga. O le offset na faatoa faia pe afai e manuia le faagasologa o le feʻau, ae afai e faʻaumatia e le tagata faʻatau, o le a toe lafo atu e le tagata fai pisinisi le savali lava e tasi i se isi tagata faʻatau. O lenei amio sa ogatasi ma le fa'amaoniga o le momoliina o fe'au "ia le itiiti ifo ma le tasi".

I le Kafka 0.10, ua suia le code a le tagata o tausia ina ia faʻaosoina le tautinoga i lea taimi ma lea taimi e le potutusi a le kalani, e pei ona faʻatulagaina. auto.commit.interval.ms. Ole amio lea ole va ole JMS AUTO_ACKNOWLEDGE ma DUPS_OK_ACKNOWLEDGE. A fa'aogaina le autocommit, e mafai ona tu'uina atu fe'au tusa lava pe na fa'agasolo moni - e mafai ona tupu i le tulaga o se tagata fa'atau lemu. Afai e faapa'ū se tagata fa'atau, o le a aumai fe'au e le isi tagata fa'atau, e amata i le tulaga fa'amaoni, e ono i'u ai i se fe'au misi. I lenei tulaga, e leʻi leiloa e Kafka feʻau, e leʻi faʻaogaina e le code faitau.

O lenei faiga e tutusa lava le folafolaga e pei o le version 0.9: feʻau e mafai ona faʻagasolo, ae afai e le manuia, e le mafai ona faia le offset, e ono mafua ai ona faʻaluaina le tuʻuina atu. O le tele o fe'au e te aumaia pe a fa'atino palota(), o le tele foi lea o lenei faafitauli.

E pei ona talanoaina i le "Fa'atauina o Savali mai se Tulaga" i le itulau e 21, e leai se mea e ta'ua o le tu'uina atu o se fe'au e tasi le taimi i totonu o le faiga o fe'au pe'a fa'atatau i faiga fa'aletonu.

I totonu o Kafka, e lua auala e fai ai (fai) se offset (offset): otometi ma lima. I tulaga uma e lua, e mafai ona fa'agasolo fe'au i le tele o taimi pe a fai sa fa'agasolo le fe'au ae le'i faia le fa'atonuga. E mafai foi ona e filifili e aua neʻi faʻagasolo le feʻau pe a fai o le tautinoga na tupu i tua ma ua maeʻa lau code aʻo leʻi mafai ona faʻagasolo (atonu i Kafka 0.9 ma muamua).

E mafai ona e pulea le faʻaogaina o le faʻaogaina o le tusi lesona i le Kafka consumer API e ala i le setiina o le parakalafa enable.auto.commit i le sese ma le manino le valaʻau o se tasi o auala nei:

void commitSync();
void commitAsync();

Afai e te mana'o e fa'agasolo le fe'au "ia le itiiti ifo ma le tasi", e tatau ona e tu'uina ma le lima le offset commitSync()e ala i le faʻatinoina o lenei faʻatonuga i le taimi lava e maeʻa ai le gaioiga o feʻau.

O nei metotia e le fa'atagaina ai le fa'ailoaina o fe'au a'o le'i fa'againa, ae latou te le faia se mea e fa'aitiitia ai fa'atuai fa'agaioiga a'o tu'uina atu foliga o le fefa'ataua'iga. E leai ni fefaʻatauaiga i Kafka. E le maua e le kalani le malosi e fai ai mea nei:

  • Otometi ona toe fa'afo'i se fe'au pepelo. O tagata fa'atau lava latou e tatau ona taulimaina tuusaunoaga e afua mai i fa'afitauli tau totogi ma fa'aletonu i tua, aua e le mafai ona latou fa'alagolago i le tagata fai fa'atau e toe tu'uina atu fe'au.
  • Auina atu fe'au i ni autu se tele i le faagaioiga atomika e tasi. E pei ona o le a tatou vaʻaia i se taimi lata mai, o le puleaina o mataupu eseese ma vaeluaga e mafai ona nofo i luga o masini eseese i totonu o le Kafka cluster e le faʻamaopoopoina fefaʻatauaiga pe a lafo. I le taimi o lenei tusitusiga, o nisi o galuega ua faia ina ia mafai ai lenei mea i le KIP-98.
  • Fa'afeso'ota'i le faitauina o le tasi fe'au mai le tasi autu ma le lafoina o le isi fe'au i le isi autu. Ma le isi, o le fausaga o Kafka e faʻalagolago i le tele o masini tutoʻatasi o loʻo taʻavale e pei o le tasi pasi ma e leai se taumafaiga e natia lenei mea. Mo se faʻataʻitaʻiga, e leai ni vaega API e mafai ai ona e faʻafesoʻotaʻi tagata fa'atau и Tagata gaosi oloa i se fefa'atauaiga. I le JMS, o loʻo tuʻuina mai e le mea saunigaua faia mai ai MessageProducers и MessageConsumers.

Afai e le mafai ona tatou faʻalagolago i fefaʻatauaiga, e faʻafefea ona tatou tuʻuina atu semantics e latalata atu i mea na tuʻuina mai e faiga masani feʻau?

Afai e iai se avanoa e mafai ai ona fa'atupula'ia le fa'asili a le tagata fa'atau a'o le'i fa'agaioia le fe'au, e pei o le taimi o se fa'alavelave fa'atau, e leai se auala e iloa ai e le tagata fa'atau pe na misia e lana vaega fa'atau le fe'au ina ua tu'uina atu se vaeluaga. O le tasi la fuafuaga o le toe viliina o le offset i le tulaga muamua. O le Kafka consumer API o loʻo tuʻuina atu auala nei mo lenei:

void seek(TopicPartition partition, long offset);
void seekToBeginning(Collection < TopicPartition > partitions);

Metotia saili() e mafai ona faʻaaogaina i le auala
offsetsForTimes(Map faailoga taimiToSearch) e toe fa'afo'i atu i se tulaga i se tulaga patino i le taimi ua tuana'i.

O lona uiga, o le faʻaaogaina o lenei auala e foliga mai o nisi o feʻau na faʻatautaia muamua o le a toe faitau ma toe faʻagasolo. Ina ia aloese mai lenei mea, e mafai ona tatou faʻaogaina le faitau faʻapitoa, e pei ona faʻamatalaina i le Mataupu 4, e siaki ai savali na vaʻaia muamua ma faʻaumatia faʻalua.

I le isi itu, e mafai ona fa'afaigofie lau fa'ailoga fa'atau, pe a talia le leiloa po'o le fa'aluaina o fe'au. A matou mafaufau i le faʻaaogaina o mataupu e masani ona faʻaaogaina ai Kafka, e pei o le faʻaogaina o mea e tutupu i le log, metrics, kiliki le siakiina, ma isi, matou te malamalama o le leiloa o feʻau taʻitasi e ono le i ai se aafiaga taua i luga o talosaga lata ane. I ia tulaga, o tau fa'aletonu e talia atoatoa. I le isi itu, afai e manaʻomia e lau talosaga ona lafo tupe totogi, e tatau ona e tausia lelei feʻau taʻitasi. E sau uma i lalo i le talaaga.

O faʻamatalaga a le tagata lava ia e faʻaalia ai a faʻateleina le malosi o feʻau, e faʻaitiitia le tau o savali taʻitasi. O fe'au tetele e masani ona taua pe a va'ai i se fa'aputuga fa'atasi.

Avanoa maualuga

Ole auala a Kafka ile avanoa maualuga e matua ese lava mai le auala a ActiveMQ. O le Kafka ua mamanuina e faʻataʻamilo i fuifui faʻalautele e maua ai ma tufatufa atu feʻau uma i le taimi e tasi.

O le Kafka cluster e aofia ai le tele o faʻasalalauga faʻatautaia i luga o sapalai eseese. Na mamanuina Kafka e tamoʻe i luga o meafaigaluega faʻapitoa masani, lea o loʻo i ai i node taʻitasi lana lava teuina faʻapitoa. E le fautuaina le fa'aogaina o feso'ota'iga fa'apipi'i fa'apipi'i (SAN) ona e tele nodes fa'akomepiuta e mafai ona tauva mo le taimi.Ыu taimi e teu ai ma fa'atupu fete'ena'iga.

Kafka o i taimi uma faiga. O le tele o tagata fa'aoga Kafka e le mafai lava ona tapunia a latou fuifui ma e fa'afou pea le polokalama fa'atasi ma se fa'asologa fa'asolosolo. E maua lenei mea e ala i le faʻamautinoaina o le fetaui ma le lomiga muamua mo feʻau ma fegalegaleaiga i le va o tagata fai pisinisi.

Brokers e feso'ota'i i se fuifui server Faleoloa o le ZooKeeper, lea e fai ma fa'amaumauga o fa'amaumauga ma fa'aogaina e fa'amaopoopo ai matafaioi a tagata fai pisinisi ta'itasi. O le ZooKeeper lava ia o se faiga tufatufaina e maua ai avanoa maualuga e ala i le toe faia o faʻamatalaga e ala i le faʻavaeina korama.

I le mataupu faavae, o se autu e faia i totonu o se fuifui Kafka ma mea nei:

  • Le numera o vaeluaga. E pei ona talanoaina muamua, o le tau tonu o loʻo faʻaaogaina iinei e faʻalagolago i le tulaga manaʻomia o le faitau tutusa.
  • O le fa'asologa o fa'asologa (factor) e iloa ai pe fia ni fa'asalalauga fa'atau i le fuifui e tatau ona iai ni ogalaau mo lenei vaeluaga.

I le faʻaaogaina o ZooKeepers mo le faʻamaopoopoina, e taumafai Kafka e tufatufa saʻo ni vaega fou i le au fai pisinisi i le fuifui. E faia lenei mea i se fa'ata'ita'iga e tasi e galue o se Pule.

I le ta'aloga mo vaega autu taitasi Pule tofia ni matafaioi i se faioloa taitai (ta'ita'i, matai, fa'atonu) ma soo (soo, pologa, subordinates). O le tagata fai pisinisi, e fai ma taʻitaʻi mo lenei vaeluaga, e nafa ma le mauaina o feʻau uma na lafoina i ai e le au gaosi oloa ma tufatufa atu feʻau i tagata faʻatau. A lafo atu fe'au i se vaeluaga autu, e toe fa'atusaina i nodes uma e fai fefa'ataua'iga e fai ma so'o mo lena vaeluaga. O node ta'itasi o lo'o iai ogalaau mo se vaeluaga e ta'ua fa'atusa. E mafai e se faioloa ona galue o se taʻitaʻi mo nisi vaega ma avea ma se mulimuli mo isi.

O se soo o loo i ai savali uma o loo umia e le taitai e valaauina fa'atusa fa'atasi (se fa'atusa o lo'o i totonu o se tu'aiga fa'amaopoopo, fa'atusa fa'atasi). Afai e alu i lalo se faioloa e fai ma ta'ita'i mo se vaeluaga, so'o se tagata fai pisinisi e fa'afou pe fa'amaopoopoina mo lena vaeluaga e mafai ona fa'afoeina le matafaioi ta'ita'i. Ose mamanu fa'atumauina.

O se vaega o le faʻatulagaina o le gaosiga o le parakalafa acks, lea e fuafua ai pe fia ni kopi e tatau ona fa'ailoa (fa'ailoa) le mauaina o se fe'au a'o le'i fa'aauau le auina atu o le filo talosaga: 0, 1, po'o le uma. Afai e seti i uma, ona maua lea o se fe'au, o le a toe lafo atu e le ta'ita'i se fa'amaoniga i le tagata gaosi oloa i le taimi lava e maua ai fa'amaoniga (fa'afetai) o fa'amaumauga mai le tele o fa'ailoga (e aofia ai ma ia lava) fa'amatalaina e le fa'atulagaga autu. min.insync.replicas (tauaga 1). Afai e le mafai ona toe faʻafeiloaʻi lelei le feʻau, ona tuʻuina atu lea e le tagata gaosi se faʻasalaga talosaga (Fa'ailoga Fa'atusa poʻo NotEnoughReplicasAfterAppend).

O se faʻatulagaga masani e fatuina ai se autu ma se faʻasologa o le 3 (1 taʻitaʻi, 2 soʻo i le vaeluaga) ma le parakalafa min.insync.replicas ua seti i le 2. I lenei tulaga, o le a faʻatagaina e le fuifui se tasi o le aufaipisinisi e pulea le vaeluaga autu e alu i lalo e aunoa ma le afaina ai o talosaga a le tagata o tausia.

O lea e toe fa'afo'i ai i tatou i le fefa'ataua'iga masani i le va o le fa'atinoga ma le fa'amaoni. O le toe fa'afoliga e tupu i le fa'aaluina o taimi fa'atali fa'aopoopo mo fa'amaoniga (fa'afetai) mai tagata mulimuli. E ui lava, talu ai o loʻo faʻasolosolo tutusa, o le toe faia i le itiiti ifo ma le tolu nodes e tutusa le faʻatinoga ma le lua (le amanaʻiaina le faʻateleina o le faʻaogaina o le bandwidth network).

I le faʻaaogaina o lenei faiga faʻapipiʻi, e aloese mai ai ma le poto Kafka le manaʻoga e tusi faʻaletino feʻau taʻitasi i le tisiki ma le gaioiga. sync(). O fe'au ta'itasi e lafo mai e le tagata gaosi mea o le a tusia i le log partition, ae pei ona talanoaina i le Mataupu 2, o le tusitusi i se faila e faia muamua i le pa'u o le faiga fa'aoga. Afai e toe fa'afo'i lenei fe'au i se isi fa'ata'ita'iga a Kafka ma o lo'o manatua pea, o le leiloa o le ta'ita'i e le fa'apea ua leiloa le fe'au lava ia - e mafai ona fa'aaogaina e se fa'asologa fa'atasi.
Le musu e fai le taotoga sync() o lona uiga e mafai e Kafka ona maua feʻau i le vave e mafai ona tusi ai i le mafaufau. I le isi itu, o le umi e mafai ona e aloese mai le faʻafefe o le manatua i le disk, o le sili atu lea. Mo lenei mafuaʻaga, e le o se mea e masani ai mo Kafka brokers e tuʻuina atu le 64 GB poʻo le sili atu o le manatua. O lenei fa'aoga manatua o lona uiga o se fa'ata'ita'iga Kafka e tasi e faigofie ona tamo'e i saosaoa i le tele o afe o taimi e sili atu le vave nai lo le fa'asalalauga masani.

E mafai foi ona faʻatulagaina Kafka e faʻaoga le gaioiga sync() i afifi fe'au. Talu ai o mea uma i Kafka o loʻo faʻatatau i pusa, e aoga tele mo le tele o faʻaoga mataupu ma o se meafaigaluega aoga mo tagata faʻaoga e manaʻomia ni faʻamaoniga malosi. O le tele o le faatinoga mama a Kafka e sau mai feʻau o loʻo auina atu i le tagata e faia fefaʻatauaiga o ni afifi ma o nei feʻau e faitau mai le tagata faʻatau oloa i poloka faʻasolosolo e faʻaaoga ai. leai se kopi fa'agaioiga (fa'agaioiga i le taimi e le faia ai le galuega o le kopiina o fa'amaumauga mai le tasi vaega manatua i le isi). O le mea mulimuli o se fa'atinoga tele ma fa'ameamea e maua ma e na'o le fa'aogaina o se fa'asologa o fa'amaumauga o fa'amaumauga o lo'o fa'amatalaina ai le faiga vaeluaga.

E sili atu le lelei o le faʻatinoga e mafai i totonu o le Kafka cluster nai lo le tasi le Kafka broker, aua e mafai ona faʻasalalau vaega autu i luga o le tele o masini eseese.

O taunuʻuga

I lenei mataupu, na matou vaʻavaʻai i le auala e toe faʻafoʻi ai e le fausaga a Kafka le sootaga i le va o tagata faʻatau ma tagata faʻatau oloa e tuʻuina atu se paipa feʻau feʻau sili ona malosi, ma le tele o taimi e sili atu nai lo le faʻasalalauga masani. Ua matou talanoaina le faʻaogaina o loʻo faʻaaogaina e ausia ai lenei mea ma vaʻavaʻai puupuu i le fausaga o talosaga o loʻo tuʻuina atu ai lenei galuega. I le isi mataupu, o le a tatou vaʻavaʻai i faʻafitauli masani e manaʻomia e talosaga e faʻatatau i feʻau e foʻia ma talanoaina taʻiala mo le taulimaina. O le a matou fa'ai'u le mataupu e ala i le fa'amatalaina pe fa'afefea ona talanoa e uiga i tekonolosi fe'au i se tulaga lautele ina ia mafai ai ona e iloiloina lo latou talafeagai mo au fa'aoga tulaga.

Vaega fa'aliliu muamua: Malamalama i tagata fai fe'au. A'oa'oina le fa'ainisinia o fe'au fa'atasi ma ActiveMQ ma Kafka. Mataupu 1

Fa'aliliuga ua mae'a: tele.gg/middle_java

Ia toe faauau…

Na'o tagata fa'aigoaina e mafai ona auai i le su'esu'ega. Saini ese j, faʻamolemole.

O fa'aoga Kafka i lau fa'alapotopotoga?

  • lea

  • leai

  • Sa fa'aaoga muamua, ae le'o nei

  • Matou te fuafua e faʻaaoga

38 tagata fa'aoga na palota. 8 tagata fa'aoga na le fa'aaogaina.

puna: www.habr.com

Faaopoopo i ai se faamatalaga