"అవర్ సీక్రెట్ యూనివర్స్: ది హిడెన్ లైఫ్ ఆఫ్ ది సెల్" చిత్రం నుండి ఇప్పటికీ
పెట్టుబడి వ్యాపారం బ్యాంకింగ్ ప్రపంచంలో అత్యంత సంక్లిష్టమైన రంగాలలో ఒకటి, ఎందుకంటే రుణాలు, రుణాలు మరియు డిపాజిట్లు మాత్రమే కాకుండా, సెక్యూరిటీలు, కరెన్సీలు, వస్తువులు, ఉత్పన్నాలు మరియు నిర్మాణాత్మక ఉత్పత్తుల రూపంలో అన్ని రకాల సంక్లిష్టతలు కూడా ఉన్నాయి.
ఇటీవల, జనాభాలో ఆర్థిక అక్షరాస్యత పెరుగుదలను మేము చూశాము. సెక్యూరిటీస్ మార్కెట్లలో ట్రేడింగ్లో ఎక్కువ మంది వ్యక్తులు పాల్గొంటున్నారు. వ్యక్తిగత పెట్టుబడి ఖాతాలు చాలా కాలం క్రితం కనిపించలేదు. సెక్యూరిటీల మార్కెట్లలో వ్యాపారం చేయడానికి మరియు పన్ను మినహాయింపులను స్వీకరించడానికి లేదా పన్నులు చెల్లించకుండా ఉండటానికి అవి మిమ్మల్ని అనుమతిస్తాయి. మరియు మా వద్దకు వచ్చే క్లయింట్లందరూ తమ పోర్ట్ఫోలియోను నిర్వహించాలని మరియు నిజ సమయంలో రిపోర్టింగ్ని చూడాలని కోరుకుంటారు. అంతేకాకుండా, చాలా తరచుగా ఈ పోర్ట్ఫోలియో బహుళ-ఉత్పత్తి, అంటే ప్రజలు వివిధ వ్యాపార మార్గాల క్లయింట్లు.
అదనంగా, రష్యన్ మరియు విదేశీ రెగ్యులేటర్ల అవసరాలు పెరుగుతున్నాయి.
ప్రస్తుత అవసరాలను తీర్చడానికి మరియు భవిష్యత్ అప్గ్రేడ్లకు పునాది వేయడానికి, మేము టరాన్టూల్ ఆధారంగా పెట్టుబడి వ్యాపార కోర్ను అభివృద్ధి చేసాము.
కొన్ని గణాంకాలు. ఆల్ఫా-బ్యాంక్ యొక్క పెట్టుబడి వ్యాపారం వ్యక్తులు మరియు చట్టపరమైన సంస్థలకు వివిధ సెక్యూరిటీల మార్కెట్లలో వర్తకం చేయడానికి, సెక్యూరిటీల నిల్వ కోసం డిపాజిటరీ సేవలు, ప్రైవేట్ మరియు పెద్ద మూలధనం ఉన్న వ్యక్తులకు ట్రస్ట్ మేనేజ్మెంట్ సేవలు, ఇతర కంపెనీలకు సెక్యూరిటీలను జారీ చేసే సేవలను అందించడానికి బ్రోకరేజ్ సేవలను అందిస్తుంది. . ఆల్ఫా-బ్యాంక్ యొక్క పెట్టుబడి వ్యాపారంలో సెకనుకు 3 వేల కోట్ల కంటే ఎక్కువ కోట్లు ఉన్నాయి, ఇవి వివిధ ట్రేడింగ్ ప్లాట్ఫారమ్ల నుండి డౌన్లోడ్ చేయబడతాయి. పని రోజులో, బ్యాంకు లేదా దాని ఖాతాదారుల తరపున మార్కెట్లలో 300 వేలకు పైగా లావాదేవీలు ముగిశాయి. సెకనుకు 5 వేల వరకు ఆర్డర్ అమలులు బాహ్య మరియు అంతర్గత ప్లాట్ఫారమ్లలో జరుగుతాయి. అదే సమయంలో, అన్ని క్లయింట్లు, అంతర్గత మరియు బాహ్య, నిజ సమయంలో వారి స్థానాలను చూడాలనుకుంటున్నారు.
పూర్వచరిత్ర
2000ల ప్రారంభం నుండి ఎక్కడో, మా పెట్టుబడి వ్యాపార రంగాలు స్వతంత్రంగా అభివృద్ధి చెందాయి: ఎక్స్ఛేంజ్ ట్రేడింగ్, బ్రోకరేజ్ సేవలు, కరెన్సీ ట్రేడింగ్, సెక్యూరిటీలలో ఓవర్-ది-కౌంటర్ ట్రేడింగ్ మరియు వివిధ డెరివేటివ్లు. ఫలితంగా, మేము ఫంక్షనల్ బావుల ఉచ్చులో పడిపోయాము. అదేంటి? వ్యాపారం యొక్క ప్రతి శ్రేణి దాని స్వంత వ్యవస్థలను కలిగి ఉంటుంది, అది ఒకదానికొకటి యొక్క విధులను నకిలీ చేస్తుంది. ప్రతి సిస్టమ్ దాని స్వంత డేటా మోడల్ను కలిగి ఉంటుంది, అయినప్పటికీ అవి ఒకే భావనలతో పనిచేస్తాయి: లావాదేవీలు, సాధనాలు, కౌంటర్పార్టీలు, కోట్లు మొదలైనవి. మరియు ప్రతి వ్యవస్థ స్వతంత్రంగా అభివృద్ధి చెందడంతో, విభిన్న సాంకేతిక పరిజ్ఞానాల జూ ఉద్భవించింది.
అదనంగా, సిస్టమ్స్ యొక్క కోడ్ బేస్ ఇప్పటికే చాలా పాతది, ఎందుకంటే కొన్ని ఉత్పత్తులు 1990ల మధ్యలో ఉద్భవించాయి. మరియు కొన్ని ప్రాంతాల్లో ఇది అభివృద్ధి ప్రక్రియను మందగించింది మరియు పనితీరు సమస్యలు ఉన్నాయి.
కొత్త పరిష్కారం కోసం అవసరాలు
మరింత అభివృద్ధికి సాంకేతిక పరివర్తన చాలా ముఖ్యమైనదని వ్యాపారాలు గ్రహించాయి. మాకు పనులు ఇవ్వబడ్డాయి:
- మొత్తం వ్యాపార డేటాను ఒకే, వేగవంతమైన నిల్వ మరియు ఒకే డేటా మోడల్లో సేకరించండి.
- మేము ఈ సమాచారాన్ని కోల్పోకూడదు లేదా మార్చకూడదు.
- డేటాను సంస్కరణ చేయడం అవసరం, ఎందుకంటే ఏ క్షణంలోనైనా రెగ్యులేటర్ మునుపటి సంవత్సరాలకు సంబంధించిన గణాంకాలను అడగవచ్చు.
- మేము కొన్ని కొత్త, ఫ్యాషన్ DBMSని తీసుకురావడమే కాదు, వ్యాపార సమస్యలను పరిష్కరించడానికి వేదికను సృష్టించాలి.
అదనంగా, మా వాస్తుశిల్పులు వారి స్వంత షరతులను సెట్ చేస్తారు:
- కొత్త పరిష్కారం తప్పనిసరిగా ఎంటర్ప్రైజ్-క్లాస్ అయి ఉండాలి, అంటే, ఇది ఇప్పటికే కొన్ని పెద్ద కంపెనీలలో పరీక్షించబడాలి.
- పరిష్కారం యొక్క ఆపరేటింగ్ మోడ్ మిషన్ క్లిష్టమైనదిగా ఉండాలి. దీనర్థం మనం అనేక డేటా సెంటర్లలో ఏకకాలంలో ఉండాలి మరియు ఒక డేటా సెంటర్ అంతరాయం నుండి ప్రశాంతంగా జీవించాలి.
- సిస్టమ్ తప్పనిసరిగా క్షితిజ సమాంతరంగా స్కేలబుల్గా ఉండాలి. వాస్తవం ఏమిటంటే, మా ప్రస్తుత వ్యవస్థలన్నీ నిలువుగా స్కేలబుల్ మాత్రమే, మరియు హార్డ్వేర్ శక్తి యొక్క తక్కువ పెరుగుదల కారణంగా మేము ఇప్పటికే పైకప్పును తాకుతున్నాము. అందువల్ల, మనుగడ కోసం అడ్డంగా కొలవగల వ్యవస్థను కలిగి ఉండాల్సిన క్షణం వచ్చింది.
- ఇతర విషయాలతోపాటు, పరిష్కారం చౌకగా ఉండాలని మాకు చెప్పబడింది.
మేము ప్రామాణిక మార్గాన్ని అనుసరించాము: మేము అవసరాలను రూపొందించాము మరియు కొనుగోలు విభాగాన్ని సంప్రదించాము. అక్కడ నుండి, సాధారణంగా, మా కోసం దీన్ని చేయడానికి సిద్ధంగా ఉన్న కంపెనీల జాబితాను మేము అందుకున్నాము. మేము సమస్య గురించి అందరికీ చెప్పాము మరియు వారిలో ఆరుగురి నుండి పరిష్కారాల అంచనాను అందుకున్నాము.
బ్యాంకులో, మేము ఎవరి మాటను తీసుకోము; మేము ప్రతిదాన్ని స్వయంగా పరీక్షించుకోవాలనుకుంటున్నాము. అందువల్ల, మా టెండర్ పోటీ యొక్క తప్పనిసరి షరతు లోడ్ పరీక్షలలో ఉత్తీర్ణత సాధించడం. మేము లోడ్ టెస్ట్ టాస్క్లను రూపొందించాము మరియు ఆరు కంపెనీలలో మూడు కంపెనీలు దీన్ని పరీక్షించడానికి వారి స్వంత ఖర్చుతో ఇన్-మెమరీ టెక్నాలజీల ఆధారంగా ప్రోటోటైప్ పరిష్కారాన్ని అమలు చేయడానికి ఇప్పటికే అంగీకరించాయి.
మేము అన్నింటినీ ఎలా పరీక్షించాము మరియు ఎంత సమయం పట్టిందో నేను మీకు చెప్పను, నేను సారాంశం చేస్తాను: Mail.ru గ్రూప్ డెవలప్మెంట్ బృందం నుండి Tarantool ఆధారంగా ప్రోటోటైప్ పరిష్కారం ద్వారా లోడ్ పరీక్షలలో ఉత్తమ పనితీరు చూపబడింది. మేము ఒక ఒప్పందంపై సంతకం చేసాము మరియు అభివృద్ధిని ప్రారంభించాము. Mail.ru గ్రూప్ నుండి నలుగురు వ్యక్తులు ఉన్నారు మరియు ఆల్ఫా-బ్యాంక్ నుండి ముగ్గురు డెవలపర్లు, ముగ్గురు సిస్టమ్ విశ్లేషకులు, ఒక సొల్యూషన్ ఆర్కిటెక్ట్, ఒక ఉత్పత్తి యజమాని మరియు స్క్రమ్ మాస్టర్ ఉన్నారు.
మా సిస్టమ్ ఎలా అభివృద్ధి చెందింది, అది ఎలా అభివృద్ధి చెందింది, మేము ఏమి చేసాము మరియు ఇది ఎందుకు ఖచ్చితంగా అనే దాని గురించి నేను మీకు చెప్తాను.
డిజైన్
మా ప్రస్తుత సిస్టమ్ల నుండి డేటాను ఎలా పొందాలనేది మనల్ని మనం అడిగే మొదటి ప్రశ్న. అన్ని ప్రస్తుత సిస్టమ్లు HTTP ద్వారా XML లేదా JSONని పంపడం ద్వారా ఒకదానితో ఒకటి కమ్యూనికేట్ చేస్తాయి కాబట్టి, HTTP మాకు చాలా సరిఅయినదని మేము నిర్ణయించుకున్నాము.
మేము SSL సెషన్లను ముగించాల్సిన అవసరం లేనందున మేము Tarantoolలో నిర్మించిన HTTP సర్వర్ని ఉపయోగిస్తాము మరియు దాని పనితీరు మాకు సరిపోతుంది.
నేను ఇప్పటికే చెప్పినట్లుగా, మా అన్ని సిస్టమ్లు వేర్వేరు డేటా మోడళ్లలో నివసిస్తాయి మరియు ఇన్పుట్ వద్ద మనం వివరించే మోడల్కు వస్తువును తీసుకురావాలి. డేటాను మార్చడానికి అనుమతించే భాష అవసరం. మేము అత్యవసరమైన లువాను ఎంచుకున్నాము. మేము మొత్తం డేటా మార్పిడి కోడ్ను శాండ్బాక్స్లో అమలు చేస్తాము - ఇది రన్నింగ్ కోడ్ వెళ్లని సురక్షితమైన ప్రదేశం. దీన్ని చేయడానికి, మేము అవసరమైన కోడ్ను లోడ్ చేస్తాము, ఏదైనా బ్లాక్ చేయలేని లేదా డ్రాప్ చేయలేని ఫంక్షన్లతో వాతావరణాన్ని సృష్టిస్తాము.
మార్పిడి తర్వాత, మేము రూపొందిస్తున్న మోడల్కు అనుగుణంగా డేటాను తప్పనిసరిగా తనిఖీ చేయాలి. మోడల్ ఎలా ఉండాలి మరియు దానిని వివరించడానికి ఏ భాష ఉపయోగించాలో మేము చాలా సేపు చర్చించాము. మేము Apache Avroని ఎంచుకున్నాము ఎందుకంటే భాష సరళమైనది మరియు దీనికి Tarantool నుండి మద్దతు ఉంది. మోడల్ మరియు కస్టమ్ కోడ్ యొక్క కొత్త వెర్షన్లు రోజులో ఏ సమయంలోనైనా లోడ్లో ఉన్నా లేదా లేకుండా కూడా చాలా సార్లు రోజుకు ఆపరేషన్లో ఉంచబడతాయి మరియు చాలా త్వరగా మార్పులకు అనుగుణంగా ఉంటాయి.
ధృవీకరణ తర్వాత, డేటా తప్పనిసరిగా సేవ్ చేయబడాలి. మేము దీన్ని vshard ఉపయోగించి చేస్తాము (మాకు జియో-చెదరగొట్టబడిన షార్డ్ల ప్రతిరూపాలు ఉన్నాయి).
అంతేకాకుండా, నిర్దిష్టత ఏమిటంటే, మనకు డేటాను పంపే చాలా సిస్టమ్లు మనం అందుకున్నామా లేదా అనే విషయాన్ని పట్టించుకోవు. అందుకే మొదటి నుంచి రిపేర్ క్యూను అమలు చేశాం. అదేంటి? కొన్ని కారణాల వల్ల ఆబ్జెక్ట్ డేటా పరివర్తన లేదా ధృవీకరణకు గురికాకపోతే, మేము ఇప్పటికీ రసీదుని ధృవీకరిస్తాము, అయితే అదే సమయంలో మరమ్మత్తు క్యూలో వస్తువును సేవ్ చేస్తాము. ఇది స్థిరంగా ఉంటుంది మరియు ప్రధాన వ్యాపార డేటా గిడ్డంగిలో ఉంది. మేము వెంటనే దాని కోసం నిర్వాహక ఇంటర్ఫేస్, వివిధ కొలమానాలు మరియు హెచ్చరికలను వ్రాసాము. ఫలితంగా, మేము డేటాను కోల్పోము. సోర్స్లో ఏదైనా మార్పు వచ్చినప్పటికీ, డేటా మోడల్ మారినట్లయితే, మేము దానిని వెంటనే గుర్తించి, స్వీకరించగలము.
ఇప్పుడు మీరు సేవ్ చేసిన డేటాను ఎలా తిరిగి పొందాలో నేర్చుకోవాలి. మేము మా సిస్టమ్లను జాగ్రత్తగా విశ్లేషించాము మరియు జావా మరియు ఒరాకిల్ యొక్క క్లాసిక్ స్టాక్ తప్పనిసరిగా డేటాను రిలేషనల్ నుండి ఆబ్జెక్ట్గా మార్చే ఒక రకమైన ORMని కలిగి ఉందని గమనించాము. కాబట్టి వెంటనే గ్రాఫ్ రూపంలో సిస్టమ్లకు వస్తువులను ఎందుకు ఇవ్వకూడదు? కాబట్టి మేము సంతోషంగా GraphQLని స్వీకరించాము, ఇది మా అవసరాలన్నింటినీ తీర్చింది. ఇది గ్రాఫ్ల రూపంలో డేటాను స్వీకరించడానికి మరియు ప్రస్తుతం మీకు అవసరమైన వాటిని మాత్రమే తీసివేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మీరు చాలా వశ్యతతో APIని కూడా వెర్షన్ చేయవచ్చు.
మేము సంగ్రహిస్తున్న డేటా సరిపోదని దాదాపు వెంటనే మేము గ్రహించాము. మేము మోడల్లోని వస్తువులకు లింక్ చేయగల ఫంక్షన్లను సృష్టించాము - ముఖ్యంగా, లెక్కించిన ఫీల్డ్లు. అంటే, మేము ఫీల్డ్కు ఒక నిర్దిష్ట ఫంక్షన్ను అటాచ్ చేస్తాము, ఉదాహరణకు, సగటు కోట్ ధరను లెక్కిస్తుంది. మరియు డేటాను అభ్యర్థించే బాహ్య వినియోగదారుకు ఇది లెక్కించబడిన ఫీల్డ్ అని కూడా తెలియదు.
ప్రామాణీకరణ వ్యవస్థను అమలు చేసింది.
మా నిర్ణయంలో అనేక పాత్రలు స్ఫటికీకరించబడినట్లు మేము గమనించాము. పాత్ర అనేది ఒక రకమైన ఫంక్షన్ల అగ్రిగేటర్. సాధారణంగా, పాత్రలు వేర్వేరు పరికరాల వినియోగ ప్రొఫైల్లను కలిగి ఉంటాయి:
- T-కనెక్ట్: ఇన్కమింగ్ కనెక్షన్లను నిర్వహిస్తుంది, CPU పరిమితం, తక్కువ మెమరీ వినియోగం, స్థితిలేనిది.
- IB-Core: Tarantool ప్రోటోకాల్ ద్వారా స్వీకరించే డేటాను మారుస్తుంది, అంటే ఇది పట్టికలతో పనిచేస్తుంది. ఇది స్థితిని కూడా నిల్వ చేయదు మరియు కొలవదగినది.
- నిల్వ: డేటాను మాత్రమే నిల్వ చేస్తుంది, ఏ లాజిక్ను ఉపయోగించదు. ఈ పాత్ర సరళమైన ఇంటర్ఫేస్లను అమలు చేస్తుంది. vshardకి స్కేలబుల్ ధన్యవాదాలు.
అంటే, పాత్రలను ఉపయోగించి, మేము క్లస్టర్లోని వివిధ భాగాలను ఒకదానికొకటి వేరు చేసాము, వీటిని ఒకదానికొకటి స్వతంత్రంగా స్కేల్ చేయవచ్చు.
కాబట్టి, మేము అడ్మిన్ ఇంటర్ఫేస్తో అసమకాలిక లావాదేవీల డేటా ఫ్లో రికార్డింగ్ మరియు మరమ్మతు క్యూను సృష్టించాము. వ్యాపార దృక్కోణం నుండి రికార్డింగ్ అసమకాలికమైనది: మనకు డేటాను వ్రాయడానికి మేము హామీ ఇచ్చినట్లయితే, ఎక్కడ ఉన్నా, మేము దానిని నిర్ధారిస్తాము. ఇది ధృవీకరించబడకపోతే, ఏదో తప్పు జరిగింది మరియు డేటాను పంపవలసి ఉంటుంది. ఇది అసమకాలిక రికార్డింగ్.
పరీక్ష
ప్రాజెక్ట్ ప్రారంభం నుండి, మేము టెస్ట్ ఆధారిత అభివృద్ధిని అమలు చేయడానికి ప్రయత్నించాలని నిర్ణయించుకున్నాము. మేము టరాన్టూల్/ట్యాప్ ఫ్రేమ్వర్క్ని ఉపయోగించి లువాలో యూనిట్ పరీక్షలను మరియు పైటెస్ట్ ఫ్రేమ్వర్క్ని ఉపయోగించి పైథాన్లో ఇంటిగ్రేషన్ పరీక్షలను వ్రాస్తాము. అదే సమయంలో, మేము ఇంటిగ్రేషన్ పరీక్షలు రాయడంలో డెవలపర్లు మరియు విశ్లేషకులు ఇద్దరినీ కలుపుతాము.
మేము టెస్ట్ ఆధారిత అభివృద్ధిని ఎలా ఉపయోగిస్తాము?
మనకు ఏదైనా కొత్త ఫీచర్ కావాలంటే, ముందుగా దాని కోసం పరీక్ష రాయడానికి ప్రయత్నిస్తాము. మేము బగ్ను కనుగొన్నప్పుడు, మేము ముందుగా పరీక్షను వ్రాసి, ఆపై మాత్రమే దాన్ని సరిచేస్తాము. మొదట ఈ విధంగా పనిచేయడం చాలా కష్టం, ఉద్యోగుల నుండి అపార్థం ఉంది, విధ్వంసం కూడా ఉంది: "ఇప్పుడు దాన్ని త్వరగా పరిష్కరించండి, కొత్తది చేద్దాం, ఆపై పరీక్షలతో కవర్ చేద్దాం." ఈ "తరువాత" మాత్రమే దాదాపు ఎప్పుడూ రాదు.
అందువల్ల, మీరు మొదట పరీక్షలు రాయమని మిమ్మల్ని బలవంతం చేయాలి మరియు దానిని చేయమని ఇతరులను అడగాలి. నన్ను నమ్మండి, టెస్ట్ ఆధారిత అభివృద్ధి స్వల్పకాలంలో కూడా ప్రయోజనాలను తెస్తుంది. మీ జీవితం తేలికగా మారిందని మీరు భావిస్తారు. 99% కోడ్ ఇప్పుడు పరీక్షల ద్వారా కవర్ చేయబడిందని మేము భావిస్తున్నాము. ఇది చాలా ఎక్కువ అనిపిస్తుంది, కానీ మాకు ఎటువంటి సమస్యలు లేవు: ప్రతి కమిట్పై పరీక్షలు అమలు చేయబడతాయి.
అయితే, మేము ఎక్కువగా ఇష్టపడేది లోడ్ పరీక్ష; మేము దీన్ని అత్యంత ముఖ్యమైనదిగా పరిగణించి, క్రమం తప్పకుండా నిర్వహిస్తాము.
మొదటి సంస్కరణల్లో ఒకదాని యొక్క మొదటి దశ లోడ్ పరీక్షను మేము ఎలా నిర్వహించాము అనే దాని గురించి నేను మీకు ఒక చిన్న కథను చెబుతాను. మేము డెవలపర్ యొక్క ల్యాప్టాప్లో సిస్టమ్ను ఇన్స్టాల్ చేసాము, లోడ్ను ఆన్ చేసాము మరియు సెకనుకు 4 వేల లావాదేవీలను పొందాము. ల్యాప్టాప్కు మంచి ఫలితం. మేము దీన్ని నాలుగు సర్వర్ల వర్చువల్ లోడ్ బెంచ్లో ఇన్స్టాల్ చేసాము, ఉత్పత్తి కంటే బలహీనంగా ఉంది. కనిష్టంగా మోహరించారు. మేము దీన్ని అమలు చేస్తాము మరియు ఒక థ్రెడ్లోని ల్యాప్టాప్లో కంటే అధ్వాన్నమైన ఫలితాన్ని పొందుతాము. షాక్ కంటెంట్.
మేము చాలా బాధపడ్డాము. మేము సర్వర్ లోడ్ను పరిశీలిస్తాము, కానీ అవి నిష్క్రియంగా ఉన్నాయని తేలింది.
మేము డెవలపర్లను పిలుస్తాము మరియు వారు మాకు వివరిస్తారు, జావా ప్రపంచం నుండి వచ్చిన వ్యక్తులు, టరాన్టూల్ సింగిల్-థ్రెడ్ అని. ఇది లోడ్ కింద ఉన్న ఒక ప్రాసెసర్ కోర్ ద్వారా మాత్రమే సమర్థవంతంగా ఉపయోగించబడుతుంది. ఆపై మేము ప్రతి సర్వర్లో గరిష్టంగా సాధ్యమయ్యే టరాన్టూల్ ఉదాహరణలను అమలు చేసాము, లోడ్ను ఆన్ చేసాము మరియు ఇప్పటికే సెకనుకు 14,5 వేల లావాదేవీలను అందుకున్నాము.
మళ్ళీ వివరిస్తాను. వనరులను విభిన్నంగా ఉపయోగించే పాత్రలుగా విభజించడం వల్ల, ప్రాసెసింగ్ కనెక్షన్లు మరియు డేటా పరివర్తనకు బాధ్యత వహించే మా పాత్రలు ప్రాసెసర్ను మాత్రమే లోడ్ చేస్తాయి మరియు లోడ్కు ఖచ్చితంగా అనులోమానుపాతంలో ఉంటాయి.
ఈ సందర్భంలో, మెమరీ ఇన్కమింగ్ కనెక్షన్లు మరియు తాత్కాలిక వస్తువులను ప్రాసెస్ చేయడానికి మాత్రమే ఉపయోగించబడింది.
దీనికి విరుద్ధంగా, నిల్వ సర్వర్లలో, ప్రాసెసర్ లోడ్ పెరిగింది, కానీ కనెక్షన్లను ప్రాసెస్ చేసే సర్వర్ల కంటే చాలా నెమ్మదిగా ఉంటుంది.
మరియు మెమరీ వినియోగం లోడ్ చేయబడిన డేటా మొత్తానికి ప్రత్యక్ష నిష్పత్తిలో పెరిగింది.
సేవలు
మా కొత్త ఉత్పత్తిని ప్రత్యేకంగా అప్లికేషన్ ప్లాట్ఫారమ్గా అభివృద్ధి చేయడానికి, మేము దానిపై సేవలు మరియు లైబ్రరీలను అమలు చేయడానికి ఒక భాగాన్ని సృష్టించాము.
సేవలు కొన్ని ఫీల్డ్లలో పనిచేసే చిన్న కోడ్ ముక్కలు మాత్రమే కాదు. అవి క్లస్టర్లో భాగమైన చాలా పెద్ద మరియు సంక్లిష్టమైన నిర్మాణాలు కావచ్చు, రిఫరెన్స్ డేటాను తనిఖీ చేయవచ్చు, వ్యాపార లాజిక్ను అమలు చేయడం మరియు ప్రతిస్పందనలను తిరిగి ఇవ్వడం. మేము సేవా స్కీమాను GraphQLకి ఎగుమతి చేస్తాము మరియు వినియోగదారు మొత్తం మోడల్లో ఆత్మపరిశీలనతో డేటాకు యూనివర్సల్ యాక్సెస్ పాయింట్ను అందుకుంటారు. ఇది చాలా సౌకర్యంగా ఉంటుంది.
సేవలు మరెన్నో ఫంక్షన్లను కలిగి ఉన్నందున, మేము తరచుగా ఉపయోగించే కోడ్ను తరలించే లైబ్రరీలు ఉండాలని మేము నిర్ణయించుకున్నాము. మేము వాటిని సురక్షిత వాతావరణానికి జోడించాము, ఇది మాకు ఏదైనా విచ్ఛిన్నం చేయదని గతంలో తనిఖీ చేసాము. మరియు ఇప్పుడు మనం లైబ్రరీల రూపంలో ఫంక్షన్లకు అదనపు వాతావరణాలను కేటాయించవచ్చు.
మేము నిల్వ కోసం మాత్రమే కాకుండా, కంప్యూటింగ్ కోసం కూడా ప్లాట్ఫారమ్ను కలిగి ఉండాలనుకుంటున్నాము. మరియు మేము ఇప్పటికే ప్రతిరూపాలు మరియు ముక్కల సమూహాన్ని కలిగి ఉన్నందున, మేము పంపిణీ చేయబడిన ఒక రకమైన కంప్యూటింగ్ను అమలు చేసాము మరియు దానిని మ్యాప్ రిడ్యూస్ అని పిలుస్తాము, ఎందుకంటే ఇది అసలు మ్యాప్ రిడ్యూస్ లాగానే మారింది.
పాత వ్యవస్థలు
మా అన్ని లెగసీ సిస్టమ్లు ప్రోటోకాల్కు మద్దతిస్తున్నప్పటికీ, HTTP ద్వారా మాకు కాల్ చేయలేవు మరియు GraphQLని ఉపయోగించలేవు. అందువల్ల, మేము ఈ సిస్టమ్లలోకి డేటాను ప్రతిరూపం చేయడానికి అనుమతించే యంత్రాంగాన్ని సృష్టించాము.
మన కోసం ఏదైనా మారితే, ప్రత్యేక ట్రిగ్గర్లు స్టోరేజ్ పాత్రలో ట్రిగ్గర్ చేయబడతాయి మరియు మార్పులతో కూడిన సందేశం ప్రాసెసింగ్ క్యూలో ముగుస్తుంది. ఇది ప్రత్యేక రెప్లికేటర్ పాత్రను ఉపయోగించి బాహ్య వ్యవస్థకు పంపబడుతుంది. ఈ పాత్ర స్థితిని నిల్వ చేయదు.
కొత్త మెరుగుదలలు
మీకు గుర్తున్నట్లుగా, వ్యాపార దృక్కోణం నుండి, మేము అసమకాలిక రికార్డింగ్ చేసాము. కానీ అది సరిపోదని వారు గ్రహించారు, ఎందుకంటే ఆపరేషన్ యొక్క స్థితి గురించి వెంటనే ప్రతిస్పందనను స్వీకరించాల్సిన వ్యవస్థల తరగతి ఉంది. కాబట్టి మేము మా GraphQLని పొడిగించాము మరియు ఉత్పరివర్తనాలను జోడించాము. అవి సేంద్రీయంగా డేటాతో పని చేసే ప్రస్తుత నమూనాకు సరిపోతాయి. మాకు, ఇది మరొక తరగతి వ్యవస్థల కోసం చదవడం మరియు వ్రాయడం రెండింటి యొక్క ఒకే పాయింట్.
సేవలు మాత్రమే మాకు సరిపోవని మేము గ్రహించాము, ఎందుకంటే రోజుకు, వారానికి, నెలకు ఒకసారి నిర్మించాల్సిన భారీ నివేదికలు ఉన్నాయి. దీనికి చాలా సమయం పట్టవచ్చు మరియు నివేదికలు Tarantool యొక్క ఈవెంట్ లూప్ను కూడా నిరోధించవచ్చు. అందువల్ల, మేము ప్రత్యేక పాత్రలను సృష్టించాము: షెడ్యూలర్ మరియు రన్నర్. రన్నర్లు రాష్ట్రాన్ని నిల్వ చేయరు. అవి మనం ఎగిరి గంతేసుకోలేని భారీ పనులను నిర్వహిస్తాయి. మరియు షెడ్యూలర్ పాత్ర ఈ టాస్క్ల లాంచ్ షెడ్యూల్ను పర్యవేక్షిస్తుంది, ఇది కాన్ఫిగరేషన్లో వివరించబడింది. టాస్క్లు వ్యాపార డేటా వలె అదే స్థలంలో నిల్వ చేయబడతాయి. సరైన సమయం వచ్చినప్పుడు, షెడ్యూలర్ పనిని తీసుకుంటాడు, దానిని కొంతమంది రన్నర్కు ఇస్తాడు, అతను దానిని లెక్కించి ఫలితాన్ని ఆదా చేస్తాడు.
అన్ని పనులను షెడ్యూల్లో అమలు చేయవలసిన అవసరం లేదు. కొన్ని నివేదికలను డిమాండ్పై చదవాలి. ఈ అవసరం వచ్చిన వెంటనే, శాండ్బాక్స్లో ఒక పని సృష్టించబడుతుంది మరియు అమలు కోసం రన్నర్కు పంపబడుతుంది. కొంత సమయం తర్వాత, ప్రతిదీ లెక్కించబడిందని మరియు నివేదిక సిద్ధంగా ఉందని వినియోగదారు అసమకాలిక ప్రతిస్పందనను అందుకుంటారు.
ప్రారంభంలో, మేము మొత్తం డేటాను నిల్వ చేయడం, దానిని సంస్కరణ చేయడం మరియు దానిని తొలగించకపోవడం వంటి నమూనాకు కట్టుబడి ఉన్నాము. కానీ జీవితంలో, ఎప్పటికప్పుడు మీరు ఇంకా ఏదో ఒకదానిని తొలగించవలసి ఉంటుంది, ఎక్కువగా కొన్ని ముడి లేదా ఇంటర్మీడియట్ సమాచారం. గడువు ముగిసిన దాని ఆధారంగా, మేము పాత డేటా నుండి నిల్వను క్లీన్ చేయడానికి ఒక మెకానిజమ్ని సృష్టించాము.
మెమరీలో డేటాను నిల్వ చేయడానికి తగినంత స్థలం లేనప్పుడు త్వరగా లేదా తరువాత పరిస్థితి వస్తుందని కూడా మేము అర్థం చేసుకున్నాము, అయితే డేటా తప్పనిసరిగా నిల్వ చేయబడాలి. ఈ ప్రయోజనాల కోసం, మేము త్వరలో డిస్క్ నిల్వను చేస్తాము.
తీర్మానం
మేము డేటాను ఒకే మోడల్లోకి లోడ్ చేసే పనితో ప్రారంభించాము మరియు దానిని అభివృద్ధి చేయడానికి మూడు నెలలు గడిపాము. మాకు ఆరు డేటా సరఫరా వ్యవస్థలు ఉన్నాయి. ఒకే మోడల్గా మొత్తం పరివర్తన కోడ్ లువాలో దాదాపు 30 వేల పంక్తులు. మరియు చాలా పని ఇంకా ముందుకు ఉంది. కొన్నిసార్లు పొరుగు జట్ల నుండి ప్రేరణ లేకపోవడం మరియు పనిని క్లిష్టతరం చేసే అనేక పరిస్థితులు ఉన్నాయి. మీరు ఎప్పుడైనా ఇలాంటి పనిని ఎదుర్కొంటే, దాని అమలు కోసం మీకు సాధారణంగా కనిపించే సమయాన్ని మూడు లేదా నాలుగుతో గుణించండి.
వ్యాపార ప్రక్రియలలో ఇప్పటికే ఉన్న సమస్యలను కొత్త DBMSని ఉపయోగించి పరిష్కరించలేమని కూడా గుర్తుంచుకోండి, చాలా ఉత్పాదకమైనది కూడా. నేను చెప్పేది ఏమిటంటే? మా ప్రాజెక్ట్ ప్రారంభంలో, మేము ఇప్పుడు మేము కొత్త వేగవంతమైన డేటాబేస్ను తీసుకువస్తాము మరియు మేము జీవిస్తాము అనే అభిప్రాయాన్ని కస్టమర్లలో సృష్టించాము! ప్రక్రియలు వేగంగా జరుగుతాయి, ప్రతిదీ బాగానే ఉంటుంది. వాస్తవానికి, వ్యాపార ప్రక్రియలు కలిగి ఉన్న సమస్యలను సాంకేతికత పరిష్కరించదు, ఎందుకంటే వ్యాపార ప్రక్రియలు వ్యక్తులు. మరియు మీరు సాంకేతికతతో కాకుండా వ్యక్తులతో పని చేయాలి.
పరీక్ష-ఆధారిత అభివృద్ధి ప్రారంభ దశలో బాధాకరమైనది మరియు సమయం తీసుకుంటుంది. కానీ రిగ్రెషన్ పరీక్షను నిర్వహించడానికి మీరు ఏమీ చేయనవసరం లేనప్పుడు, దాని యొక్క సానుకూల ప్రభావం స్వల్పకాలికంలో కూడా గమనించవచ్చు.
అభివృద్ధి యొక్క అన్ని దశలలో లోడ్ పరీక్షను నిర్వహించడం చాలా ముఖ్యం. వాస్తులో కొంత లోపాన్ని మీరు ఎంత త్వరగా గమనిస్తే, దాన్ని పరిష్కరించడం సులభం అవుతుంది, ఇది భవిష్యత్తులో మీకు చాలా సమయాన్ని ఆదా చేస్తుంది.
లూవాలో తప్పు లేదు. ఎవరైనా ఇందులో రాయడం నేర్చుకోవచ్చు: జావా డెవలపర్, జావాస్క్రిప్ట్ డెవలపర్, పైథాన్ డెవలపర్, ఫ్రంట్ ఎండ్ లేదా బ్యాక్ ఎండ్. మన విశ్లేషకులు కూడా దానిపై రాస్తారు.
మనకు SQL లేదు అనే విషయం గురించి మాట్లాడినప్పుడు, అది ప్రజలను భయపెడుతుంది. “SQL లేకుండా మీరు డేటాను ఎలా పొందుతారు? అది సాధ్యమైన పనేనా? ఖచ్చితంగా. OLTP క్లాస్ సిస్టమ్లో, SQL అవసరం లేదు. ఒక రకమైన భాష రూపంలో ప్రత్యామ్నాయం ఉంది, అది మిమ్మల్ని వెంటనే డాక్యుమెంట్-ఆధారిత వీక్షణకు తిరిగి ఇస్తుంది. ఉదాహరణకు, GraphQL. మరియు పంపిణీ చేయబడిన కంప్యూటింగ్ రూపంలో ప్రత్యామ్నాయం ఉంది.
మీరు స్కేల్ చేయవలసి ఉంటుందని మీరు అర్థం చేసుకున్నట్లయితే, మీ పరిష్కారాన్ని టరాన్టూల్లో డజన్ల కొద్దీ టరాన్టూల్ సందర్భాలలో సమాంతరంగా అమలు చేసే విధంగా రూపొందించండి. మీరు దీన్ని చేయకపోతే, Tarantool ఒక ప్రాసెసర్ కోర్ని మాత్రమే సమర్థవంతంగా ఉపయోగించగలదు కాబట్టి, తర్వాత కష్టంగా మరియు బాధాకరంగా ఉంటుంది.
మూలం: www.habr.com