Circuit breaker design pattern
સર્કિટ બ્રેકર એ ડિઝાઇન પેટર્ન છે જેનો ઉપયોગ સોફ્ટવેર વિકાસમાં થાય છે. તેનો ઉપયોગ નિષ્ફળતાઓને શોધવા માટે થાય છે અને જાળવણી દરમિયાન, કામચલાઉ બાહ્ય સિસ્ટમ નિષ્ફળતા અથવા અનપેક્ષિત સિસ્ટમ મુશ્કેલીઓ દરમિયાન નિષ્ફળતાને સતત પુનરાવર્તિત થવાથી અટકાવવાના તર્કને સમાવિષ્ટ કરે છે. સામાન્ય ઉપયોગો ધારો કે એપ્લિકેશન પ્રતિ સેકન્ડ 100 વખત ડેટાબેઝ સાથે જોડાય છે અને ડેટાબેઝ નિષ્ફળ જાય છે. એપ્લિકેશન ડિઝાઇનર એ જ ભૂલ સતત પુનરાવર્તિત થવા માંગતો નથી. તેઓ ટી. સી. પી. જોડાણ સમયસમાપ્તિની રાહ જોયા વિના ભૂલને ઝડપથી અને આકર્ષક રીતે હેન્ડલ કરવા માંગે છે. સામાન્ય રીતે સર્કિટ બ્રેકરનો ઉપયોગ બાહ્ય સેવાની ઉપલબ્ધતા ચકાસવા માટે થઈ શકે છે. બાહ્ય સેવા ડેટાબેઝ સર્વર અથવા એપ્લિકેશન દ્વારા ઉપયોગમાં લેવાતી વેબ સેવા હોઈ શકે છે. સર્કિટ બ્રેકર નિષ્ફળતાઓને શોધી કાઢે છે અને એપ્લિકેશનને નિષ્ફળ થવા માટે વિનાશકારી ક્રિયા કરવાનો પ્રયાસ કરવાથી અટકાવે છે (જ્યાં સુધી તે ફરીથી પ્રયાસ કરવા માટે સલામત ન હોય). સર્કિટ બ્રેકર ડિઝાઇન પેટર્નના અમલીકરણ અમલીકરણ માટે શ્રેણીબદ્ધ વિનંતીઓ પર જોડાણની સ્થિતિ જાળવી રાખવાની જરૂર છે. વાસ્તવિક વિનંતીઓમાંથી નિષ્ફળતાઓ શોધવા માટે તેણે તર્કને બંધ કરવો જ જોઇએ. તેથી, સર્કિટ બ્રેકરની અંદરની સ્થિતિ મશીનને તેમાંથી પસાર થતી વિનંતીઓ સાથે એક સાથે કામ કરવાની જરૂર છે. આ હાંસલ કરી શકાય તેવી એક રીત એ એસિંક્રોનસ છે. મલ્ટી-નોડ (ક્લસ્ટર) સર્વરમાં, અપસ્ટ્રીમ સેવાની સ્થિતિ ક્લસ્ટરના તમામ નોડમાં પ્રતિબિંબિત થવાની જરૂર પડશે. તેથી, અમલીકરણ માટે સતત સંગ્રહ સ્તરનો ઉપયોગ કરવાની જરૂર પડી શકે છે, દા. ત. નેટવર્ક કેશ જેમ કે મેમકચેડ અથવા રેડિસ, અથવા સ્થાનિક કેશ (ડિસ્ક અથવા મેમરી આધારિત) એપ્લિકેશનમાં, બાહ્ય સેવાની ઉપલબ્ધતાને રેકોર્ડ કરવા માટે. સર્કિટ બ્રેકર આપેલ અંતરાલ પર બાહ્ય સેવાની સ્થિતિને રેકોર્ડ કરે છે. એપ્લિકેશનમાંથી બાહ્ય સેવાનો ઉપયોગ થાય તે પહેલાં, વર્તમાન સ્થિતિને પુનઃપ્રાપ્ત કરવા માટે સંગ્રહ સ્તરની પૂછપરછ કરવામાં આવે છે. કામગીરીની અસર જ્યારે એવું કહેવું સલામત છે કે લાભો પરિણામો કરતાં વધારે છે, ત્યારે સર્કિટ બ્રેકરનો અમલ કરવાથી સંગ્રહસ્થાનની જગ્યા, એપ્લિકેશનની જટિલતા અને એક્ઝિક્યુટિવ એપ્લિકેશનના કોમ્પ્યુટેશનલ ખર્ચ પર નકારાત્મક અસર પડશે. આનું કારણ એ છે કે તે સર્કિટની સ્થિતિ તપાસવા માટે એક્ઝેક્યુશન પાથમાં વધારાનો કોડ ઉમેરે છે. આ નીચે આપેલા PHP ઉદાહરણમાં જોઈ શકાય છે, જ્યાં ડેટાબેઝની સ્થિતિ માટે APC તપાસવામાં થોડા વધારાના ચક્રોનો ખર્ચ થાય છે. ઉપરાંત, સર્કિટ બ્રેકર કોડ ચલાવવાથી પોતે જ તે સિસ્ટમ પર સંસાધનોનો વપરાશ કરે છે જ્યાં તે ચાલી રહ્યું છે, આમ "વાસ્તવિક" કાર્યક્રમો માટે ઓછી અમલ શક્તિ છોડી દે છે. વપરાયેલ સંગ્રહ સ્તર અને સામાન્ય રીતે ઉપલબ્ધ સંસાધનો પર કેટલું આધાર રાખે છે. આ સંબંધમાં સૌથી મોટા પરિબળો કેશનો પ્રકાર છે, ઉદાહરણ તરીકે, ડિસ્ક-આધારિત વિ. મેમરી-આધારિત અને સ્થાનિક વિ. નેટવર્ક. સર્કિટ બ્રેકરની વિવિધ સ્થિતિઓ બંધ અર્ધ-ખુલ્લી બંધ સ્થિતિ જ્યારે બધું સામાન્ય હોય, ત્યારે સર્કિટ બ્રેકર્સ બંધ રહે છે, અને બધી વિનંતીઓ નીચે બતાવ્યા પ્રમાણે સેવાઓમાં પસાર થાય છે. જો નિષ્ફળતાની સંખ્યા થ્રેશોલ્ડની બહાર વધે છે, તો સર્કિટ બ્રેકર ટ્રિપ કરે છે અને ખુલ્લી સ્થિતિમાં જાય છે. ખુલ્લી સ્થિતિ આ સ્થિતિમાં સર્કિટ બ્રેકર સેવાઓને બોલાવ્યા વિના તરત જ ભૂલ પરત કરે છે. સમયસમાપ્તિનો સમયગાળો વીતી ગયા પછી સર્કિટ બ્રેકર્સ અર્ધ-ખુલ્લી સ્થિતિમાં જાય છે. સામાન્ય રીતે, તેમાં મોનિટરિંગ સિસ્ટમ હશે જ્યાં સમયસમાપ્તિ નિર્દિષ્ટ કરવામાં આવશે. અર્ધ-ખુલ્લી સ્થિતિ આ સ્થિતિમાં, સર્કિટ બ્રેકર માઇક્રોસર્વિસ પાસેથી મર્યાદિત સંખ્યામાં વિનંતીઓને પસાર કરવા અને કામગીરીને બોલાવવાની મંજૂરી આપે છે. જો વિનંતીઓ સફળ થાય, તો સર્કિટ બ્રેકર બંધ સ્થિતિમાં જશે. જો કે, જો વિનંતીઓ નિષ્ફળ થતી રહે છે, તો તે ઓપન સ્ટેટમાં પાછી જાય છે. ઉદાહરણ અમલીકરણ પી. એચ. પી. નીચેના પી. એચ. પી. માં નમૂના અમલીકરણ છે. ખ્યાલનો પુરાવો માયએસક્યુએલ સર્વરની સ્થિતિને વહેંચાયેલ મેમરી કેશ (એપીસી) માં સંગ્રહિત કરે છે. તપાસો નીચેની સ્ક્રિપ્ટને ક્રોન્ટેબ દ્વારા નિર્ધારિત અંતરાલ પર ચલાવી શકાય છે. $કળશ = નવું કળશ ("લોકલહોસ્ટ", "વપરાશકર્તાનામ", "પાસવર્ડ"); જો ($કળશ-> જોડાણ _ ભૂલ) {apc _ ભંડાર ("dbStatus", "નીચે");} અન્યથા {apc _ ભંડાર ("dbStatus", "ઉપર"); $કળશ-> બંધ ();} એપ્લિકેશનમાં ઉપયોગ જો (કળશ-મેળવ ("dbStatus") = = = "નીચે") {પડઘો "ડેટાબેઝ સર્વર હાલમાં ઉપલબ્ધ નથી. મહેરબાની કરીને એક મિનિટમાં ફરી પ્રયાસ કરો. "; બહાર નીકળો;} $માયસ્ક્યુલી = નવું માયસ્ક્યુલી (" લોકલહોસ્ટ "," વપરાશકર્તાનામ "," પાસવર્ડ "," ડેટાબેઝ "); $પરિણામ = $માયસ્ક્યુલી-> ક્વેરી (" "કોષ્ટકમાંથી પસંદ કરો"); બાહ્ય કડીઓ આકૃતિઓ સાથે PHP અમલીકરણનું ઉદાહરણ પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ કરીને પોલિનો ઉપયોગ