ګټې او زیانونه خورا څرګند دي. موږ یو بس جوړ کړ، دا پدې مانا ده چې اوس ټول خدمات پدې پورې اړه لري. دا ډیزاین ساده کوي، مګر په سیسټم کې د ناکامۍ یو واحد ټکی معرفي کوي. کافکا به سقوط وکړي، بهیر به ودریږي.
بشپړتیا. موږ پیښو - بس ته دا چیک کوو چې پیښه ثابته ده او دا پروسس کولی شي.
امر مهم دی. د بیرته راستنیدو په صورت کې، موږ مجبور یو چې د تاریخ سره کار وکړو. د خبرتیاو سره، امر مهم نه دی، که دوی یو شان خبرتیاوې وي، بریښنالیک به ورته وي پرته له دې چې کوم امر لومړی راشي. د بیرته ستنیدو په صورت کې، یو روښانه پروسه شتون لري؛ که موږ امر بدل کړو، نو بیا به استثناوې رامنځته شي، بیرته ستنیدنه به نه رامینځته کیږي یا پروسس کیږي - موږ به په بل حالت کې پای ته ورسیږو.
تسلسل. موږ ذخیره لرو، او اوس موږ د APIs پرځای پیښې رامینځته کوو. موږ یوې لارې ته اړتیا لرو چې په چټکه او ارزانه توګه زموږ خدماتو ته د نویو پیښو او اوسنیو بدلونونو په اړه معلومات انتقال کړو. دا په جلا git ذخیره او کوډ جنراتورونو کې د عام توضیحاتو په کارولو سره ترلاسه کیږي. له همدې امله، په مختلفو خدماتو کې پیرودونکي او سرورونه زموږ سره مطابقت لري.
راځئ ووایو چې موږ غواړو یو نوی کار وکړو - د بیلګې په توګه، کافکا ته د سپارلو ټوله پروسه. اوس د پروسې یوه برخه په BOB کې د امر پروسس کولو کې پلي کیږي. د تحویلي خدمت ته د امر لیږد ترشا ، منځګړی ګودام ته حرکت او داسې نور ، د وضعیت ماډل شتون لري. دلته یو بشپړ واحد شتون لري ، حتی دوه ، او د تحویلۍ لپاره وقف شوي APIs یوه ډله. دوی د سپارلو په اړه ډیر څه پوهیږي.
دا ورته سیمې ښکاري، مګر وضعیت په BOB کې د امر پروسس کولو او د بار وړلو سیسټم لپاره توپیر لري. د مثال په توګه، ځینې کوریر خدمتونه منځګړیتوب حالتونه نه لیږي، مګر یوازې وروستي: "وړاندې شوي" یا " ورک شوي". نور، برعکس، د توکو د حرکت په اړه په تفصیل سره راپور ورکوي. هرڅوک خپل د تایید اصول لري: د ځینو لپاره، بریښنالیک اعتبار لري، پدې معنی چې دا به پروسس شي؛ د نورو لپاره دا د اعتبار وړ نه ده، مګر امر به بیا هم پروسس شي ځکه چې د اړیکو لپاره د تلیفون شمیره شتون لري، او ځینې به ووایي چې دا ډول امر به هیڅکله پروسس نشي.
د معلوماتو جریان
د کافکا په قضیه کې، د معلوماتو جریان تنظیم کولو پوښتنه راپورته کیږي. پدې کار کې د څو ټکو پراساس د ستراتیژۍ غوره کول شامل دي؛ راځئ چې د دوی ټولو ته لاړ شو.
په یوه موضوع کې یا په مختلفو موضوعاتو کې؟
موږ د پیښې مشخصات لرو. په BOB کې موږ لیکو چې دا ډول امر باید تحویل شي، او په ګوته کوي: د امر شمیره، د هغې مینځپانګې، ځینې SKUs او بار کوډونه، او داسې نور. کله چې توکي ګودام ته راشي ، تحویلي به د دې وړتیا ولري چې حالتونه ، مهال ویشونه او هرڅه چې ورته اړتیا وي ترلاسه کړي. مګر بیا موږ غواړو په BOB کې د دې معلوماتو تازه معلومات ترلاسه کړو. موږ د تحویلۍ څخه د معلوماتو ترلاسه کولو یوه برعکس پروسه لرو. ایا دا ورته پیښه ده؟ یا دا یو جلا تبادله ده چې د خپل موضوع مستحق دی؟
ډیری احتمال، دوی به ډیر ورته وي، او د یوې موضوع جوړولو لپاره لیوالتیا بې بنسټه نه ده، ځکه چې جلا موضوع معنی لري جلا پیرودونکي، جلا ترتیبونه، د دې ټولو جلا نسل. خو دا یو حقیقت نه دی.
نوی ډګر یا نوې پیښه؟
مګر که تاسو ورته پیښې وکاروئ نو بیا بله ستونزه رامینځته کیږي. د مثال په توګه، د تحویلي ټول سیسټمونه نشي کولی د DTO ډول تولید کړي چې BOB یې تولید کولی شي. موږ دوی ته ID لیږو ، مګر دوی یې نه خوندي کوي ځکه چې دوی ورته اړتیا نلري ، او د پیښې بس پروسې پیل کولو له نظره ، دا ساحه اړینه ده.
که موږ د پیښې بس لپاره یو قاعده معرفي کړو چې دا ساحه اړینه ده، نو موږ مجبور یو چې په BOB یا د پیل پیښې هینډلر کې د تایید اضافي قواعد تنظیم کړو. تایید په ټول خدمت کې خپریږي - دا خورا اسانه ندي.
بله ستونزه د زیاتیدونکي پراختیا لالچ دی. موږ ته ویل شوي چې په پیښه کې یو څه اضافه کولو ته اړتیا ده، او شاید که موږ د هغې په اړه فکر وکړو، دا باید یو جلا پیښه وي. مګر زموږ په سکیم کې، یوه جلا پیښه جلا موضوع ده. یوه جلا موضوع ټوله پروسه ده چې ما پورته تشریح کړه. پراختیا کونکی په ساده ډول د JSON سکیما ته د بل ساحه اضافه کولو لپاره لیوالتیا لري او بیا یې تولیدوي.
له همدې امله، زموږ په قضیه کې، موږ باید د غبرګون پیښې معرفي کړو او څارنه یې جوړه کړو ترڅو که چیرې ډیری پیښې لیږل شوي وي، نو د دومره وخت څخه وروسته باید ورته شمیر غبرګون پیښې راشي. که دا پیښ نشي، نو داسې ښکاري چې یو څه غلط شوي. د مثال په توګه، که موږ د "آټم_ریډی_ټو_ریفنډ" پیښه واستوله، موږ تمه لرو چې بیرته ستنیدنه به رامینځته شي، پیسې به پیرودونکي ته بیرته راستانه شي، او د "پیسو_ریفنډ" پیښه به موږ ته واستول شي. مګر دا سمه نه ده، نو څارنې ته اړتیا ده.
ناڅاپي
یوه څرګنده ستونزه شتون لري: که تاسو د یوې موضوع څخه په ترتیب سره ولولئ، او تاسو یو څه بد پیغام لرئ، پیرودونکي به راټیټ شي، او تاسو به نور لاړ نه شئ. تاسو اړتیا لرئ ټول مصرف کونکي ودروي، لوستلو ته دوام ورکولو لپاره نور بند کړئ.
موږ د دې په اړه پوهیږو، موږ په دې اړه بانکداري وکړه، او دا په هرصورت پیښ شوي. او دا پیښ شوي ځکه چې پیښه د پیښو له لید څخه معتبره وه - بس ، پیښه د غوښتنلیک اعتبار کونکي له نظره اعتباري وه ، مګر دا د PostgreSQL له نظره اعتبار نلري ، ځکه چې زموږ په سیسټم کې MySQL د نه لاسلیک شوي INT سره، او په نوي لیکل شوي سیسټم کې په ساده ډول د INT سره PostgreSQL درلود. د هغه اندازه یو څه کوچنۍ ده، او ID مناسب نه و. سمفوني په استثنا سره مړ شو. موږ، البته، استثنا ترلاسه کړه ځکه چې موږ په دې تکیه کوله او د دې معافیت ژمنه کوو، مګر مخکې له دې موږ غوښتل چې د ستونزې مقابله زیاته کړو، ځکه چې پیغام په ناکامۍ سره پروسس شوی و. په دې پروژه کې شمیرونکي هم په ډیټابیس کې دي، او سیمفوني لا دمخه د ډیټابیس سره اړیکه بنده کړې، او دویم استثناء پرته له دې چې د آفسیټ ژمنې فرصت پرته ټوله پروسه له منځه یوسي.
ما دمخه د مصرف کونکي ګروپ ځنډ یادونه کړې. په لنډه توګه، دا د نه لوستل شوي پیغامونو شمیر دی. په عموم کې، زموږ مرصفوونکي په چټکۍ سره کار کوي، نو وقف معمولا 0 وي، مګر ځینې وختونه ممکن لنډمهاله چوکۍ وي. کافکا کولی شي دا د بکس څخه بهر ترسره کړي، مګر تاسو اړتیا لرئ چې یو ټاکلی وقفه جوړه کړئ.
یوه پروژه ده غوړ, کوم چې به تاسو ته د کافکا په اړه نور معلومات درکړي. دا په ساده ډول د مصرف کونکي ګروپ API حالت ورکوي، لکه دا ګروپ سوداګرۍ لري. د سم او ناکام سربیره ، یو خبرداری شتون لري ، او تاسو به وکولی شئ ومومئ چې ستاسو پیرودونکي نشي کولی د تولید سرعت سره مقابله وکړي - دوی وخت نلري چې د لیکلو ثبوت ولوستل شي. سیسټم خورا هوښیار او د کارولو لپاره اسانه دی.
دا هغه څه دي چې د API ځواب ورته ښکاري. دلته د ګروپ bob-live-fifa، partition refund.update.v1 دی، حالت سم دی، lag 0 وروستی وروستی آفسیټ دی داسې او داسې نور.
څارنه update_at SLA (بند شوی) ما مخکې هم یادونه کړې ده. د مثال په توګه، محصول هغه حالت ته لیږدول شوی چې دا د بیرته راستنیدو لپاره چمتو دی. موږ کرون نصب کوو ، کوم چې وايي که په 5 دقیقو کې دا اعتراض بیرته راستنیدو ته نه وي تللی (موږ د تادیې سیسټمونو له لارې خورا ګړندي پیسې راستوو) ، نو یقینا یو څه غلط شوی ، او دا یقینا د ملاتړ قضیه ده. له همدې امله ، موږ په ساده ډول کرون اخلو ، کوم چې دا ډول شیان لوستل کیږي ، او که دوی له 0 څخه لوی وي ، نو دا خبرداری لیږي.
د لنډیز لپاره، د پیښو کارول اسانه دي کله چې:
معلومات د څو سیسټمونو لخوا اړین دي؛
د پروسس پایله مهمه نه ده؛
لږې پیښې یا کوچنۍ پیښې شتون لري.
داسې بریښي چې مقاله خورا ځانګړې موضوع لري - په کافکا کې غیر متزلزل API ، مګر د دې په تړاو زه غواړم په یوځل کې ډیری شیان وړاندیز کړم.
لومړی، بل لوړ لوډ++ موږ اړتیا لرو تر نومبر پورې انتظار وکړو، په اپریل کې به د سینټ پیټرزبورګ نسخه وي، او د جون په میاشت کې به موږ په نووسیبیرسک کې د لوړ بارونو په اړه وغږیږو.
دوهم، د راپور لیکوال، سرګي زیکا، د پوهې مدیریت په اړه زموږ د نوي کنفرانس د پروګرام کمیټې غړی دی KnowledgeConf. دا کنفرانس یو ورځنی دی، د اپریل په ۲۶ به جوړیږي، خو پروګرام یې ډېر بوخت دی.
او دا به د می په میاشت کې وي پی ایچ پی روسیه и RIT++ (د DevOpsConf سره شامل دي) - تاسو کولی شئ هلته خپله موضوع هم وړاندیز کړئ ، د خپلې تجربې په اړه وغږیږئ او ستاسو د ډک شوي ټپونو په اړه شکایت وکړئ.