ශ්‍රී ලංකාවේ නවතම තාක්ෂණික පුවත් 2026-07-27, Monday
💻 ක්‍රමලේඛනය · 🕒 කියවීමට විනාඩි 2 · 👁 1

Node.js සඳහා නව Breakwater ලයිබ්‍රරිය: රිසලියන්ස් සැකසීමේ ක්‍රමලේඛයක්

Node.js සඳහා නව Breakwater ලයිබ්‍රරිය: රිසලියන්ස් සැකසීමේ ක්‍රමලේඛයක්

Node.js යෙදුම් වල වැඩ කරන විට, බහුලව කේත කොටස් බෙදා බෙදා තිබෙන රීට්‍රයි ලූප්, සදහාම සකස් කළ සර්කිට් බ්‍රේකර්, හෝ අහම්බෙන් ලියූ ටයිම්අවුට් වැනි රිසලියන්ස් අංශයන් එකට එකතු වීම අසීරු කරයි. ඒවා එකිනෙකට සම්බන්ධ නොවීම නිසා, අවසාන වරදකදී සැබවින්ම කුමක් සිදු වෙමින් පවතී කියලා කිසිවෙක් තේරුම් ගත නොහැක.

ලේඛකයා මුලින්ම Node.js පරිසරයේ තිබෙන ලයිබ්‍රරීන් – opossum, cockatiel, p-retry, p-timeout, p-limit වැනි – සොයා බැලීය. opossum හොඳ සර්කිට් බ්‍රේකර් එකක් නමුත් රීට්‍රයි, බල්ක්හෙඩ් වැනි අංග අඩුවෙන් තිබුණා. cockatiel බහු අංග සපයනවාද, නමුත් මැනුම් සහ පයිප්ලයින් සම්බන්ධීකරණය අඩුයි. ඒ අතර, විශේෂයෙන් වැදගත් වූ එකක් වූයේ නීතික අනුක්‍රමය (ordering) ගැන ලේඛනයක් නොමැතිවීම. රීට්‍රයි, සර්කිට් බ්‍රේකර්, ටයිම්අවුට්, ෆෝල්බැක් වැනි නීති එකට එකතු කළ විට, ඒවායේ අනුක්‍රමය පද්ධතියේ ප්‍රතිඵලය තීරණය කරයි.

ඒ නිසා, අනුක්‍රමය වැරදි නම්, සර්කිට් බ්‍රේකර් සැබෑ අසාර්ථකතා අනුපාතය නොදකින අතර, රීට්‍රයි ලූප් අහඹු ලෙස බාධාවට පත් සේවා වියදම් කරයි. මෙය ගැටළුවක් වුවත්, බොහෝ ලයිබ්‍රරීන් එය පැහැදිලි කර නොමැති නිසා, සංවර්ධකයින්ට වැරදි සැලසුම් සිදු වීමට ඉඩ ඇත.

ඉන්පසු ලේඛකයා Breakwater නමින් නව ලයිබ්‍රරියක් නිර්මාණය කළා. npm install breakwater ලෙස ස්ථාපනය කර, resilience ප්‍රතිකාරකය භාවිතා කරමින් පහත පරිදි සැකසිය හැකිය:

import { resilience, exponential } from 'breakwater';
const payments = resilience({
retry: { attempts: 3, backoff: exponential({ initial: 200 }) },
rateLimit: { limit: 100, interval: 60000 },
bulkhead: { concurrency: 20, queue: 50 },
circuitBreaker: { name: 'payments-api', failureThreshold: 0.5 },
timeout: 2000,
fallback: () => ({ status: 'pending', queued: true })
});
const charge = await payments.execute(({ signal }) => api.post('/charge', body, { signal }));

Breakwater හි විශේෂත්වය වන්නේ, fallback → retry → rateLimit → bulkhead → circuitBreaker → timeout → fn ලෙස ස්ථිර, ලේඛිත අනුක්‍රමයක් අනුගමනය කිරීමයි. මෙයින් බාධකය (bulkhead, rateLimit) සර්කිට් බ්‍රේකර් වලින් පිටත තබා, ඔබේ යෙදුමේ පීඩනය සර්කිට් බ්‍රේකර් එකට අතුරුදන් නොවීමට උපකාරී වේ. ටයිම්අවුට් අභ්‍යන්තරයට තැබීම නිසා, සෑම ඇමතුමකටම නිශ්චිත කාලසීමාවක් ලබා දී, අසාර්ථකතා නිවැරදිව ගණන් කරයි.

අවශ්‍ය නම්, compose ක්‍රමය භාවිතයෙන් අනුක්‍රමය වෙනස් කළ හැකි අතර, එයම නීතික එකක් ලෙසම තවත් නීති සමඟ එකතු කළ හැකිය. මෙයින් සංවර්ධකයන්ට තමන්ගේ පද්ධතියේ රිසලියන්ස් සැකැස්ම තනිවම නිර්මාණය කිරීමේ නිදහස ලැබේ.

ශ්‍රී ලංකාවට ඇති වැදගත්කම

  • සංවර්ධකයින් – Node.js යෙදුම්වල රිසලියන්ස් නීතික අනුක්‍රමය පැහැදිලිව දැන ගැනීමෙන්, බාධක හඳුනා ගැනීම හා අඩු කිරීම පහසු වේ.
  • ඉගෙනුම් ආයතන – විශ්වවිද්‍යාල හා පුහුණු පාඨමාලාවලට නවතම රිසලියන්ස් සැලසුම් උදාහරණයක් ලෙස Breakwater භාවිතා කර, සිසුන්ට ප්‍රායෝගික කුසලතා ලබා දිය හැකිය.
  • ව්‍යාපාර – ගෙවීම්, API ගේට්වේ වැනි මූලික සේවා වල අධික අවශ්‍යතාවයක් ඇති වෙළඳපොලේ, Breakwater මඟින් සේවා අස්ථිරතාවය අඩු කර, පාරිභෝගික විශ්වාසය ඉහළ නංවයි.

සාරාංශයෙන්, Breakwater Node.js ප්‍රොජෙක්ට් වල රිසලියන්ස් නීතික සැලසුම් එකට එකතු කරන, ලේඛිත අනුක්‍රම සහ පූර්ණ මැනුම් පහසුකම් සපයන නවතම ලයිබ්‍රරියයි. ඔබේ යෙදුමට අදම අඩංගු කර, අනාගත බාධක වලට සූදානම් වන්න.

💡 ඔබේ Node.js ප්‍රොජෙක්ට් එකේ රිසලියන්ස් දැන්ම වැඩිදියුණු කරන්න!
මූලාශ්‍රය මෙම ලිපිය AI මගින් රචිත මුල් සාරාංශයකි. සම්පූර්ණ වාර්තාව කියවන්න:
Dev.to ↗
#Node.js #CircuitBreaker #Resilience #Programming #SriLankaTech