සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

හෙලෝ, හබ්ර්!

ගැන පොතෙන් පසුව අපි ඔබට මතක් කරමු කාෆ්කා අපි පුස්තකාලය ගැන සමාන රසවත් කෘතියක් ප්‍රකාශයට පත් කර ඇත්තෙමු Kafka Streams API.

සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

දැනට, ප්‍රජාව මෙම ප්‍රබල මෙවලමේ සීමාවන් ඉගෙන ගනිමින් සිටී. එබැවින්, ලිපියක් මෑතකදී ප්‍රකාශයට පත් කරන ලදී, එහි පරිවර්තනය අපි ඔබට හඳුන්වා දීමට කැමැත්තෙමු. කෆ්කා ස්ට්‍රීම්ස් බෙදා හරින ලද දත්ත ගබඩාවක් බවට පත් කරන්නේ කෙසේදැයි කතුවරයා ඔහුගේම අත්දැකීමෙන් කියයි. කියවීම රසවිඳින්න!

Apache පුස්තකාලය කෆ්කා ධාරා Apache Kafka මත බෙදා හරින ලද ප්‍රවාහ සැකසීම සඳහා ව්‍යවසාය තුළ ලොව පුරා භාවිතා වේ. මෙම රාමුවේ අවතක්සේරු නොකරන ලද එක් අංගයක් වන්නේ නූල් සැකසුම් මත පදනම්ව නිෂ්පාදනය කරන ලද දේශීය රාජ්ය ගබඩා කිරීමට ඔබට ඉඩ සලසයි.

වලාකුළු යෙදුම් ආරක්ෂාව සඳහා නිෂ්පාදනයක් සංවර්ධනය කිරීමේදී අපගේ සමාගම මෙම අවස්ථාව ලාභදායී ලෙස භාවිතා කිරීමට සමත් වූ ආකාරය මෙම ලිපියෙන් මම ඔබට කියමි. Kafka Streams භාවිතා කරමින්, අපි හවුල් රාජ්‍ය ක්ෂුද්‍ර සේවා නිර්මාණය කළ අතර, ඒ සෑම එකක්ම පද්ධතියේ ඇති වස්තූන්ගේ තත්ත්වය පිළිබඳ විශ්වාසදායක තොරතුරු සඳහා දෝෂ-ඉවසන සහ ඉහළ ලබා ගත හැකි මූලාශ්‍රයක් ලෙස සේවය කරයි. අපට, මෙය විශ්වසනීයත්වය සහ පහසුව යන දෙඅංශයෙන්ම ඉදිරි පියවරකි.

ඔබේ වස්තූන්ගේ විධිමත් තත්ත්වයට සහාය වීම සඳහා තනි මධ්‍යම දත්ත සමුදායක් භාවිතා කිරීමට ඔබට ඉඩ සලසන විකල්ප ප්‍රවේශයක් ගැන ඔබ උනන්දු වන්නේ නම්, එය කියවන්න, එය සිත්ගන්නාසුළු වනු ඇත...

හවුල් රාජ්‍යයක් සමඟ අප වැඩ කරන ආකාරය වෙනස් කිරීමට කාලය පැමිණ ඇතැයි අපි සිතුවේ ඇයි?

නියෝජිත වාර්තා මත පදනම්ව විවිධ වස්තූන්හි තත්ත්වය පවත්වා ගැනීමට අපට අවශ්‍ය විය (උදාහරණයක් ලෙස: අඩවිය ප්‍රහාරයට ලක්ව තිබුණේද)? Kafka Streams වෙත සංක්‍රමණය වීමට පෙර, අපි බොහෝ විට රාජ්‍ය කළමනාකරණය සඳහා තනි මධ්‍යම දත්ත ගබඩාවක් (+ සේවා API) මත විශ්වාසය තැබුවෙමු. මෙම ප්රවේශය එහි අවාසි ඇත: දින දැඩි තත්වයන් ස්ථාවරත්වය සහ සමමුහුර්තකරණය පවත්වා ගැනීම සැබෑ අභියෝගයක් බවට පත්වේ. දත්ත සමුදාය බාධකයක් බවට පත් විය හැකිය, නැතහොත් එය අවසන් විය හැක ධාවන තත්ත්වය සහ අනපේක්ෂිත බවින් පෙළෙනවා.

සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

රූපය 1: සංක්‍රාන්තියට පෙර දැකිය හැකි සාමාන්‍ය බෙදීම්-රාජ්ය දර්ශනයකි
කෆ්කා සහ කෆ්කා ප්‍රවාහ: නියෝජිතයන් ඔවුන්ගේ අදහස් API හරහා සන්නිවේදනය කරයි, යාවත්කාලීන තත්ත්වය මධ්‍යම දත්ත ගබඩාවක් හරහා ගණනය කෙරේ.

හවුල් රාජ්‍ය ක්ෂුද්‍ර සේවා නිර්මාණය කිරීම පහසු කරමින් Kafka Streams හමුවන්න

වසරකට පමණ පෙර, මෙම ගැටළු විසඳීම සඳහා අපගේ හවුල් රාජ්‍ය අවස්ථා දෙස දැඩි ලෙස බැලීමට අපි තීරණය කළෙමු. අපි වහාම කෆ්කා ප්‍රවාහයන් උත්සාහ කිරීමට තීරණය කළෙමු - එය කෙතරම් පරිමාණය කළ හැකි, ඉහළ මට්ටමක පවතින සහ දෝෂ ඉවසාගත හැකි ද, එහි ඇති පොහොසත් ප්‍රවාහ ක්‍රියාකාරිත්වය (ප්‍රකාශිත ඒවා ඇතුළුව පරිවර්තනයන්) අපි දනිමු. අපට අවශ්‍ය දේ පමණක්, කෆ්කා හි පණිවිඩ යැවීමේ පද්ධතිය කෙතරම් පරිණත සහ විශ්වාසදායක වී ඇත්ද යන්න සඳහන් නොකරමු.

අප විසින් නිර්මාණය කරන ලද සෑම රාජ්‍යමය ක්ෂුද්‍ර සේවා එකක්ම තරමක් සරල ස්ථලකයක් සහිත Kafka Streams අවස්ථාවක් මත ගොඩනගා ඇත. එය සමන්විත වූයේ 1) මූලාශ්‍රයක් 2) ස්ථීර යතුරු අගය ගබඩාවක් සහිත ප්‍රොසෙසරයක් 3) සින්ක්:

සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

රූපය 2: රාජ්‍යමය ක්ෂුද්‍ර සේවා සඳහා අපගේ ප්‍රවාහ අවස්ථා වල පෙරනිමි ස්ථලකය. සැලසුම් පාරදත්ත අඩංගු ගබඩාවක් ද මෙහි ඇති බව සලකන්න.

මෙම නව ප්‍රවේශය තුළ, නියෝජිතයින් මූලාශ්‍ර මාතෘකාවට සංග්‍රහ කරන පණිවිඩ සම්පාදනය කරයි, සහ පාරිභෝගිකයන්-කියන්න, තැපැල් දැනුම්දීම් සේවාවක්-පරිගණකගත හවුල් තත්ත්වය සින්ක් (ප්‍රතිදාන මාතෘකාව) හරහා ලබා ගනී.

සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

රූපය 3: හවුල් ක්ෂුද්‍ර සේවා සහිත අවස්ථාවක් සඳහා නව උදාහරණ කාර්ය ප්‍රවාහය: 1) නියෝජිතයා Kafka මූලාශ්‍ර මාතෘකාවට පැමිණෙන පණිවිඩයක් ජනනය කරයි; 2) හවුල් රාජ්‍යයක් සහිත ක්ෂුද්‍ර සේවාවක් (කෆ්කා ස්ට්‍රීම්ස් භාවිතයෙන්) එය ක්‍රියාවට නංවා ගණනය කළ තත්වය අවසාන කෆ්කා මාතෘකාවට ලියයි; ඉන් පසුව 3) පාරිභෝගිකයින් නව රාජ්‍යය පිළිගනී

හේයි, මෙම බිල්ට් යතුරු-අගය ගබඩාව ඇත්තෙන්ම ඉතා ප්‍රයෝජනවත් වේ!

ඉහත සඳහන් කළ පරිදි, අපගේ හවුල් රාජ්‍ය ස්ථාන විද්‍යාවේ ප්‍රධාන අගය ගබඩාවක් අඩංගු වේ. අපි එය භාවිතා කිරීම සඳහා විකල්ප කිහිපයක් සොයා ගත් අතර, ඒවායින් දෙකක් පහත විස්තර කෙරේ.

විකල්ප #1: ගණනය කිරීම් සඳහා යතුරු අගය ගබඩාවක් භාවිතා කරන්න

අපගේ පළමු යතුරු-අගය ගබඩාවේ අපට ගණනය කිරීම් සඳහා අවශ්‍ය සහායක දත්ත අඩංගු විය. උදාහරණයක් ලෙස, සමහර අවස්ථාවල හවුල් රාජ්‍යය තීරණය කරනු ලැබුවේ "බහුතර ඡන්ද" යන මූලධර්මය මගිනි. ගබඩාවට යම් වස්තුවක තත්ත්වය පිළිබඳ නවතම නියෝජිත වාර්තා තබා ගත හැක. ඉන්පසුව, අපට එක් නියෝජිතයෙකුගෙන් හෝ තවත් නියෝජිතයෙකුගෙන් නව වාර්තාවක් ලැබුණු විට, අපට එය සුරැකීමට, ගබඩාවෙන් එකම වස්තුවේ තත්ත්වය පිළිබඳ අනෙකුත් සියලුම නියෝජිතයන්ගෙන් වාර්තා ලබා ගැනීමට සහ ගණනය කිරීම නැවත සිදු කළ හැකිය.
පහත රූප සටහන 4 මඟින් අපි යතුර/අගය ගබඩාව ප්‍රොසෙසරයේ සැකසුම් ක්‍රමයට නිරාවරණය කළ ආකාරය පෙන්වයි, එවිට නව පණිවිඩය සැකසීමට හැකි වේ.

සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

නිදර්ශනය 4: අපි ප්‍රොසෙසරයේ සැකසුම් ක්‍රමය සඳහා යතුරු-අගය ගබඩාවට ප්‍රවේශය විවෘත කරමු (මෙයින් පසුව, හවුල් තත්වය සමඟ ක්‍රියා කරන සෑම ස්ක්‍රිප්ට් එකක්ම ක්‍රමය ක්‍රියාත්මක කළ යුතුය. doProcess)

විකල්ප #2: Kafka Streams මත CRUD API නිර්මාණය කිරීම

අපගේ මූලික කාර්ය ප්‍රවාහය ස්ථාපිත කිරීමෙන් පසු, අපි අපගේ හවුල් රාජ්‍ය ක්ෂුද්‍ර සේවා සඳහා RESTful CRUD API ලිවීමට උත්සාහ කළෙමු. අපට අවශ්‍ය වූයේ යම් වස්තුවක හෝ සියලුම වස්තුවල තත්ත්වය ලබා ගැනීමට මෙන්ම වස්තුවක තත්ත්වය (පසුපස සහාය සඳහා ප්‍රයෝජනවත්) සැකසීමට හෝ ඉවත් කිරීමටය.

සියලුම Get State API සඳහා සහය දැක්වීම සඳහා, සැකසීමේදී අපට තත්වය නැවත ගණනය කිරීමට අවශ්‍ය වූ විට, අපි එය ගොඩනඟා ඇති යතුරු අගය ගබඩාවක දිගු කාලයක් ගබඩා කළෙමු. මෙම අවස්ථාවෙහිදී, පහත ලැයිස්තුගත කර ඇති පරිදි, Kafka Streams හි එක් අවස්ථාවක් භාවිතයෙන් එවැනි API ක්‍රියාත්මක කිරීම තරමක් සරල වේ:

සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

රූප සටහන 5: වස්තුවක පූර්ව ගණනය කළ තත්ත්වය ලබා ගැනීම සඳහා ගොඩනඟන ලද යතුරු අගය ගබඩාව භාවිතා කිරීම

API හරහා වස්තුවක තත්ත්වය යාවත්කාලීන කිරීම ද ක්‍රියාත්මක කිරීම පහසුය. මූලික වශයෙන්, ඔබ කළ යුත්තේ කෆ්කා නිෂ්පාදකයෙකු නිර්මාණය කර නව රාජ්‍යය අඩංගු වාර්තාවක් සෑදීමට එය භාවිතා කිරීමයි. API හරහා ජනනය වන සියලුම පණිවිඩ වෙනත් නිෂ්පාදකයින්ගෙන් (උදා: නියෝජිතයින්) ලැබුණු ආකාරයටම සැකසීමට මෙය සහතික කරයි.

සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

රූපය 6: ඔබට Kafka නිෂ්පාදකයා භාවිතයෙන් වස්තුවක තත්ත්වය සැකසිය හැක

කුඩා සංකූලතාව: කෆ්කා බොහෝ කොටස් ඇත

ඊළඟට, අපට අවශ්‍ය වූයේ එක් එක් අවස්ථාවට හවුල්-රාජ්‍ය ක්ෂුද්‍ර සේවා පොකුරක් ලබා දීමෙන් සැකසුම් භාරය බෙදා හැරීමට සහ ලබා ගැනීමේ හැකියාව වැඩි දියුණු කිරීමට ය. සැකසුම සුලභ විය: අපි සියලු අවස්ථා එකම යෙදුම් හැඳුනුම්පත (සහ එකම බූට්ස්ට්‍රැප් සේවාදායකයන්) යටතේ ධාවනය කිරීමට වින්‍යාස කළ පසු, අනෙක් සියල්ල පාහේ ස්වයංක්‍රීයව සිදු විය. එක් එක් මූලාශ්‍ර මාතෘකාවක් කොටස් කිහිපයකින් සමන්විත වන බව ද අපි සඳහන් කළෙමු, එවිට එක් එක් අවස්ථාවට එවැනි කොටස්වල උප කුලකයක් පැවරිය හැකිය.

රාජ්‍ය ගබඩාවේ උපස්ථ පිටපතක් සෑදීම සාමාන්‍ය පුරුද්දක් බව මම සඳහන් කරමි, එවිට, උදාහරණයක් ලෙස, අසාර්ථක වීමෙන් පසු ප්‍රකෘතිමත් වූ විට, මෙම පිටපත වෙනත් අවස්ථාවකට මාරු කරන්න. Kafka Streams හි ඇති සෑම රාජ්‍ය ගබඩාවක් සඳහාම, වෙනස් කරන ලද ලොගයක් (දේශීය යාවත්කාලීන ලුහුබඳින) සමඟ අනුකරණය කරන ලද මාතෘකාවක් සාදනු ලැබේ. මේ අනුව, කෆ්කා නිරන්තරයෙන් රාජ්ය ගබඩාව උපස්ථ කරයි. එබැවින්, කෆ්කා ස්ට්‍රීම්ස් එකක් හෝ වෙනත් අවස්ථාවක් අසාර්ථක වූ විට, රාජ්‍ය ගබඩාව වෙනත් අවස්ථාවකදී ඉක්මනින් ප්‍රතිසාධනය කළ හැකිය, එහිදී අනුරූප කොටස් යන ස්ථානයට. ගබඩාවේ මිලියන ගණනක් වාර්තා තිබුණත් මෙය තත්පර කිහිපයකින් සිදු වන බව අපගේ පරීක්ෂණවලින් පෙන්නුම් කර ඇත.

හවුල් රාජ්‍යයක් සහිත තනි ක්ෂුද්‍ර සේවාවක සිට ක්ෂුද්‍ර සේවා පොකුරකට ගමන් කිරීම, Get State API ක්‍රියාත්මක කිරීම සුළුපටු නොවේ. නව තත්වය තුළ, එක් එක් මයික්‍රො සර්විස්හි රාජ්‍ය ගබඩාවේ අඩංගු වන්නේ සමස්ත පින්තූරයේ කොටසක් පමණි (විශේෂිත කොටසකට යතුරු සිතියම්ගත කර ඇති වස්තූන්). අපට අවශ්‍ය වස්තුවේ තත්ත්‍වය අඩංගු වන්නේ කුමන අවස්ථාවකද යන්න තීරණය කිරීමට අපට සිදු වූ අතර, පහත දැක්වෙන පරිදි, නූල් පාරදත්ත මත පදනම්ව අපි මෙය කළෙමු:

සැකසීම පමණක් නොවේ: අපි Kafka Streams වෙතින් බෙදා හරින ලද දත්ත සමුදායක් සෑදූ ආකාරය සහ එයින් සිදු වූ දේ

රූපය 7: ප්‍රවාහ පාර-දත්ත භාවිතා කරමින්, අපේක්ෂිත වස්තුවේ තත්වය විමසිය යුත්තේ කුමන අවස්ථාවෙන්ද යන්න අපි තීරණය කරමු; GET ALL API සමඟ සමාන ප්‍රවේශයක් භාවිතා කරන ලදී

ප්‍රධාන සොයාගැනීම්

Kafka Streams හි රාජ්‍ය ගබඩාවලට තත්‍යව බෙදා හරින ලද දත්ත ගබඩාවක් ලෙස සේවය කළ හැක.

  • කෆ්කා හි නිරන්තරයෙන් ප්‍රතිනිර්මාණය වේ
  • එවැනි පද්ධතියක් මත CRUD API පහසුවෙන් ගොඩනගා ගත හැකිය
  • බහු කොටස් හැසිරවීම ටිකක් සංකීර්ණයි
  • සහායක දත්ත ගබඩා කිරීම සඳහා ප්‍රවාහ ස්ථල විද්‍යාවට රාජ්‍ය ගබඩා එකක් හෝ කිහිපයක් එක් කිරීමට ද හැකිය. මෙම විකල්පය සඳහා භාවිතා කළ හැක:
  • ප්‍රවාහ සැකසීමේදී ගණනය කිරීම් සඳහා අවශ්‍ය දත්ත දිගු කාලීන ගබඩා කිරීම
  • ඊළඟ වතාවේ ප්‍රවාහ අවස්ථාව ප්‍රතිපාදනය කරන විට ප්‍රයෝජනවත් විය හැකි දිගුකාලීන දත්ත ගබඩා කිරීම
  • තවත් බොහෝ...

මෙම සහ අනෙකුත් වාසි නිසා Kafka Streams අපගේ වැනි බෙදාහැරීමේ පද්ධතියක ගෝලීය තත්වය පවත්වා ගැනීම සඳහා හොඳින් ගැලපේ. Kafka Streams නිෂ්පාදනයේ දී ඉතා විශ්වාසදායක බව ඔප්පු වී ඇත (එය යෙදවීමෙන් පසු අපට කිසිදු පණිවිඩයක් අහිමි වී නොමැත), සහ එහි හැකියාවන් එතැනින් නතර නොවන බව අපට විශ්වාසයි!

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න