Apache DolphinScheduler 3.x దాని నిర్మాణాన్ని (architecture) పూర్తిగా మార్చేసింది. ఇంకా 1.3 వెర్షన్ వాడుతున్న టీమ్లు అప్గ్రేడ్ కావడానికి ముందు తమ క్లస్టర్ లేఅవుట్ను మార్చుకోవాలి మరియు డేటాబేస్ స్కీమాను తిరిగి రాయాల్సి ఉంటుంది. పాత సింగిల్-నోడ్ మాస్టర్ పోయి, దానికి బదులుగా ప్లగ్-ఇన్ ఆధారిత, వికేంద్రీకృత (decentralized) వ్యవస్థ వస్తుంది, ఇది జాబ్లను షెడ్యూల్ చేయడం, నిల్వ చేయడం మరియు లాగ్ చేయడం వంటి పనులను భిన్నంగా చేస్తుంది.
ఈ మార్పు ఎందుకు ముఖ్యం
వెర్షన్ 1.3 ప్రతి షెడ్యూలింగ్ నిర్ణయాన్ని నిర్వహించే ఒక కేంద్రీకృత మాస్టర్పై ఆధారపడి ఉండేది మరియు కేవలం పన్నెండు ఇన్-బిల్ట్ టాస్క్ రకాలను మాత్రమే అందించేది. 3.x వెర్షన్ దీనికి బదులుగా టాస్క్ రకాలను మరియు స్టోరేజ్ అడాప్టర్లను ప్లగిన్లుగా లోడ్ చేసే మైక్రోకెర్నల్ను ఉపయోగిస్తుంది; అలాగే మాస్టర్లు మరియు వర్కర్లు ఒక రిజిస్ట్రీ సర్వీస్ ద్వారా కమ్యూనికేట్ చేసుకునేలా చేయడం ద్వారా 'సింగిల్ పాయింట్ ఆఫ్ ఫెయిల్యూర్' సమస్యను తొలగిస్తుంది. దీనివల్ల ఆపరేటర్లకు స్కేలబిలిటీ మరియు రెసిలియెన్స్ లభిస్తాయి; డెవలపర్లు కోర్ కోడ్ను మార్చాల్సిన అవసరం లేకుండా కేవలం ఒక JAR ఫైల్ను జోడించడం ద్వారా షెడ్యూలర్ను విస్తరించవచ్చు.
నిర్మాణంలో వచ్చిన మార్పులు
- మైక్రోకెర్నల్ ప్లగ్-ఇన్ సిస్టమ్ – టాస్క్ నిర్వచనాలు, రిసోర్స్ హ్యాండ్లర్లు మరియు కస్టమ్ హెల్త్ చెక్లు ఇప్పుడు వేర్వేరు మాడ్యూల్స్లో ఉంటాయి. కొత్త టాస్క్ రకాన్ని జోడించాలంటే, దాని ప్లగిన్ను క్లాస్పాత్లో ఉంచి, సంబంధిత నోడ్స్ను రీస్టార్ట్ చేస్తే సరిపోతుంది.
- వికేంద్రీకృత సమన్వయం (Decentralized coordination) – మాస్టర్లు మరియు వర్కర్లు ఒక రిజిస్ట్రీ ద్వారా ఒకరినొకరు గుర్తించుకుంటారు. ఈ రిజిస్ట్రీ ZooKeeper (పాత డిఫాల్ట్), JDBC-ఆధారిత రిలేషనల్ డేటాబేస్ లేదా Etcd క్లస్టర్ కావచ్చు. మీ ప్రస్తుత టెక్నాలజీ స్టాక్కు సరిపోయే దానిని ఎంచుకోండి.
- విస్తరించిన టాస్క్ క్యాటలాగ్ – ఇన్-బిల్ట్ టాస్క్లు 12 నుండి 30 కంటే ఎక్కువకు పెరిగాయి, ఇవి క్లౌడ్-నేటివ్ వర్క్లోడ్లు మరియు మెషిన్ లెర్నింగ్ పైప్లైన్లను కవర్ చేస్తాయి.
- MasterServer vs WorkerServer – MasterServer ఇప్పుడు DAG పార్టిషనింగ్, సబ్మిషన్ మరియు హెల్త్ మానిటరింగ్ను నిర్వహిస్తుంది. WorkerServer కేవలం ఎగ్జిక్యూషన్ ఇంజిన్గా పనిచేస్తూ లాగ్లను స్ట్రీమ్ చేస్తుంది. ఈ విభజన వల్ల బాధ్యతలు స్పష్టంగా ఉంటాయి మరియు ప్రతి లేయర్ను స్వతంత్రంగా నిర్వహించుకోవచ్చు.
- Watcher ద్వారా ఫాల్ట్ టాలరెన్స్ – నోడ్ ఫెయిల్యూర్ల కోసం Watcher రిజిస్ట్రీని గమనిస్తూ ఉంటుంది. మాస్టర్ లేదా వర్కర్ ఆగిపోయినప్పుడు, రిజిస్ట్రీ ఆటోమేటిక్ ఫెయిల్ఓవర్ను ప్రారంభిస్తుంది.
- gRPC లాగ్ ట్రాన్స్పోర్ట్ – రిమోట్ లాగ్ రిట్రీవల్ను Netty-ఆధారిత ప్రోటోకాల్ నుండి gRPCకి మార్చారు, ఇది మెరుగైన పనితీరును అందిస్తుందని సమాచారం.
మీరు విస్మరించలేని డేటాబేస్ రీఫ్యాక్టరింగ్
అప్గ్రేడ్ చేయడానికి స్కీమా మార్పులు అతిపెద్ద అడ్డంకి:
| 1.3 టేబుల్ | 3.x టేబుల్ | ఏమి మారింది |
|---|---|---|
t_ds_process_definition |
t_ds_workflow_definition |
UI మరియు API పదజాలానికి అనుగుణంగా “process” అనే పదాన్ని “workflow”గా మార్చారు. |
t_ds_process_instance |
t_ds_workflow_instance |
రన్టైమ్ రికార్డుల కోసం కూడా ఇదే మార్పు జరిగింది. |
పేర్లు మార్చడమే కాకుండా, 3.x వెర్షన్ గతంలో JSON బ్లాబ్లలో ఉండే టాస్క్ మెటాడేటాను ప్రత్యేక రిలేషనల్ టేబుల్స్లోకి మారుస్తుంది, దీనివల్ల డేటా మేనేజ్మెంట్ మరింత సులభమవుతుంది.
మైగ్రేషన్ చెక్లిస్ట్
- అన్నీ బ్యాకప్ తీసుకోండి – పూర్తి 1.3 డేటాబేస్ డంప్ను ఎగుమతి (export) చేసి,
confడైరెక్టరీని కాపీ చేయండి. - పాత టేబుల్స్ను కొత్త పేర్లకు మ్యాప్ చేయండి –
t_ds_process_definitionనుt_ds_workflow_definitionగా మరియుt_ds_process_instanceనుt_ds_workflow_instanceగా మార్చే స్క్రిప్ట్ను రన్ చేయండి. ఆ తర్వాత ఫారిన్-కీ (foreign-key) కన్స్ట్రైంట్లను తనిఖీ చేయండి. - JSON టాస్క్ ఫీల్డ్లను మైగ్రేట్ చేయండి – JSON-ఎన్కోడ్ చేయబడిన టాస్క్ డేటాను కొత్త రిలేషనల్ టేబుల్స్లోకి కాపీ చేయండి. షెడ్యూలర్ కొత్త లేఅవుట్ను సరిగ్గా చదువుతుందో లేదో చూడటానికి కొన్ని DAGలను పరీక్షించండి.
- ఒక రిజిస్ట్రీని ఎంచుకోండి – మీరు ఇప్పటికే ZooKeeper వాడుతుంటే దానినే కొనసాగించండి; లేదంటే JDBC-ఆధారిత రిజిస్ట్రీ లేదా Etcd క్లస్టర్ను సెటప్ చేసి, అన్ని నోడ్స్ను కొత్త అడ్రస్కు పాయింట్ చేయండి.
- ప్లగిన్లను డిప్లాయ్ చేయండి – మీరు 1.3లో ఉపయోగించిన ఏవైనా కస్టమ్ టాస్క్ రకాలను 3.x-అనుకూల ప్లగిన్లుగా ప్యాకేజ్ చేసి, ప్రతి MasterServerలో డిప్లాయ్ చేయండి.
- ముందుగా MasterServerను రోల్ అవుట్ చేయండి – మైగ్రేట్ చేసిన డేటాబేస్కు పాయింట్ చేస్తూ కొత్త MasterServer ఇన్స్టన్స్ను ప్రారంభించండి. ఇది ఇప్పటికే ఉన్న వర్క్ఫ్లోలను చూపిస్తుందో లేదో మరియు హెల్త్ డ్యాష్బోర్డ్లో ఎటువంటి లోపాలు లేవని నిర్ధారించుకోండి.
- WorkerServersను జోడించండి – ఒక్కొక్కటిగా WorkerServersను ప్రారంభించండి. రిజిస్ట్రీలో విజయవంతమైన రిజిస్ట్రేషన్ను గమనించండి మరియు లాగ్లు gRPC ద్వారా వస్తున్నాయని నిర్ధారించుకోండి.
- స్మోక్ టెస్ట్లు (smoke tests) రన్ చేయండి – సాధారణ టాస్క్ రకాలను కవర్ చేసే కొన్ని తక్కువ రిస్క్ ఉన్న DAGలను రన్ చేయండి. లాగ్లు UIలో కనిపిస్తున్నాయా మరియు టాస్క్ స్టేటస్ అప్డేట్లు సరిగ్గా జరుగుతున్నాయా అని తనిఖీ చేయండి.
- ఫెయిల్ఓవర్ కోసం పర్యవేక్షించండి – MasterServer క్రాష్ అయినట్లు అనుకరించి (simulate), Watcher స్టాండ్బై సర్వర్ను ఎలా ప్రమోట్ చేస్తుందో గమనించండి. రన్ అవుతున్న టాస్క్లు మాన్యువల్ రీస్టార్ట్ లేకుండా కొనసాగుతున్నాయని నిర్ధారించుకోండి.
మీకు ఎదురయ్యే ఇబ్బందులు
కొత్త ప్లగ్-ఇన్ మోడల్ శక్తివంతమైనది, కానీ ఇది కస్టమ్ డెవలప్మెంట్ కోసం ప్రమాణాలను పెంచుతుంది.
సారాంశం: 1.3 నుండి 3.x కి మారడం అనేది కేవలం వెర్షన్ మార్పు మాత్రమే కాదు; దీనికి సమన్వయంతో కూడిన డేటాబేస్ రీనేమ్, JSON-to-relational మైగ్రేషన్, మరియు ప్లగ్-ఇన్-ఎనేబుల్డ్, రిజిస్ట్రీ-డ్రివెన్ మోడల్ ఆధారంగా మీ క్లస్టర్ను పునర్నిర్మించడం అవసరం. ఈ చెక్లిస్ట్ను దశలవారీగా అనుసరించండి, ముందుగానే పరీక్షించండి, అప్పుడు మీరు స్కేల్ అవుట్ అయ్యే, స్వయంచాలకంగా రికవరీ అయ్యే మరియు ఆధునిక క్లౌడ్ సర్వీసుల మాదిరిగానే ప్రోటోకాల్ను ఉపయోగించే ఒక షెడ్యూలర్ను పొందగలరు.
