Bagikan melalui


Pengaruh serialisasi data terhadap peningkatan aplikasi

Dalam peningkatan aplikasi bergulir, peningkatan diterapkan ke subset node, satu domain peningkatan pada satu waktu. Selama proses ini, beberapa domain peningkatan akan berada pada versi aplikasi Anda yang lebih baru, dan beberapa domain peningkatan akan berada pada versi lama aplikasi Anda. Selama peluncuran, versi baru aplikasi Anda harus dapat membaca versi lama data Anda, dan versi lama aplikasi Anda harus dapat membaca versi baru data Anda. Jika format data tidak kompatibel ke depan dan ke belakang, peningkatan mungkin gagal, atau lebih buruk, data mungkin hilang atau rusak. Artikel ini membahas hal yang mendasari format data Anda dan menawarkan praktik terbaik untuk memastikan bahwa data Anda kompatibel ke depan dan ke belakang.

Apa yang mendasari format data Anda?

Di Azure Service Fabric, data yang tetap ada dan direplikasi berasal dari kelas C# Anda. Untuk aplikasi yang menggunakan Reliable Collections,data tersebut adalah objek dalam reliable dictionary dan antrean. Untuk aplikasi yang menggunakan Reliable Actors, yang merupakan status pendukung untuk actor. Kelas C# ini harus dapat diserialisasikan agar tetap ada bertahan dan direplikasi. Oleh karena itu, format data didefinisikan oleh bidang dan properti yang diserialisasikan, serta cara mereka diserialisasikan. Misalnya, dalam IReliableDictionary<int, MyClass>, data adalah int serial dan MyClass serial.

Perubahan kode yang menghasilkan perubahan format data

Karena format data ditentukan oleh kelas C#, perubahan pada kelas dapat menyebabkan perubahan format data. Pemantauan harus dilakukan untuk memastikan bahwa peningkatan bergulir dapat menangani perubahan format data. Contoh yang dapat menyebabkan perubahan format data:

  • Menambahkan atau menghapus bidang atau properti
  • Mengganti nama bidang atau properti
  • Mengubah jenis bidang atau properti
  • Mengubah nama kelas atau namespace

Kontrak Data sebagai serializer default

Serializer umumnya bertanggung jawab untuk membaca data dan mendeserialisasikannya ke versi saat ini, bahkan jika data berada di versi yang lebih lama atau lebih baru. Serializer default adalah serializer Kontrak Data yang memiliki aturan penerapan versi yang terdefinisi dengan baik. Reliable Collection memungkinkan serializer diambil alih, tetapi Reliable Actor saat ini tidak mengizinkannya. Serializer data memainkan peran penting dalam memungkinkan peningkatan bergulir. Serializer Kontrak Data adalah serializer yang kami rekomendasikan untuk aplikasi Service Fabric.

Pengaruh format data terhadap peningkatan bergulir

Selama peningkatan bergulir, ada dua skenario utama saat serializer mungkin menemukan versi data Anda yang lebih lama atau lebih baru:

  1. Setelah node ditingkatkan dan dimulai kembali, serializer baru akan memuat data yang tetap ditempatkan di disk oleh versi lama.
  2. Selama peningkatan bergulir, kluster akan berisi campuran versi lama dan baru kode Anda. Karena replika dapat ditempatkan di domain peningkatan yang berbeda, dan replika saling mengirim data, versi baru dan/atau lama data Anda mungkin dialami oleh versi baru dan/atau lama dari serializer Anda.

Catatan

"Versi baru" dan "versi lama" di sini mengacu pada versi kode Anda yang sedang berjalan. "Serializer baru" mengacu pada kode serializer yang dijalankan dalam versi baru aplikasi Anda. "Data baru" mengacu pada kelas C# serial dari versi baru aplikasi Anda.

Dua versi kode dan format data harus kompatibel ke depan dan ke belakang. Jika tidak kompatibel, peningkatan bergulir mungkin gagal atau data mungkin hilang. Peningkatan bergulir mungkin gagal karena kode atau serializer dapat menampilkan pengecualian atau kesalahan ketika menemukan versi lain. Data mungkin hilang jika, misalnya, properti baru ditambahkan tetapi serializer lama membuangnya selama deserialisasi.

Kontrak Data adalah solusi yang direkomendasikan untuk memastikan bahwa data Anda kompatibel. Ini memiliki aturan penerapan versi yang terdefinisi dengan baik untuk menambahkan, menghapus, dan mengubah bidang. Kontrak Data juga memiliki dukungan untuk menangani bidang yang tidak dikenal, mengaitkannya ke dalam proses serialisasi dan deserialisasi, serta menangani dengan warisan kelas. Untuk informasi selengkapnya, lihat Menggunakan Kontrak Data.

Langkah berikutnya

Meningkatkan Aplikasi Anda Menggunakan Visual Studio memandu Anda melalui peningkatan aplikasi menggunakan Visual Studio.

Meningkatkan Aplikasi Anda Menggunakan PowerShell memandu Anda melalui peningkatan aplikasi menggunakan PowerShell.

Kontrol cara aplikasi ditingkatkan dengan menggunakan Parameter Peningkatan.

Pelajari cara menggunakan fungsionalitas tingkat lanjut saat meningkatkan aplikasi Anda dengan mengacu pada Topik Tingkat Lanjut.

Perbaiki masalah umum dalam peningkatan aplikasi dengan mengacu pada langkah-langkah dalam Pemecahan Masalah Peningkatan Aplikasi.