全部产品
Search
文档中心

Tablestore:Klien Tunnel

更新时间:Jun 24, 2025

Klien tunnel adalah kerangka kerja konsumsi data otomatis dari Layanan Tunnel. Sebelum menggunakan Layanan Tunnel, Anda harus memahami fitur-fitur berikut dari klien tunnel: pemrosesan data otomatis, penyeimbangan beban otomatis, penskalaan horizontal yang sangat baik, pembersihan sumber daya otomatis, dan toleransi kesalahan otomatis.

Informasi latar belakang

Klien tunnel mendukung fitur-fitur berikut untuk memproses data penuh dan tambahan: penyeimbangan beban, pemulihan kesalahan, titik pemeriksaan, serta sinkronisasi informasi partisi guna memastikan urutan konsumsi informasi. Klien tunnel memungkinkan Anda fokus pada logika pemrosesan setiap rekaman.

Untuk kode contoh rinci dari klien tunnel, kunjungi Github.

Pemrosesan data otomatis

Klien tunnel secara berkala memeriksa denyut jantung untuk mendeteksi saluran aktif, memperbarui status Channel dan ChannelConnect, serta menginisialisasi, menjalankan, dan menghentikan tugas pemrosesan data.

  1. Inisialisasi sumber daya klien tunnel.

    1. Ubah status klien tunnel dari Ready menjadi Started.

    2. Atur HeartbeatTimeout dan ClientTag di TunnelWorkerConfig untuk menjalankan tugas ConnectTunnel dan menyambungkan Layanan Tunnel guna mendapatkan ClientId dari klien tunnel saat ini.

    3. Inisialisasi ChannelDialer untuk membuat tugas ChannelConnect.

      Setiap tugas ChannelConnect sesuai dengan satu Channel. Tugas ChannelConnect mencatat titik pemeriksaan konsumsi data.

    4. Atur parameter Callback untuk memproses data dan parameter CheckpointInterval untuk menentukan interval output titik pemeriksaan di Layanan Tunnel. Dengan cara ini, Anda dapat membuat prosesor data yang secara otomatis mengeluarkan titik pemeriksaan.

    5. Inisialisasi TunnelStateMachine untuk secara otomatis memperbarui status Channel.

  2. Secara berkala periksa pesan denyut jantung.

    Anda dapat mengatur parameter heartbeatIntervalInSec di TunnelWorkerConfig untuk menetapkan interval pemeriksaan denyut jantung.

    1. Kirim permintaan denyut jantung untuk mendapatkan daftar saluran terbaru yang tersedia dari Layanan Tunnel. Daftar tersebut mencakup ChannelId, versi saluran, dan status saluran.

    2. Gabungkan daftar saluran yang diperoleh dari Layanan Tunnel dengan daftar saluran lokal, lalu buat dan perbarui tugas ChannelConnect. Ikuti aturan berikut:

      • Gabungkan: Timpa versi sebelumnya di daftar lokal dengan versi yang lebih baru untuk ChannelId yang sama dari Layanan Tunnel, dan sisipkan saluran baru dari Layanan Tunnel ke dalam daftar lokal.

      • Buat tugas ChannelConnect: Buat tugas ChannelConnect dalam keadaan WAIT untuk saluran yang tidak memiliki tugas ChannelConnect. Jika tugas ChannelConnect sesuai dengan saluran dalam keadaan OPEN, jalankan tugas ReadRecords&&ProcessRecords yang memproses data secara siklik untuk tugas ChannelConnect ini. Untuk informasi lebih lanjut, lihat kelas ProcessDataPipeline dalam kode sumber.

      • Perbarui tugas ChannelConnect yang ada: Setelah Anda menggabungkan daftar saluran, jika saluran sesuai dengan tugas ChannelConnect, perbarui status ChannelConnect berdasarkan status saluran dengan ChannelId yang sama. Misalnya, jika saluran dalam keadaan CLOSE, atur status tugas ChannelConnect yang sesuai menjadi CLOSED untuk menghentikan tugas pipeline yang sesuai. Untuk informasi lebih lanjut, lihat metode ChannelConnect.notifyStatus dalam kode sumber.

  3. Pemrosesan status saluran otomatis.

    Berdasarkan jumlah klien tunnel aktif yang diperoleh dalam permintaan denyut jantung, Layanan Tunnel mengalokasikan partisi yang tersedia ke klien yang berbeda untuk menyeimbangkan beban.

    Layanan Tunnel secara otomatis memproses status saluran seperti yang dijelaskan dalam gambar berikut, dan mendorong konsumsi saluran serta penyeimbangan beban.

    Layanan Tunnel dan klien tunnel mengubah status mereka berdasarkan denyut jantung dan pembaruan versi saluran.

    1. Setiap saluran awalnya dalam keadaan WAIT.

    2. Saluran untuk data tambahan hanya berubah ke keadaan OPEN ketika konsumsi saluran pada partisi induk dihentikan.

    3. Layanan Tunnel mengalokasikan partisi dalam keadaan OPEN ke setiap klien tunnel.

    4. Selama penyeimbangan beban, Layanan Tunnel dan klien tunnel menggunakan protokol penjadwalan untuk mengubah status saluran dari OPEN, CLOSING menjadi CLOSED. Setelah mengonsumsi saluran BaseData atau Stream, klien tunnel melaporkan saluran sebagai dihentikan.

    Automatic processing of channel status

Penyeimbangan beban otomatis dan penskalaan horizontal yang sangat baik

  • Beberapa klien Tunnel dapat mengonsumsi data menggunakan Tunnel atau TunnelId yang sama. Saat klien tunnel menjalankan tugas denyut jantung, Layanan Tunnel secara otomatis mendistribusikan ulang saluran dan mencoba mengalokasikan saluran aktif ke setiap klien tunnel untuk mencapai penyeimbangan beban.

  • Anda dapat menambahkan klien tunnel untuk meningkatkan kemampuan konsumsi data. Klien tunnel dapat berjalan di satu atau lebih instans.

Pembersihan sumber daya otomatis dan toleransi kesalahan

  • Pembersihan sumber daya: Jika klien tunnel tidak dimatikan secara normal, seperti keluar karena pengecualian atau penghentian manual, sistem akan mendaur ulang sumber daya secara otomatis. Contohnya, sistem dapat melepaskan thread pool, memanggil metode shutdown yang telah Anda daftarkan untuk saluran yang sesuai, dan mengakhiri koneksi ke Layanan Tunnel.

  • Toleransi kesalahan: Ketika kesalahan non-parametrik, seperti waktu habis denyut jantung, terjadi pada klien tunnel, sistem secara otomatis memperbarui koneksi untuk melanjutkan konsumsi data yang stabil.