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. అన్నీ బ్యాకప్ తీసుకోండి – పూర్తి 1.3 డేటాబేస్ డంప్‌ను ఎగుమతి (export) చేసి, conf డైరెక్టరీని కాపీ చేయండి.
  2. పాత టేబుల్స్‌ను కొత్త పేర్లకు మ్యాప్ చేయండిt_ds_process_definitionను t_ds_workflow_definitionగా మరియు t_ds_process_instanceను t_ds_workflow_instanceగా మార్చే స్క్రిప్ట్‌ను రన్ చేయండి. ఆ తర్వాత ఫారిన్-కీ (foreign-key) కన్స్ట్రైంట్‌లను తనిఖీ చేయండి.
  3. JSON టాస్క్ ఫీల్డ్‌లను మైగ్రేట్ చేయండి – JSON-ఎన్‌కోడ్ చేయబడిన టాస్క్ డేటాను కొత్త రిలేషనల్ టేబుల్స్‌లోకి కాపీ చేయండి. షెడ్యూలర్ కొత్త లేఅవుట్‌ను సరిగ్గా చదువుతుందో లేదో చూడటానికి కొన్ని DAGలను పరీక్షించండి.
  4. ఒక రిజిస్ట్రీని ఎంచుకోండి – మీరు ఇప్పటికే ZooKeeper వాడుతుంటే దానినే కొనసాగించండి; లేదంటే JDBC-ఆధారిత రిజిస్ట్రీ లేదా Etcd క్లస్టర్‌ను సెటప్ చేసి, అన్ని నోడ్స్‌ను కొత్త అడ్రస్‌కు పాయింట్ చేయండి.
  5. ప్లగిన్‌లను డిప్లాయ్ చేయండి – మీరు 1.3లో ఉపయోగించిన ఏవైనా కస్టమ్ టాస్క్ రకాలను 3.x-అనుకూల ప్లగిన్‌లుగా ప్యాకేజ్ చేసి, ప్రతి MasterServerలో డిప్లాయ్ చేయండి.
  6. ముందుగా MasterServerను రోల్ అవుట్ చేయండి – మైగ్రేట్ చేసిన డేటాబేస్‌కు పాయింట్ చేస్తూ కొత్త MasterServer ఇన్‌స్టన్స్‌ను ప్రారంభించండి. ఇది ఇప్పటికే ఉన్న వర్క్‌ఫ్లోలను చూపిస్తుందో లేదో మరియు హెల్త్ డ్యాష్‌బోర్డ్‌లో ఎటువంటి లోపాలు లేవని నిర్ధారించుకోండి.
  7. WorkerServersను జోడించండి – ఒక్కొక్కటిగా WorkerServersను ప్రారంభించండి. రిజిస్ట్రీలో విజయవంతమైన రిజిస్ట్రేషన్‌ను గమనించండి మరియు లాగ్‌లు gRPC ద్వారా వస్తున్నాయని నిర్ధారించుకోండి.
  8. స్మోక్ టెస్ట్‌లు (smoke tests) రన్ చేయండి – సాధారణ టాస్క్ రకాలను కవర్ చేసే కొన్ని తక్కువ రిస్క్ ఉన్న DAGలను రన్ చేయండి. లాగ్‌లు UIలో కనిపిస్తున్నాయా మరియు టాస్క్ స్టేటస్ అప్‌డేట్‌లు సరిగ్గా జరుగుతున్నాయా అని తనిఖీ చేయండి.
  9. ఫెయిల్‌ఓవర్ కోసం పర్యవేక్షించండి – MasterServer క్రాష్ అయినట్లు అనుకరించి (simulate), Watcher స్టాండ్‌బై సర్వర్‌ను ఎలా ప్రమోట్ చేస్తుందో గమనించండి. రన్ అవుతున్న టాస్క్‌లు మాన్యువల్ రీస్టార్ట్ లేకుండా కొనసాగుతున్నాయని నిర్ధారించుకోండి.

మీకు ఎదురయ్యే ఇబ్బందులు

కొత్త ప్లగ్-ఇన్ మోడల్ శక్తివంతమైనది, కానీ ఇది కస్టమ్ డెవలప్‌మెంట్ కోసం ప్రమాణాలను పెంచుతుంది.

సారాంశం: 1.3 నుండి 3.x కి మారడం అనేది కేవలం వెర్షన్ మార్పు మాత్రమే కాదు; దీనికి సమన్వయంతో కూడిన డేటాబేస్ రీనేమ్, JSON-to-relational మైగ్రేషన్, మరియు ప్లగ్-ఇన్-ఎనేబుల్డ్, రిజిస్ట్రీ-డ్రివెన్ మోడల్ ఆధారంగా మీ క్లస్టర్‌ను పునర్నిర్మించడం అవసరం. ఈ చెక్‌లిస్ట్‌ను దశలవారీగా అనుసరించండి, ముందుగానే పరీక్షించండి, అప్పుడు మీరు స్కేల్ అవుట్ అయ్యే, స్వయంచాలకంగా రికవరీ అయ్యే మరియు ఆధునిక క్లౌడ్ సర్వీసుల మాదిరిగానే ప్రోటోకాల్‌ను ఉపయోగించే ఒక షెడ్యూలర్‌ను పొందగలరు.