इस प्रोजेक्ट के बारे में
## परिचय
canal [kə'næl], जिसका अर्थ है जलमार्ग/पाइपलाइन/नहर, मुख्य रूप से MySQL डेटाबेस इंक्रीमेंटल लॉग पार्सिंग पर आधारित है, जो इंक्रीमेंटल डेटा सब्सक्रिप्शन और कंज़म्पशन प्रदान करता है। शुरुआत में अलीबाबा को क्रॉस-डेटासेंटर सिंक्रोनाइज़ेशन की आवश्यकता थी, इसलिए उन्होंने व्यावसायिक ट्रिगर विधि से धीरे-धीरे डेटाबेस लॉग पार्सिंग की ओर रुख किया, जिससे बड़ी संख्या में इंक्रीमेंटल सब्सक्रिप्शन और कंज़म्पशन सेवाएँ विकसित हुईं।
लॉग इंक्रीमेंटल सब्सक्रिप्शन और कंज़म्पशन पर आधारित सेवाओं में शामिल हैं: डेटाबेस मिररिंग, डेटाबेस रीयल-टाइम बैकअप, इंडेक्स निर्माण और रीयल-टाइम रखरखाव (विभाजित हेटरोजीनियस इंडेक्स, इनवर्टेड इंडेक्स आदि), व्यावसायिक कैश रिफ्रेश, और व्यावसायिक लॉजिक के साथ इंक्रीमेंटल डेटा प्रोसेसिंग।
वर्तमान में canal स्रोत MySQL संस्करणों का समर्थन करता है: 5.1.x, 5.5.x, 5.6.x, 5.7.x, 8.0.x।
## कार्य सिद्धांत
### MySQL मास्टर-स्लेव रेप्लिकेशन सिद्धांत
- MySQL मास्टर डेटा परिवर्तनों को बाइनरी लॉग में लिखता है (binary log, जिसे बाइनरी लॉग इवेंट्स के रूप में रिकॉर्ड किया जाता है)
- MySQL स्लेव मास्टर के binary log events को रिले लॉग (relay log) में कॉपी करता है
- MySQL स्लेव relay log में इवेंट्स को रीप्ले करता है, डेटा परिवर्तनों को अपने डेटा में दर्शाता है
### canal कार्य सिद्धांत
- canal MySQL स्लेव के इंटरैक्शन प्रोटोकॉल का अनुकरण करता है, खुद को MySQL स्लेव के रूप में प्रस्तुत करता है, और MySQL मास्टर को dump प्रोटोकॉल भेजता है
- MySQL मास्टर dump अनुरोध प्राप्त करने के बाद, binary log को canal को पुश करना शुरू करता है
- canal binary log ऑब्जेक्ट (मूल रूप से बाइट स्ट्रीम) को पार्स करता है
## महत्वपूर्ण संस्करण अपडेट विवरण
### canal 1.1.x संस्करण
- समग्र प्रदर्शन परीक्षण और अनुकूलन, 150% सुधार (#726)
- Prometheus मॉनिटरिंग के लिए मूल समर्थन (#765)
- Kafka मैसेज डिलीवरी के लिए मूल समर्थन (#695)
- अलीबाबा क्लाउड RDS के binlog सब्सक्रिप्शन के लिए मूल समर्थन (स्वचालित मास्टर-स्लेव स्विच/oss binlog ऑफ़लाइन पार्सिंग का समाधान)
- Docker इमेज के लिए मूल समर्थन (#801)
### canal 1.1.4 संस्करण
- WebUI क्षमता पेश की गई, canal-admin प्रोजेक्ट जोड़ा गया, जो WebUI-आधारित canal गतिशील प्रबंधन का समर्थन करता है, जिसमें कॉन्फ़िगरेशन, कार्य, लॉग आदि की ऑनलाइन व्हाइट-स्क्रीन ऑपरेशन और रखरखाव शामिल है
## दस्तावेज़
पूर्ण दस्तावेज़ उपलब्ध हैं, जिनमें Home, Introduction, QuickStart (Docker, Kafka/RocketMQ, अलीबाबा क्लाउड RDS, Prometheus), Canal Admin (QuickStart, Guide, ServerGuide, Docker), AdminGuide, ClientExample, ClientAPI, Performance, DevGuide, BinlogChange (MySQL 5.6/MariaDB), TableMetaTSDB, ReleaseNotes, Download, FAQ शामिल हैं।
## बहु-भाषा समर्थन
canal क्लाइंट-सर्वर मोड अपनाता है, इंटरैक्शन प्रोटोकॉल protobuf 3.0 का उपयोग करता है, क्लाइंट विभिन्न भाषाओं में कंज़म्पशन लॉजिक लागू कर सकते हैं:
- Java क्लाइंट: आधिकारिक उदाहरण
- C# क्लाइंट: CanalSharp
- Go क्लाइंट: canal-go
- PHP क्लाइंट: canal-php
- Python क्लाइंट: canal-python
- Rust क्लाइंट: canal-rs
- Nodejs क्लाइंट: canal-nodejs
canal MySQL binlog इंक्रीमेंटल प्राप्ति और पार्सिंग टूल के रूप में, परिवर्तन रिकॉर्ड को MQ सिस्टम (जैसे Kafka/RocketMQ) में डिलीवर कर सकता है, MQ की बहु-भाषा क्षमता का लाभ उठाते हुए।
## canal पर आधारित विकसित उपकरण
- canal2sql (binlog के आधार पर SQL उत्पन्न करता है)
## संबंधित ओपन-सोर्स और उत्पाद
- canal कंज़्यूमर ओपन-सोर्स प्रोजेक्ट: Otter
- अलीबाबा Oracle से डेटा माइग्रेशन सिंक्रोनाइज़ेशन टूल: yugong
- अलीबाबा ऑफ़लाइन सिंक्रोनाइज़ेशन ओपन-सोर्स प्रोजेक्ट: DataX
- अलीबाबा डेटाबेस कनेक्शन पूल ओपन-सोर्स प्रोजेक्ट: Druid
- अलीबाबा रीयल-टाइम डेटा सिंक्रोनाइज़ेशन टूल: DTS
## समस्या प्रतिक्रिया
- issue रिपोर्ट करें: GitHub Issues
- प्रोजेक्ट Issues अलीबाबा क्लाउड डेवलपर समुदाय में समकालिक रूप से संग्रहीत होंगे
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.