ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

E Habr!

Hoʻomanaʻo mākou iā ʻoe e hahai ana i ka puke e pili ana Kafka ua paʻi mākou i kekahi hana hoihoi e pili ana i ka waihona API no nā kahawai Kafka.

ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

I kēia manawa, ke aʻo wale nei ke kaiāulu i nā palena o kēia mea hana ikaika. No laila, ua paʻi ʻia kahi ʻatikala, ka unuhi a mākou e makemake ai e hoʻolauna iā ʻoe. Mai kona ʻike ponoʻī, haʻi ka mea kākau pehea e hoʻohuli ai i nā kahawai ʻo Kafka i kahi waihona ʻikepili i puʻunaue ʻia. Nanea i ka heluhelu!

hale waihona puke ʻo Apache Kahawai Kafka hoʻohana ʻia ma ka honua holoʻokoʻa i nā ʻoihana no ka hoʻoili ʻana i ke kahawai ma luna o Apache Kafka. ʻO kekahi o nā hiʻohiʻona i mahalo ʻole ʻia o kēia anga ka mea hiki iā ʻoe ke mālama i ka moku'āina kūloko i hana ʻia ma muli o ka hoʻoili ʻana i ke kaula.

Ma kēia ʻatikala, e haʻi wau iā ʻoe pehea i hoʻohana pono ai kā mākou hui i kēia manawa i ka hoʻomohala ʻana i kahi huahana no ka palekana noi kapua. Ke hoʻohana nei i nā kahawai Kafka, ua hana mākou i nā microservices mokuʻāina, ʻo kēlā me kēia mea he kumu hoʻomanawanui a loaʻa loa i ka ʻike hilinaʻi e pili ana i ke kūlana o nā mea i loko o ka ʻōnaehana. No mākou, he ʻanuʻu kēia i mua ma ke ʻano o ka hilinaʻi a me ka maʻalahi o ke kākoʻo.

Inā makemake ʻoe i kahi ala ʻē aʻe e hiki ai iā ʻoe ke hoʻohana i kahi waihona kikowaena hoʻokahi e kākoʻo i ke kūlana kūlana o kāu mau mea, heluhelu ia, e hoihoi ia...

No ke aha mākou i manaʻo ai ua hiki i ka manawa e hoʻololi i ke ʻano o kā mākou hana me ka mokuʻāina

Pono mākou e mālama i ke kūlana o nā mea like ʻole e pili ana i nā hōʻike a nā luna (no ka laʻana: ua hoʻouka ʻia ka pūnaewele)? Ma mua o ka neʻe ʻana i nā kahawai ʻo Kafka, hilinaʻi pinepine mākou i kahi waihona kikowaena hoʻokahi (+ API lawelawe) no ka hoʻokele mokuʻāina. Loaʻa i kēia ala kona mau hemahema: lā kūlana koʻikoʻi ʻO ka mālama ʻana i ka kūlike a me ka hoʻonohonoho ʻana e lilo i mea paʻakikī maoli. Hiki i ka waihona ke lilo i bottleneck a i ʻole e pau i loko kūlana lāhui a pilikia i ka hiki ʻole ke wānana.

ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

Kiʻi 1: He hiʻohiʻona mokuʻāina maʻamau i ʻike ʻia ma mua o ka hoʻololi ʻana i
Kafka a me Kafka Streams: kamaʻilio nā ʻelele i ko lākou manaʻo ma o ka API, helu ʻia ka mokuʻāina hou ma o ka waihona kikowaena

E hui me Kafka Streams, e maʻalahi ka hana ʻana i nā microservices mokuʻāina

Ma kahi o hoʻokahi makahiki i hala aku nei, ua hoʻoholo mākou e nānā pono i kā mākou mau hiʻohiʻona mokuʻāina e hoʻoponopono i kēia mau pilikia. Ua hoʻoholo koke mākou e hoʻāʻo i nā kahawai Kafka - ʻike mākou i ke ʻano o ka scalable, loaʻa loa a me ka hoʻomanawanui hewa ʻana, he aha ka waiwai o ka streaming streaming i loaʻa iā ia (nā hoʻololi, me nā mea stateful). ʻO ka mea wale nō a mākou e pono ai, ʻaʻole e haʻi i ke ʻano o ka makua a me ka hilinaʻi o ka ʻōnaehana memo ma Kafka.

Ua kūkulu ʻia kēlā me kēia microservices stateful a mākou i hana ai ma luna o kahi hiʻohiʻona Kafka Streams me kahi topology maʻalahi. Aia i loko o 1) kahi kumu 2) kahi mea hana me kahi hale kūʻai waiwai kī mau 3) kahi paila:

ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

Kiʻi 2: ʻO ka topology paʻamau o kā mākou mau manawa kahe no nā microservices stateful. E hoʻomanaʻo, aia kekahi waihona ma ʻaneʻi i loaʻa nā metadata hoʻolālā.

Ma kēia ala hou, haku nā ʻelele i nā memo i hānai ʻia i ke kumuhana kumu, a loaʻa i nā mea kūʻai aku, kahi lawelawe leka uila—loaʻa ka mokuʻāina i helu ʻia ma o ke poʻo (kumu kumu).

ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

Kiʻi 3: Ke kahe hana laʻana hou no kahi hiʻohiʻona me nā microservices kaʻana like: 1) hoʻopuka ka ʻelele i kahi leka i hiki mai i ke kumuhana kumu Kafka; 2) he microservice me ka moku'āina kaʻana like (me ka hoʻohana ʻana iā Kafka Streams) e hana a kākau i ka mokuʻāina i helu ʻia i ke kumuhana Kafka hope loa; ma hope o 3) ʻae nā mea kūʻai aku i ka mokuʻāina hou

ʻEā, pono loa kēia hale kūʻai waiwai kī i kūkulu ʻia!

E like me ka mea i ʻōlelo ʻia ma luna nei, loaʻa i kā mākou topology mokuʻāina kahi hale kūʻai waiwai kī. Ua loaʻa iā mākou kekahi mau koho no ka hoʻohana ʻana, a ʻelua o lākou i wehewehe ʻia ma lalo nei.

Koho #1: E hoʻohana i kahi hale kūʻai waiwai kī no ka helu ʻana

Loaʻa i kā mākou hale kūʻai waiwai kī mua nā ʻikepili kōkua a mākou e pono ai no ka helu ʻana. No ka laʻana, i kekahi mau hihia, ua hoʻoholo ʻia ka mokuʻāina e ka manaʻo o "nā balota nui". Hiki i ka waihona ke hoʻopaʻa i nā hōʻike hope loa a pau e pili ana i ke kūlana o kekahi mea. A laila, i ka wā i loaʻa ai iā mākou kahi hōʻike hou mai kekahi luna a i ʻole kekahi, hiki iā mākou ke mālama, kiʻi i nā hōʻike mai nā ʻelele ʻē aʻe a pau e pili ana i ke kūlana o ka mea like mai ka waiho ʻana, a hana hou i ka helu ʻana.
Hōʻike ka kiʻi 4 ma lalo i ke ʻano o kā mākou hōʻike ʻana i ka hale kūʻai kī/waiwai i ke ʻano hana o ka mea hana i hiki ke hoʻoponopono ʻia ka memo hou.

ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

Kiʻi 4: Wehe mākou i ke komo i ka hale kūʻai waiwai kī no ke kaʻina hana o ka mea hana (ma hope o kēia, ʻo kēlā me kēia palapala e hana pū me ka mokuʻāina kaʻana pono e hoʻokō i ke ʻano. doProcess)

Koho #2: Ke hana ʻana i kahi API CRUD ma luna o nā kahawai Kafka

I ka hoʻokumu ʻana i kā mākou kahe hana maʻamau, hoʻomaka mākou e hoʻāʻo e kākau i kahi RESTful CRUD API no kā mākou microservices mokuʻāina. Ua makemake mākou e hiki ke kiʻi hou i ke kūlana o kekahi a i ʻole nā ​​mea āpau, a me ka hoʻonohonoho a wehe ʻana paha i ke kūlana o kahi mea (pono no ke kākoʻo hope).

No ke kākoʻo ʻana i nā API Get State āpau, i kēlā me kēia manawa e pono ai mākou e helu hou i ka mokuʻāina i ka wā e hana ai, mālama mākou iā ia i loko o kahi hale kūʻai waiwai nui i kūkulu ʻia no ka manawa lōʻihi. Ma kēia hihia, maʻalahi ka hoʻokō ʻana i kēlā API me ka hoʻohana ʻana i kahi hiʻohiʻona o Kafka Streams, e like me ka mea i hōʻike ʻia ma ka papa inoa ma lalo nei.

ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

Kiʻi 5: Ke hoʻohana nei i ka hale kūʻai waiwai kī i kūkulu ʻia no ka loaʻa ʻana o ke kūlana i helu mua ʻia o kahi mea

He mea maʻalahi hoʻi ka hoʻokō ʻana i ke kūlana o kahi mea ma o ka API. ʻO ke kumu, pono ʻoe e hana i kahi mea hana Kafka a hoʻohana iā ia e hana i kahi moʻolelo i loaʻa ka mokuʻāina hou. E hōʻoia kēia e hoʻoponopono ʻia nā memo a pau i hana ʻia ma o ka API e like me nā memo i loaʻa mai nā mea hana ʻē aʻe (e laʻa me nā ʻelele).

ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

Kiʻi 6: Hiki iā ʻoe ke hoʻonohonoho i ke kūlana o kahi mea me ka hoʻohana ʻana i ka mea hana Kafka

ʻO ka pilikia liʻiliʻi: He nui nā ʻāpana o Kafka

A laila, makemake mākou e puʻunaue i ka ukana hana a hoʻomaikaʻi i ka loaʻa ʻana ma o ka hāʻawi ʻana i kahi pūʻulu o nā microservices kaʻana like i kēlā me kēia ʻano. He makani ka hoʻonohonoho: i ka manawa a mākou i hoʻonohonoho ai i nā manawa āpau e holo ma lalo o ka ID noi like (a me nā kikowaena bootstrap like), kokoke i nā mea ʻē aʻe i hana maʻalahi. Ua ʻōlelo pū mākou e loaʻa i kēlā me kēia kumuhana kumu nā ʻāpana he nui, i hiki ke hāʻawi ʻia i kēlā me kēia manawa i kahi ʻāpana o ia mau ʻāpana.

E haʻi aku au he hana maʻamau ka hana ʻana i kope kope o ka hale kūʻai mokuʻāina, no ka laʻana, inā hoʻihoʻi ʻia ma hope o ka hāʻule ʻole, e hoʻololi i kēia kope i kahi ʻano ʻē aʻe. No kēlā me kēia hale kūʻai mokuʻāina ma Kafka Streams, hana ʻia kahi kumuhana hou me kahi log hoʻololi (e hahai ana i nā mea hou kūloko). No laila, kākoʻo mau ʻo Kafka i ka hale kūʻai mokuʻāina. No laila, inā ʻaʻole i hoʻokō ʻia kahi hiʻohiʻona Kafka Streams a i ʻole, hiki ke hoʻihoʻi koke ʻia ka hale kūʻai mokuʻāina ma kahi ʻano ʻē aʻe, kahi e hele ai nā ʻāpana pili. Ua hōʻike kā mākou mau hoʻokolohua e hana ʻia kēia i loko o kahi mau kekona, ʻoiai inā he mau miliona o nā moʻolelo i loko o ka hale kūʻai.

Ke neʻe nei mai kahi microservice hoʻokahi me ka mokuʻāina kaʻana i kahi pūʻulu o nā microservices, lilo ia i mea liʻiliʻi e hoʻokō i ka Get State API. Ma ke kūlana hou, ʻo ka hale kūʻai mokuʻāina o kēlā me kēia microservice he ʻāpana wale nō o ke kiʻi holoʻokoʻa (ʻo kēlā mau mea i kahakaha ʻia nā kī i kahi ʻāpana kikoʻī). Pono mākou e hoʻoholo i kahi mea i loaʻa i ke kūlana o ka mea a mākou i makemake ai, a ua hana mākou i kēia ma muli o ka metadata thread, e like me ka mea i hōʻike ʻia ma lalo nei:

ʻAʻole wale ka hana ʻana: Pehea mākou i hana ai i kahi waihona waihona mai Kafka Streams, a he aha ka mea i loaʻa mai

Kiʻi 7: Me ka hoʻohana ʻana i nā metadata kahawai, hoʻoholo mākou mai kahi manawa e nīnau ai i ke kūlana o ka mea i makemake ʻia; ua hoʻohana ʻia kahi ala like me ka GET ALL API

Nā ʻike nui

Hiki i nā hale kūʻai mokuʻāina ma Kafka Streams ke lawelawe ma ke ʻano he waihona hoʻolaha de facto,

  • hana hou ia ma Kafka
  • Hiki ke kūkulu ʻia kahi CRUD API ma luna o ia ʻōnaehana
  • ʻOi aku ka paʻakikī o ka lawelawe ʻana i nā ʻāpana he nui
  • Hiki ke hoʻohui i hoʻokahi a ʻoi aku paha nā hale kūʻai mokuʻāina i ka topology streaming e mālama i ka ʻikepili kōkua. Hiki ke hoʻohana ʻia kēia koho no:
  • ʻO ka mālama ʻana i ka ʻikepili no ka wā lōʻihi e pono ai no ka helu ʻana i ka wā e hana ana i ke kahawai
  • ʻO ka mālama ʻana i ka ʻikepili no ka wā lōʻihi e pono paha i ka manawa aʻe e hoʻolako ʻia ai ka laʻana streaming
  • nui hou aku...

ʻO kēia a me nā mea maikaʻi ʻē aʻe e kūpono i nā kahawai ʻo Kafka no ka mālama ʻana i ke kūlana honua i kahi ʻōnaehana puʻupuʻu e like me kā mākou. Ua hōʻoia ʻia ʻo Kafka Streams i ka hilinaʻi loa i ka hana ʻana (ʻaneʻane ʻaʻohe nalowale o ka memo mai ka hoʻohana ʻana iā ia), a ke manaʻoʻiʻo nei mākou ʻaʻole e pau kona mana ma laila!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka