Topik ini menjelaskan TunnelBufferedWriter, yang digunakan untuk mengunggah data.
Prosedur pengunggahan data adalah sebagai berikut:
- Pisahkan data menjadi blok-blok.
- Panggil openRecordWriter(id) untuk menentukan ID setiap blok data.
- Gunakan satu atau lebih thread untuk mengunggah blok-blok tersebut. Jika sebuah blok gagal diunggah, semua blok akan diunggah ulang.
- Setelah semua blok berhasil diunggah, panggil session.commit([1,2,3,…]) untuk memberikan ID blok ke server guna verifikasi.
Proses pengunggahan menjadi kompleks karena batasan pada manajemen blok dan waktu habis koneksi di server. Tunnel SDK menyediakan RecordWriter yang ditingkatkan, yaitu TunnelBufferedWriter, untuk menyederhanakan proses pengunggahan.
Definisi
public class TunnelBufferedWriter implements RecordWriter {
public TunnelBufferedWriter(TableTunnel.UploadSession session, CompressOption option) throws IOException;
public long getTotalBytes();
public void setBufferSize(long bufferSize);
public void setRetryStrategy(RetryStrategy strategy);
public void write(Record r) throws IOException;
public void close() throws IOException;
}
Deskripsi
- Siklus hidup: dari pembuatan RecordWriter hingga akhir proses pengunggahan data.
- Instance TunnelBufferedWriter: Anda dapat memanggil openBufferedWriter dari UploadSession untuk membuat instance TunnelBufferedWriter.
- Pengunggahan data: Saat memanggil Write, entri data pertama kali ditulis ke cache lokal. Setelah cache penuh, beberapa entri dikirimkan ke server sekaligus untuk menghindari waktu habis koneksi. Jika pengunggahan gagal, sistem secara otomatis mencoba lagi operasi tersebut.
- Penghentian tugas pengunggahan: Panggil close lalu commit dari UploadSession untuk menyelesaikan proses pengunggahan.
- Kontrol buffer: Gunakan setBufferSize untuk memodifikasi memori yang digunakan oleh buffer (dalam byte). Kami sarankan agar memori diatur ke nilai minimal 64 MB untuk mencegah server menghasilkan file kecil yang berlebihan, yang dapat mempengaruhi performa. Nilai berkisar antara 1 MB hingga 1000 MB, dengan nilai default 64 MB.
- Pengaturan kebijakan percobaan ulang: Kebijakan yang tersedia meliputi EXPONENTIAL_BACKOFF, LINEAR_BACKOFF, dan CONSTANT_BACKOFF. Sebagai contoh, EXPONENTIAL_BACKOFF digunakan dalam kode berikut. Jumlah maksimum percobaan ulang adalah 6, dengan waktu tunggu awal 4 detik yang meningkat secara bertahap menjadi 8 detik, 16 detik, 32 detik, 64 detik, dan 128 detik. Kami sarankan agar konfigurasi ini tidak diubah.
RetryStrategy retry = new RetryStrategy(6, 4, RetryStrategy.BackoffStrategy.EXPONENTIAL_BACKOFF) writer = (TunnelBufferedWriter) uploadSession.openBufferedWriter(); writer.setRetryStrategy(retry);