He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

He aha te kaha o te kamupene nui penei i a Lamoda me te huarahi ngawari me te maha o nga ratonga honohono ki te whakarereke i tana huarahi? Ka taea te tino rerekee te hihiri: mai i te ture ki te hiahia ki te whakamatautau i roto i nga kaiwhakatakoto htaka katoa.

Engari ehara tenei i te mea kaore e taea e koe te whakawhirinaki ki etahi atu painga. Ka korero a Sergey Zaika ki a koe he aha te mea ka taea e koe te wikitoria mena ka whakatinanahia e koe te API e peia ana e nga huihuinga ki Kafka (tokoiti). Ka puta ano etahi puku me nga kitenga whakamere - kaore e taea e te whakamatautau te kore.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

Whakakahoretanga: Ko tenei tuhinga i ahu mai i nga rauemi mai i te huihuinga i whakahaerehia e Sergey i te Whiringa-a-rangi 2018 i runga HighLoad++. Ko te wheako ora a Lamoda mo te mahi tahi me Kafka i aro atu ki nga kai whakarongo kaore i iti ake i era atu purongo i runga i te raarangi. Ki ta matou whakaaro he tauira pai tenei mo te meka ka taea e koe me te kimi i nga tangata rite tonu te whakaaro, a ka ngana tonu nga kaiwhakarite o HighLoad++ ki te hanga i tetahi wairua e pai ana ki tenei.

Mo te tukanga

Ko Lamoda he papaa-e-hokohoko nui kei a ia ano tana ake pokapū whakapā, ratonga tuku (me te maha o nga hononga), he whare whakaahua, he whare putunga nui me enei mea katoa kei runga i tana ake rorohiko. He maha nga tikanga utu, hoa b2b ka whakamahi pea i etahi, katoa ranei o enei ratonga me te hiahia ki te mohio ki nga korero hou mo o raatau hua. I tua atu, kei te whakahaere a Lamoda i nga whenua e toru i tua atu i te Russian Federation me nga mea katoa he rereke rereke ki reira. Hui katoa, neke atu pea i te kotahi rau nga huarahi ki te whirihora i tetahi ota hou, me whakahaere i a ia ano. Ka mahi enei mea katoa me te awhina o te maha o nga ratonga e korero ana i etahi wa kaore i te maarama. Kei reira ano tetahi punaha matua ko nga mana ota te kawenga matua. Ka karanga matou ki a ia ko BOB, ka mahi ahau ki a ia.

Utauta Whakahoki me te API e peia ana e nga huihuinga

Ko te kupu e akiakihia ana e nga huihuinga he tino hackneyed; he iti ake nei ka whakamaramatia e matou he aha te tikanga o tenei. Ka timata ahau me te horopaki i whakatau ai matou ki te whakamatau i te huarahi API i peia e nga huihuinga i Kafka.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

I roto i tetahi toa, i tua atu i nga ota ka utua e nga kaihoko, i etahi wa ka hiahiatia te toa ki te whakahoki moni na te mea kaore i pai te hua ki te kaihoko. He mahinga poto tenei: ka whakamaramahia e matou nga korero, mehemea e tika ana, me te whakawhiti i te moni.

Engari i uaua ake te hokinga mai na te whakarereketanga o nga ture, a me whakauru e matou he ratonga miihini motuhake mo taua mea.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

To tatou hihiri:

  1. Ture FZ-54 - poto, me whakaatu te ture ki te tari taake mo ia tauwhitinga moni, ahakoa he whakahoki mai, he rihīti ranei, i roto i te SLA poto mo etahi meneti. Ko matou, he kamupene e-tauhokohoko, he maha nga mahi. Ko te tikanga, he kawenga hou tenei (ko te tikanga he ratonga hou) me nga whakapainga i roto i nga punaha whai waahi katoa.
  2. Ko te wehenga BOB - he kaupapa o roto o te kamupene ki te whakakore i te BOB i te maha o nga kawenga kore-matua me te whakaiti i te tino uaua.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

Ko tenei hoahoa e whakaatu ana i nga punaha matua o Lamoda. Inaianei kua rite te nuinga o ratou he huinga whetū o te 5-10 microservices huri noa i te monolith e mimiti haere ana. Kei te puhoi te tipu, engari kei te ngana taatau ki te whakaiti i a raatau, na te mea he whakamataku te tuku i te kongakonga kua tohua ki waenganui - kaore e taea e tatou te tuku kia taka. Ka akiakihia matou ki te rahui i nga whakawhitinga katoa (pere) me te whakaaro ko tetahi o enei ka puta mai kaore i te waatea.

He maha ano nga whakawhitinga i roto i te BOB: nga punaha utu, nga punaha tuku, nga punaha panui, me era atu.

Ko te BOB he:

  • ~150k rārangi waehere + ~100k rārangi whakamātautau;
  • php7.2 + Zend 1 & Symfony Wae 3;
  • >100 API & ~50 whakaurunga ki waho;
  • 4 whenua me o raatau ake arorau pakihi.

He nui te utu me te mamae o te whakamahi i te BOB, ko te nui o te waehere me nga raru e whakaotihia ana e kore e taea e tetahi te takai katoa o ratou mahunga. I te nuinga o te waa, he maha nga take hei whakangawari ake.

Tukanga Whakahoki

I te timatanga, e rua nga punaha kei roto i te mahi: BOB me te Utu. Inaianei e rua ano ka puta:

  • Ko te Ratonga Whakataunga Moni, ka whakahaere i nga raru o te whakahaerenga moni me te whakawhitiwhiti korero me nga ratonga o waho.
  • Utauta Whakahoki, ka taapirihia nga whakawhitinga hou kia kore ai e pupuhi te BOB.

Inaianei he penei te ahua o te tukanga:

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

  1. Ka whiwhi tono a BOB mo te whakahoki.
  2. Ka korero a BOB mo tenei Utauta Whakahoki.
  3. Ka kii te Utauta Whakahoki ki te Utu: "Whakahokia te moni."
  4. Ka whakahokia e te utu te moni.
  5. Ko te Utauta Whakahoki me te BOB ka tukutahi i nga mana ki a raatau ano, na te mea kei te hiahia raua tokorua. Kaore ano matou kia rite ki te huri katoa ki te Utauta Whakahoki, na te mea he UI a BOB, he ripoata mo te kaute, me te nuinga o nga raraunga kaore e taea te whakawhiti ngawari. Me noho koe ki runga i nga tuuru e rua.
  6. Kei te wehe atu te tono mo te tahua moni.

Ko te mutunga mai, i hanga e matou he momo pahi hui i runga i Kafka - hui-pahi, i timata ai nga mea katoa. Hurray, inaianei kei a tatou tetahi waahi o te kore (srcasm).

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

He tino kitea nga pai me nga huakore. I hanga e matou he pahi, ko te tikanga inaianei kei runga nga ratonga katoa. Ma tenei ka ngawari te hoahoa, engari ka whakauru i te waahi kotahi o te korenga ki te punaha. Ka hinga a Kafka, ka mutu te mahi.

He aha te API e peia ana e nga huihuinga

He pai te whakautu ki tenei patai kei roto i te ripoata a Martin Fowler (GOTO 2017) "Ko nga tikanga maha o te hoahoanga-a-takahanga".

He poto ta matou i mahi:

  1. Takahia nga whakawhitinga tukutahi ma rokiroki takahanga. Engari i te whakamohio ki nga kaihoko hiahia katoa mo te whakarereketanga mana i runga i te whatunga, ka tuhia e matou he huihuinga mo te huringa mana ki te putunga putunga, ka panuihia e nga kaihoko e hiahia ana ki te kaupapa nga mea katoa ka puta mai i reira.
  2. Ko te huihuinga i tenei keehi he panui (whakamōhiotanga) mo te mea kua rereke tetahi mea ki tetahi waahi. Hei tauira, kua huri te mana ota. Ko te kaihoko e aro nui ana ki etahi raraunga e whai ana i te huringa o te mana me te kore e uru ki te panui ka taea e ia te mohio ki o raatau mana.
  3. Ko te kowhiringa teitei ko te mahinga takahanga katoa, whakawhiti kāwanatanga, kei roto i te huihuinga nga korero katoa e tika ana mo te tukatuka: i ahu mai i hea me te aha te mana i haere, pehea te whakarereketanga o nga raraunga, me era atu. Ko te patai anake ko te whaihua me te nui o nga korero ka taea e koe te penapena.

Hei waahanga o te whakarewatanga o te Utauta Whakahoki, i whakamahia e matou te waahanga tuatoru. Ko tenei mahinga takahanga ngawari mai i te mea kaore he take ki te tango i nga korero taipitopito, me te whakakore i te ahuatanga e puta mai ai nga huihuinga hou ki te whakamarama i nga tono mai i nga kaihoko.

Ratonga Utauta Whakahoki kaore i utaina, na Kafka he nui ake te reka o te pene i te mea e tika ana. Ki taku whakaaro kaore he kaupapa utu nui te ratonga whakahoki, ka koa te pakihi.

Whakawhiti Async AS IS

Mo nga whakawhitinga tukutahi, ka whakamahia e te tari PHP te RabbitMQ. I kohia e matou nga raraunga mo te tono, ka maka ki roto i te rarangi, ka whakaarohia e te kaihoko o taua ratonga ka tukuna atu (kaore ranei i tukuna). Mo te API ake, ka kaha te whakamahi a Lamoda i te Swagger. Ka hoahoatia e matou he API, ka whakaahuahia i roto i te Swagger, ka whakaputa i te waehere kiritaki me te tūmau. Ka whakamahia hoki e matou he JSON RPC 2.0 kua whakapai ake.

I etahi waahi ka whakamahia nga pahi ESB, ka noho etahi ki runga activeMQ, engari, i te nuinga, Ko RabbitMQ te paerewa.

Whakawhiti Async TO BE

I te wa e hoahoa ana i te whakawhiti ma te kaupapa-pahio, ka taea te whai i te whakataurite. He pera ano, ka whakaahua matou i te whakawhiti raraunga a meake nei ma nga whakaahuatanga hanganga takahanga. Ko te whakatakotoranga yaml, ma matou ano e mahi te whakaputanga waehere, ka hangaia e te kaihanga nga DTO kia rite ki te whakaritenga me te ako i nga kaihoko me nga kaitoro ki te mahi tahi me ratou. Ko te whakatipuranga kei roto i nga reo e rua: golang me php. Ka awhina tenei i nga whare pukapuka kia rite tonu. Kua tuhia te kaihanga ki te golang, na reira i tapaina ai te ingoa gogi.

Ko te mahinga-a-takahanga i runga i Kafka he mea angamaheni. He otinga mai i te putanga hinonga matua o Kafka Confluent, kei reira nakadi, he otinga mai i o tatou teina rohe a Zalando. To tatou te hihiri ki te tiimata me te vanilla Kafka - me waiho noa te otinga kia oti ra ano te whakatau mena ka whakamahia e matou ki nga waahi katoa, me te waiho ano he waahi mo matou mo te mahi me te whakapai ake: e hiahia ana matou ki te tautoko mo o maatau JSON RPC 2.0, kaihanga mo nga reo e rua ka kite tatou he aha atu.

He mea whakahihiri ahakoa i roto i te waimarie he pakihi rite tonu, a Zalando, i hanga he otinga tino rite, kaore e taea e taatau te whakamahi pai.

Ko te tauira hoahoanga i te whakarewatanga e whai ake nei: ka panui tika mai i Kafka, engari ka tuhi noa ma nga huihuinga-pahi. He maha nga mea kua oti te hanga i Kafka mo te panui: he kaihokohoko, he taurite, he iti ake ranei mo te whakatauira whakapae, i hiahia ahau ki te pupuri i tenei. Te tuhi, i hiahia matou ki te haere ma tetahi Gateway aka Events-bus, a koinei te take.

Takahanga-pahi

He pahi takahanga ranei. He kuaha http korekore noa tenei, e kawe ana i etahi mahi nui:

  • Te Whakaputanga Whakamana — ka tirohia e matou ka tutuki nga huihuinga ki o maatau korero.
  • Pūnaha matua takahanga, ara, koinei te punaha matua me te punaha anake i roto i te kamupene e whakautu ana i te patai he aha nga huihuinga e kiia ana he tika nga hanganga. Ko te whakamanatanga ka uru noa nga momo raraunga me nga enume hei whakapumau i nga ihirangi.
  • Mahi Hash mo te sharding - ko te hanganga o te karere Kafka he uara-matua, a, i runga i te hash o te ki, ka tatauhia ki hea ka tuu.

He aha

Mahi matou i roto i te kamupene nui ki te tukanga kaunuku. He aha te whakarereke i tetahi mea? He whakamatautau tenei, a e manako ana matou ka kooti etahi painga.

1:n+1 whakawhitinga (kotahi ki te maha)

Ma te Kafka he tino ngawari ki te hono atu i nga kaihoko hou ki te API.

Me kii kei a koe he raarangi korero e tika ana kia mau tonu koe ki nga punaha maha i te wa kotahi (me etahi mea hou). I mua, i hangaia e matou he paihere i whakatinana i te huinga-API, me te whakarato i te punaha matua me nga wahitau kaihoko. Inaianei ka tukuna e te punaha rangatira nga whakahoutanga ki te kaupapa, ka panuihia e te hunga katoa e hiahia ana. Kua puta mai he punaha hou - i hainatia e matou mo te kaupapa. Ae, paihere hoki, engari ngawari ake.

I roto i te take o te utu-taputapu, he waahanga o te BOB, he pai ki a maatau ki te pupuri i a raatau ma te Kafka. Ko te utu e kii ana i whakahokia mai nga moni: BOB, RT i mohio mo tenei, i whakarereke i o raatau mana, i kitea e te Ratonga Whakataunga mo tenei ka tukuna he haki.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

Kei a matou he mahere ki te hanga i tetahi Ratonga Whakamōhiotanga whakakotahi hei whakamohio i te kaihoko mo nga purongo mo tana ota/whakahoki mai. Inaianei kua horahia tenei kawenga ki waenga i nga punaha. Ka nui maau ki te whakaako i te Ratonga Whakamōhiotanga ki te hopu i nga korero e tika ana mai i a Kafka me te urupare ki a ia (me te whakakore i enei whakamohiotanga ki etahi atu punaha). Karekau he whakawhitinga tika hou e hiahiatia ana.

Ka peia te Raraunga

Ko nga korero i waenga i nga punaha ka marama - ahakoa he aha te "hinonga toto" kei a koe me te ahua o to putea. He tari Tatari Raraunga a Lamoda e kohikohi ana i nga raraunga mai i nga punaha me te kawe mai ki te ahua ka taea te whakamahi, mo nga umanga me nga punaha mohio. Ka taea e Kafka te tuku tere ki a raatau i te maha o nga raraunga me te pupuri i nga korero e rere ana.

Rangitaki tukurua

Karekau nga karere e ngaro i muri i te panuitanga, penei i a RabbitMQ. Ina he nui nga korero o tetahi huihuinga mo te tukatuka, kei a matou he hitori o nga huringa hou ki te ahanoa, a, ki te hiahiatia, te kaha ki te whakamahi i enei huringa.

Ko te wa rokiroki o te raarangi tukurua ka whakawhirinaki ki te kaha o te rekoata i tenei kaupapa; Ka taea e Kafka ki a koe te whakarite ngawari mo te waa rokiroki me te rahinga raraunga. Mo nga kaupapa kaha, he mea nui kia whai taima nga kaihoko katoa ki te panui i nga korero i mua i te ngaro atu, ahakoa mo te wa poto kaore e taea te mahi. Ko te tikanga ka taea te penapena raraunga mo waeine o nga ra, he tino ranea hei tautoko.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

I muri mai, he korero iti mo nga tuhinga, mo te hunga kaore i te mohio ki a Kafka (ko te pikitia mai i nga tuhinga)

Kei te AMQP nga rarangi: ka tuhi matou i nga karere ki tetahi rarangi mo te kaihoko. I te nuinga o te waa, ka whakahaerea tetahi rarangi e tetahi punaha me te arorau pakihi kotahi. Mena ka hiahia koe ki te whakamohio i nga punaha maha, ka taea e koe te ako i te tono ki te tuhi ki nga rarangi maha, ki te whakarite ranei i te whakawhiti me te miihini fanout, ka whakakao i a raatau ake.

He rite te tangohanga a Kafka kaupapa, ka tuhia e koe nga karere, engari kaore e ngaro i muri i te panui. Ma te taunoa, ka hono koe ki a Kafka, ka whiwhi koe i nga karere katoa ka whai waahi koe ki te tiaki i te waahi i mutu ai koe. Arā, ka panui koe i te raupapa, kaore pea koe e tohu i te panui kua panuihia, engari tiakina te id e taea ai e koe te panui i muri mai. Ko te Id i whakatauhia e koe ka kiia ko te offset, ko te tikanga ko te commit offset.

Na reira, ka taea te whakatinana i nga whakaaro rereke. Hei tauira, kei a matou he BOB i roto i nga wa 4 mo nga whenua rereke - Ko Lamoda kei Russia, Kazakhstan, Ukraine, Belarus. I te mea kua tohatohahia ratou, he paku rereke nga whirihora me o raatau ake arorau pakihi. Ka tohu matou i roto i te panui ko tehea whenua e korero ana. Ko ia kaihoko BOB o ia whenua ka panui me tetahi roopuId rereke, a ki te kore e pa te karere ki a ia, ka pekehia e ratou, ara. ka mahia tonutia te utu +1. Mena ka panuihia e ta maatau Ratonga Utu te kaupapa kotahi, katahi ka mahia tenei me tetahi roopu motuhake, na reira kaore nga utu e whiti.

Nga whakaritenga takahanga:

  • Te whakaotinga raraunga. Kei te pirangi ahau kia nui nga raraunga o te huihuinga kia taea ai te whakahaere.

  • Te tapatahi. Ka tukuna e matou ki nga Takahanga-pahi te haki he rite tonu te huihuinga ka taea e ia te whakahaere.
  • He mea nui te ota. I te hokinga mai, ka kaha taatau ki te mahi me te hitori. Ma nga whakamohiotanga, ehara i te mea nui te ota, mena he whakamohiotanga riterite, ka rite tonu te imeera ahakoa ko tehea ota i tae tuatahi mai. I roto i te take o te moni whakahoki, he tikanga marama; ki te whakarereketia e tatou te ota, katahi ka puta ake nga tuunga, kaore e hangahia, ka tukatukahia ranei te moni whakahoki - ka mutu taatau ki tetahi ahuatanga rereke.
  • Te riterite. Kei a matou te rokiroki, inaianei ka hangaia e matou nga huihuinga hei utu mo nga API. E hiahia ana matou ki tetahi huarahi ki te tuku korero tere me te ngawari mo nga huihuinga hou me nga huringa ki nga mea o mua ki a maatau ratonga. Ka tutuki tenei ma te whakamahi i tetahi tohu noa i roto i te putunga git motuhake me nga kaihanga waehere. Na reira, ko nga kaihoko me nga kaitoro i roto i nga ratonga rereke e rite ana ki a maatau.

Kafka i Lamoda

E toru nga whakaurunga Kafka:

  1. Rangitaki;
  2. R&D;
  3. Takahanga-pahi.

I tenei ra ka korero noa tatou mo te kaupapa whakamutunga. I nga huihuinga-pahi karekau he whakaurunga tino nui - 3 kaihokohoko (tūmau) me nga kaupapa 27 anake. Ko te tikanga, ko tetahi kaupapa he tukanga kotahi. Engari he kaupapa ngawari tenei, a inaianei ka pa atu tatou.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

Kei runga ko te kauwhata rps. Ko te tukanga whakahoki kua tohua ki te raina turquoise (ae, kei runga i te tuaka-X), a ko te raina mawhero ko te tukanga whakahou ihirangi.

Kei roto i te pukapuka Lamoda nga miriona o nga hua, ka whakahoutia nga raraunga i nga wa katoa. Ko etahi o nga kohinga ka puta mai i te ahua, ka tukuna nga mea hou hei whakakapi, ka puta tonu nga tauira hou ki te raarangi. Ka ngana matou ki te matapae he aha nga mea ka pai ki o taatau kaihoko apopo, no reira ka hoko tonu matou i nga mea hou, ka whakaahuahia, ka whakahou i te kete whakaatu.

Ko nga tihi mawhero he whakahoutanga hua, ara, nga huringa o nga hua. E marama ana i tango pikitia nga taane, i tango pikitia, katahi ano! — i utaina he kohinga huihuinga.

Lamoda Events whakamahi take

Ka whakamahia e matou te hoahoanga i hangaia mo nga mahi e whai ake nei:

  • Aroturuki mana whakahoki: karanga-ki-mahi me te aroturuki mana mai i nga punaha whai waahi katoa. Te utu, te mana, te whakamohiotanga, te whakamohiotanga. I konei i whakamatauhia e matou te huarahi, i hanga taputapu, i kohia nga pepeke katoa, i tuhi tuhinga me te korero ki o matou hoa me pehea te whakamahi.
  • Kei te whakahou i nga kaari hua: whirihoranga, meta-raraunga, ahuatanga. Kotahi te punaha e panui ana (e whakaatu ana), he maha nga tuhi.
  • Īmēra, pana me te sms: kua kohia te ota, kua tae mai te ota, kua whakaaetia te whakahoki, aha atu, he maha.
  • He taonga, he whakahou whare putunga — te whakahou ine o nga taonga, tau noa: ka tae ki te whare putunga, hoki mai. He mea tika kia mahi nga punaha katoa e pa ana ki te rahui o nga taonga me nga raraunga o naianei. I tenei wa, he tino uaua te punaha whakahou kararehe; Ka ngawari ake a Kafka.
  • Raraunga Raraunga (R&D tari), taputapu ML, tātaritanga, tatauranga. Kei te pirangi matou kia marama nga korero, koinei te mea pai mo Kafka.

Inaianei ko te waahanga pai ake mo nga putunga nui me nga kitenga whakamere i puta i nga marama e ono kua hipa.

Nga raruraru hoahoa

Me kii e hiahia ana matou ki te mahi i tetahi mea hou - hei tauira, whakawhiti i te tukanga tuku katoa ki Kafka. Inaianei kua whakatinanahia tetahi waahanga o te mahi i roto i te Tukatuka Whakataunga i BOB. I muri i te whakawhitinga o te ota ki te ratonga tuku, te neke ki te whare putunga takawaenga, me era atu, he tauira mana. He monolith katoa, ara e rua, me te paihere o nga API kua whakatapua ki te tuku. He nui ake o raatau mohio mo te tuku.

He ahua rite enei, engari he rereke nga ahuatanga mo te Tukatuka Whakatau i BOB me te punaha kaipuke. Hei tauira, ko etahi o nga ratonga karere kaore e tuku i nga ahuatanga takawaenga, engari ko nga mea whakamutunga anake: "kua tukuna", "kua ngaro". Ko etahi atu, engari, he nui nga korero mo te nekehanga o nga taonga. Kei ia tangata tana ake ture whakamana: mo etahi, he tika te imeera, ko te tikanga ka whakahaeretia; mo etahi kaore i te mana, engari ka whakahaerea tonutia te ota na te mea he nama waea mo te whakapiri, ka kii etahi karekau rawa e whakahaerea taua ota.

Te awa raraunga

I roto i te take o Kafka, ka puta te patai mo te whakarite i te rerenga raraunga. Ko tenei mahi ko te kowhiri i tetahi rautaki i runga i nga waahanga maha; me haere katoa.

I roto i te kaupapa kotahi, i nga kaupapa rereke ranei?

Kei a matou he whakaritenga kaupapa. I roto i te BOB ka tuhia e matou ko te ota pera me tera me tuku, me te tohu: te nama ota, nga mea kei roto, etahi SKU me nga tohu pae, aha atu. Ka tae mai nga taonga ki te whare putunga, ka taea e te tuku te whiwhi mana, tohu wa me nga mea katoa e hiahiatia ana. Engari ka hiahia matou ki te whiwhi whakahou mo enei raraunga i BOB. He tukanga whakamuri ta matou ki te tiki raraunga mai i te tuku. He rite tonu tenei kaupapa? He whakawhitinga motuhake ranei tenei e tika ana mo tana ake kaupapa?

Ko te nuinga, ka tino rite ratou, a, ko te whakamatautau ki te hanga kaupapa kotahi ehara i te mea he, no te mea ko te kaupapa motuhake ko nga kaihoko motuhake, ko nga whirihora motuhake, ko te whakatipuranga motuhake o enei mea katoa. Engari ehara i te mea pono.

He mara hou, he kaupapa hou ranei?

Engari ki te whakamahi koe i nga kaupapa ano, katahi ano ka puta ake he raru. Hei tauira, kaore e taea e nga punaha tuku katoa te whakaputa i te momo DTO ka taea e BOB te whakaputa. Ka tukuna e matou te id ki a ratou, engari kaore e tiakina na te mea kaore e hiahiatia ana e ratou, mai i te tirohanga o te tiimata o te kaupapa-pahihiko, ka hiahiatia tenei mara.

Mena ka whakaurua e matou he ture mo te pahi-takahanga e hiahiatia ana tenei mara, katahi ka kaha taatau ki te whakatakoto ture whakamana i roto i te BOB, i roto ranei i te kaihautu huihuinga tiimata. Ka timata te whakamanatanga ki te horapa puta noa i te ratonga - kaore tenei i te tino watea.

Ko tetahi atu raruraru ko te whakamatautau o te whakawhanaketanga pikinga. Ka korerotia mai ki a matou me taapiri tetahi mea ki te kaupapa, a mena ka whakaarohia e matou, he kaupapa motuhake tera. Engari i roto i ta maatau kaupapa, he kaupapa motuhake te kaupapa motuhake. Ko tetahi kaupapa motuhake ko te tukanga katoa i korerohia e ahau i runga ake nei. Ka whakamatautauria te kaiwhakawhanake ki te taapiri noa i tetahi atu mara ki te kaupapa JSON me te whakahou ano.

Mo nga moni whakahoki, ka tae matou ki te huihuinga i roto i nga marama e ono. Kotahi te kaupapa-meta i kiia ko te whakahou whakahoki, he momo mara e whakaatu ana he aha tenei whakahou. Na tenei, he "whakamiharo" taatau me nga kaiwhakamana i kii mai me pehea te whakamana i tenei huihuinga me tenei momo.

Whakaputa takahanga

Hei whakamana i nga karere i Kafka ka taea e koe te whakamahi ūropi, engari he mea tika kia u tonu ki tenei me te whakamahi i te Confluent. I roto i to maatau, me tupato ki te whakaputa. E kore e taea te panui ano i nga karere mai i te raarangi tukurua na te mea kua "maau" te tauira. Ko te tikanga, ka puta ki te hanga i nga putanga kia hototahi whakamuri te tauira: hei tauira, waiho he waahi mo te wa poto. Mena he kaha rawa nga rereketanga, ka timata taatau ki te tuhi i tetahi kaupapa hou, ka whakawhiti i nga kaihoko ka mutu te panui i te mea tawhito.

Whakapumautia te raupapa panui o nga wehewehenga

Kua wehewehea nga kaupapa o roto o Kafka ki nga waahanga. Ehara tenei i te mea nui i te wa e hoahoa ana tatou i nga hinonga me nga whakawhitinga, engari he mea nui ina whakatau ana tatou me pehea te kai me te whakarahi.

I roto i nga ahuatanga o mua, ka tuhi koe i tetahi kaupapa ki Kafka. Ma te taunoa, kotahi te wehewehenga ka whakamahia, ka taka nga karere katoa o tenei kaupapa ki roto. A ka panuihia e te kaihoko enei karere. Me kii inaianei me whakawhanuihia te punaha kia panuihia nga karere e nga kaihoko rereke e rua. Mena, hei tauira, kei te tuku SMS koe, katahi ka taea e koe te korero ki a Kafka kia hanga he wehewehenga taapiri, a ka timata a Kafka ki te wehe i nga karere kia rua nga wahanga - haurua ki konei, haurua ki reira.

He pehea te wehewehe a Kafka? Kei ia karere he tinana (e rongoa ai tatou i a JSON) me tetahi taviri. Ka taea e koe te taapiri i tetahi mahi hash ki tenei ki, ka whakatau ko tehea wehenga ka uru te karere.

I roto i a maatau mo nga moni whakahoki, he mea nui tenei, ki te tango e rua nga waahanga, katahi ka tupono ka whakahaerehia e te kaihoko whakarara te huihuinga tuarua i mua i te tuatahi ka raru. Ko te mahi hash e whakarite ana ko nga karere he rite te taviri ka mutu ki roto i te wehenga kotahi.

Takahanga vs whakahau

He raru ano tenei kei a matou. Ko tetahi huihuinga he huihuinga: e kii ana matou i tupu tetahi mea (he mea_kua tupu), hei tauira, i whakakorehia tetahi mea, i puta he moni whakahoki. Mena ka whakarongo tetahi ki enei huihuinga, ka ai ki te "tuemi kua whakakorehia," ka hangaia te hinonga whakahoki, ka "whakahoki moni" ka tuhia ki tetahi waahi i roto i te tatūnga.

Engari i te nuinga o te wa, ka hoahoa koe i nga huihuinga, kaore koe e hiahia ki te tuhi noa - kei te putea koe i runga i te meka ka panuihia e tetahi. He nui te whakamatautau ki te tuhi ehara i tetahi mea_kua tupu (tuemi_kua whakakorea, whakahoki_whakahokia), engari he mea_me_mahi. Hei tauira, kua reri te taonga mo te whakahoki mai.

I tetahi taha, e whakaatu ana me pehea te whakamahi i te huihuinga. I tetahi atu taha, he ahua iti ake te ahua o te ingoa huihuinga noa. I tua atu, kaore i tawhiti atu i konei ki te roopu mahi_mea. Engari karekau he taurangi ka panui tetahi i tenei huihuinga; a ki te panui koe, katahi ka panui angitu koe; a, ki te panui angitu koe, katahi ka mahia e koe tetahi mea, ka angitu tetahi mea. I te wa e mahi ai tetahi huihuinga, ka tika te whakahoki urupare, he raru tera.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

I roto i te whakawhitinga tukutahi i roto i te RabbitMQ, ka panui koe i te panui ka haere ki te http, ka whai whakautu koe - i te mea kua tae mai te karere. I a koe e tuhi ana ki a Kafka, he panui i tuhia e koe ki a Kafka, engari kaore koe e mohio mo te whakahaeretanga.

No reira, i roto i a maatau, me whakauru mai he huihuinga whakautu me te whakarite i te aro turuki mena he maha nga kaupapa i tukuna, i muri mai i tera waa ka tae mai ano te maha o nga huihuinga whakautu. Ki te kore e puta, katahi ka ahua he tetahi mea. Hei tauira, ki te tukuna e matou te kaupapa "kua rite_ki_whakahokia", e tumanako ana matou ka hangaia te moni whakahoki, ka whakahokia te moni ki te kaihoko, ka tukuna mai te kaupapa "money_refund" ki a matou. Engari kaore tenei i te tika, na reira me aroturuki.

Nuances

He raruraru tino kitea: ki te panui koe mai i tetahi kaupapa i runga i te raupapa, ka whai korero kino koe, ka hinga te kaihoko, kaore koe e haere atu. Me koe mutu nga kaihoko katoa, ka whakapau kaha ki te haere tonu ki te panui.

I mohio matou mo taua mea, i peekehia e matou, a ka tupu tonu. A i puta tenei na te mea i whai mana te huihuinga mai i te tirohanga o nga huihuinga-pahi, i whai mana te huihuinga mai i te tirohanga a te kaiwhakamana tono, engari kaore i te whaimana mai i te tirohanga a PostgreSQL, no te mea kei roto i to maatau punaha MySQL me UNSIGNED INT, a i roto i te tuhinga hou ko te punaha he PostgreSQL noa me INT. He iti ake tona rahi, a kaore i uru te ID. I mate a Symfony me te kore. Ko te tikanga, i mau i a matou te tuunga na te mea i whakawhirinaki matou ki tera ka mahia e matou tenei utu, engari i mua i tera i pirangi matou ki te whakanui ake i te porotiti raru, i te mea kaore i angitu te tukatuka i te karere. Ko nga porotiti i roto i tenei kaupapa kei roto ano i te paataka korero, a kua kati a Symfony i te whakawhitiwhiti korero me te papaaarangi, a ko te tuarua o nga mea i mate te tukanga katoa me te kore e whai waahi ki te whakauru i te utu.

Ka takoto te ratonga mo etahi wa - he waimarie, me Kafka ehara tenei i te tino whakamataku, na te mea kei te noho tonu nga karere. Ina hoki mai te mahi, ka taea e koe te whakaoti i te panui. He hāneanea.

Kei a Kafka te kaha ki te whakarite i te whakawhanaunga ma te taputapu taputapu. Engari ki te mahi i tenei, me whakamutua e koe nga kaihoko katoa - i roto i ta maatau, whakarite he tuku motuhake kaore he kaihoko, he whakahou. Na ka taea te huri i te taapiri a Kafka ma te taputapu taputapu, ka haere tonu te panui.

Ko tetahi atu ahua rangitaki tukurua vs rdkafka.so — e pa ana ki nga korero motuhake o ta maatau kaupapa. Ka whakamahi matou i te PHP, a, i roto i te PHP, hei tikanga, ka korero nga whare pukapuka katoa ki a Kafka na roto i te putunga rdkafka.so, katahi ano he momo takai. Tena pea ko o tatou ake uauatanga enei, engari ka puta ko te panui ano i tetahi waahanga o nga mea kua panuitia e tatou ehara i te mea ngawari. I te nuinga o te waa, he raruraru rorohiko.

Ka hoki ki nga korero mo te mahi me nga wehewehenga, ka tuhia tika i roto i nga tuhinga Kaihoko >= wehewehe kaupapa. Engari i mohio ahau mo tenei i muri mai i taku i pai ai. Mena kei te pirangi koe ki te tauine kia rua nga kaihoko, me rua nga waahanga. Arā, ki te kotahi koe i te wehewehenga e 20 mano nga karere kua kohia, a ka mahia e koe he mea hou, karekau e taurite te maha o nga karere. Na reira, kia rua nga kaihoko whakarara, me mahi koe ki nga wehewehenga.

Aroturuki

Ki taku whakaaro ka marama ake te huarahi ki te tirotiro he aha nga raru kei roto i te huarahi o naianei.

Hei tauira, ka tatauhia e hia nga hua i roto i te papaaarangi kua whakarereke i o raatau mana, a, na reira, me puta nga huihuinga i runga i enei huringa, ka tukuna atu e matou tenei nama ki ta matou punaha aroturuki. Na mai i Kafka ka whiwhi tatou i te nama tuarua, e hia nga huihuinga i tino rekotia. Ko te tikanga, ko te rereketanga o enei tau e rua me noho kore.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

I tua atu, me aroturuki koe me pehea te mahi a te kaihanga, mena kua tae mai nga panui-pahipi, me pehea te mahi a te kaihoko. Hei tauira, i roto i nga tūtohi i raro nei, kei te pai te mahi o te Utauta Whakahoki, engari he tino raruraru kei a BOB (nga tihi kikorangi).

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

Kua whakahuahia e ahau te takamuri o nga roopu-kaiwhakamahi. Ki te korero, koinei te maha o nga karere kaore ano kia panuitia. I te nuinga o te waa, ka tere te mahi a o taatau kaihoko, no reira ko te 0 te wa roa, engari i etahi wa ka piki ake te waa poto. Ka taea e Kafka te mahi i waho o te pouaka, engari me whakarite e koe he waahi.

He kaupapa rua, ka hoatu ki a koe etahi atu korero mo Kafka. Ka hoatu noa te mana API o nga roopu-kaihokohoko, penei he pakihi tenei roopu. I tua atu i te OK me te Rahua, he whakatupato, ka mohio koe kaore e taea e o kaihoko te kaha ki te tere o te whakaputa - kaore he wa ki te whakatika i nga mea kua tuhia. He maamaa te punaha, he ngawari te whakamahi.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

Koinei te ahua o te whakautu API. Anei te roopu bob-live-fifa, partition refund.update.v1, kei te pai te mana, ko te lag 0 te mutunga whakamutunga o te whakawhiwhinga pera me tera.

He wheako ki te whakawhanake i te ratonga Utauta Whakahoki me te API tukutahi ki Kafka

Aroturuki updated_at SLA (piri) Kua korero ake ahau. Hei tauira, kua neke te hua ki te mana kua reri mo te hokinga mai. Ka whakauruhia e matou a Cron, e kii ana mena i roto i nga meneti 5 kaore tenei mea i haere ki te whakahoki (ka whakahoki moni taatau na roto i nga punaha utu), katahi ka he tetahi mea, he tino take tenei mo te tautoko. Na reira, ka tango noa tatou i a Cron, e panui ana i enei mea, a ki te nui ake i te 0, ka tukuna he matohi.

Hei whakarāpopoto, he watea te whakamahi i nga huihuinga i te wa:

  • he maha nga punaha e hiahiatia ana nga korero;
  • ko te hua o te tukatuka ehara i te mea nui;
  • he iti noa nga huihuinga me nga huihuinga iti.

Te ahua nei he kaupapa tino motuhake te tuhinga - API asynchronous i runga i Kafka, engari i runga i tera ka hiahia ahau ki te kii i nga mea maha i te wa kotahi.
Tuatahi, muri UtuWhakauru ++ Me tatari tatou ki te marama o Noema, i te Paenga-whāwhā ka puta he putanga o St.
Tuarua, ko te kaituhi o te ripoata, a Sergei Zaika, he mema o te Komiti Kaupapa o ta tatou huihuinga hou mo te whakahaere matauranga. KnowledgeConf. Ko te huihuinga he ra kotahi, ka tu hei te 26 o Aperira, engari he tino pukumahi tana kaupapa.
A hei te marama o Mei PHP Ruhia и RIT++ (me DevOpsConf whakaurua) - ka taea hoki e koe te whakaatu i to kaupapa ki reira, korero mo to wheako me te amuamu mo o pupuhi kapi.

Source: will.com

Tāpiri i te kōrero