Alasan Sebenarnya Mengapa Fogo Menonjol

Saya memperhatikan Fogo karena alasan yang tidak ada hubungannya dengan tangkapan layar TPS atau perbandingan papan peringkat. Apa yang menarik bagi saya adalah bagaimana Layer 1 berbasis SVM secara diam-diam memaksa pengembang untuk matang. Ketika Anda membangun pada model eksekusi ini, Anda tidak hanya mendapatkan kecepatan. Anda melangkah ke lingkungan di mana desain status yang baik dihargai dan arsitektur yang ceroboh terungkap segera.

Kecepatan Menjadi Nyata Ketika Aplikasi Penting

Fogo dibentuk berdasarkan ide sederhana. Jika waktu eksekusinya benar-benar cepat dan mampu memproses transaksi independen pada saat yang sama, maka aplikasi menjadi bottleneck. Di situlah segalanya menjadi nyata. SVM tidak bertanya apakah klaim pemasaran Anda terdengar bagus. Ia bertanya apakah transaksi Anda benar-benar independen ketika pengguna nyata tiba.

Mengapa Eksekusi Paralel Tidak Sederhana

Eksekusi paralel terdengar mudah dalam teori. Transaksi berjalan bersama. Kapasitas meningkat. Semuanya terasa lancar. Dalam praktiknya, itu hanya berhasil ketika transaksi tidak berjuang untuk keadaan yang sama. Pada rantai SVM, keadaan adalah eksplisit. Setiap transaksi harus menyatakan apa yang dibacanya dan apa yang ditulisnya. Jika deklarasi tersebut tumpang tindih, runtime tidak dapat mengeksekusinya dengan aman secara paralel. Itu harus diserialisasi.

Desain Anda Sendiri Dapat Membatasi Kecepatan

Itu berarti rantai tidak dapat menyembunyikan pilihan desain yang buruk. Jika Anda menyusun aplikasi Anda sehingga setiap tindakan menulis ke akun bersama yang sama, Anda telah menciptakan kemacetan lalu lintas di dalam sistem yang dibangun untuk banyak jalur.

Kinerja Hidup di Lapisan Aplikasi

Ini adalah bagian yang sering dilewatkan orang. Mereka berbicara tentang kinerja seolah-olah itu sepenuhnya hidup di lapisan rantai. Di Fogo, kinerja menjadi tanggung jawab tingkat aplikasi. Dua aplikasi dapat duduk di rantai yang sama. Satu tetap lancar di bawah beban. Yang lainnya terasa terjebak. Perbedaannya bukan pada runtime. Itu adalah bagaimana keadaan dipartisi.

Kebiasaan Berurutan Dapat Membunuh Paralelisme

Pengembang yang datang dari sistem berurutan sering membawa kebiasaan yang terasa aman. Salah satu yang paling umum adalah mempertahankan objek keadaan pusat tunggal yang diperbarui oleh setiap tindakan. Itu terasa bersih. Itu terasa terorganisir. Itu memberi Anda satu sumber kebenaran. Pada rantai SVM, pola yang sama menjadi throttle yang diam. Setiap pengguna sekarang bersaing untuk menulis di tempat yang sama. Runtime siap untuk paralelisme, tetapi aplikasi memaksa segalanya ke dalam satu jalur.

Tata Letak Keadaan sebagai Kebijakan Konkruensi

Di Fogo, tata letak keadaan menjadi kebijakan konkruensi. Setiap akun yang dapat ditulis berfungsi seperti kunci. Jika terlalu banyak aliran bergantung pada kunci yang sama, Anda akan menghancurkan paralelisme bahkan ketika jaringan tidak tersendat. Perlambatan tidak berasal dari rantai. Itu berasal dari arsitektur Anda sendiri.

Anggap Keadaan yang Dapat Ditulis sebagai Keputusan

Model mental yang lebih baik adalah ini. Setiap bagian dari keadaan yang dapat ditulis mendefinisikan siapa yang dapat bergerak pada waktu yang sama. Tujuannya bukan untuk menghilangkan keadaan bersama sepenuhnya. Beberapa data bersama adalah hal yang diperlukan. Tujuannya adalah disiplin. Pisahkan apa yang harus dibagi dari apa yang dibagikan karena kenyamanan. Kenyamanan sering kali adalah tempat eksekusi paralel mati.

Pola yang Menjaga Aplikasi Cepat

Pola yang menjaga aplikasi tetap cepat di Fogo tidak mencolok. Mereka ketat.

  • Pisahkan keadaan pengguna secara agresif

  • Isolasi keadaan pasar tertentu daripada mengalirkan semuanya melalui satu objek global tunggal

  • Hindari menulis ke akun bersama hanya untuk memperbarui metrik atau data visibilitas

Nilai-nilai yang diturunkan sering kali dapat dihitung dari peristiwa daripada dimutasi di dalam setiap transaksi.

Desain Paralel yang Sukses

Lihat desain yang menangani stres dengan baik.

  • Tindakan pengguna sebagian besar lokal

  • Seorang pengguna memperbarui keadaan mereka sendiri dan segmen kecil dari keadaan bersama yang benar-benar diperlukan

  • Komponen bersama disusun sehingga pengguna yang tidak terkait tidak bertabrakan

Pemisahan per pengguna bukan hanya organisasi yang rapi. Ini adalah strategi throughput. Pemisahan per pasar mencegah satu pasar yang panas mengganggu yang lainnya.
Perangkap Pelaporan Global

Perangkap halus adalah pelaporan global. Pengembang menyukai penghitung global instan.

  • Volume total

  • Biaya global

  • Pelacak aktivitas

  • Papan peringkat

Metrik itu sendiri baik-baik saja. Masalah muncul ketika setiap transaksi memperbarui akun global tersebut. Sekarang setiap jalur mencakup penulisan bersama. Konflik berlipat ganda. Anda telah membangun sistem berurutan di dalam runtime paralel. Tidak peduli seberapa cepat Fogo, desain Anda memaksanya untuk berperilaku secara berurutan.

Membedakan Kebenaran dan Pelaporan

Eksekusi paralel mendorong pembangun untuk memisahkan kebenaran dari pelaporan.

  • Perubahan keadaan yang kritis terjadi di satu tempat

  • Pelaporan dapat diperbarui dengan irama yang berbeda, dibagi, atau diturunkan dari log

Begitu Anda berhenti memaksa setiap transaksi untuk mengubah akun pelaporan yang sama, konsistensi sejati menjadi mungkin.

Sistem Perdagangan dan Interaktif

Sistem perdagangan menyoroti poin ini.

  • Perdagangan mengkonsentrasikan aktivitas

  • Konsentrasi menciptakan persaingan

  • Satu akun buku pesanan pusat menyerialisasi semua operasi

Lingkungan frekuensi tinggi membuat cacat tidak mungkin untuk disembunyikan. Setiap akun yang dapat ditulis bersama menjadi medan perang. Alih-alih aliran independen yang bergerak secara paralel, semua orang mengantri di belakang kunci yang sama. Kinerja menurun, dan perilaku pasar berubah karena persaingan mendominasi pemesanan.

Aplikasi Berbasis Data Berat

  • Pembacaan jarang menjadi masalah

  • Penulisan lah

  • Hindari memperbarui cache bersama atau mencetak nilai ke akun global untuk kenyamanan

  • Pertahankan penulisan bersama terkurung pada aliran yang didedikasikan

Biaya Arsitektur Paralel

Tidak ada dari ini yang gratis. Arsitektur yang ramah paralel memerlukan:

  • Lebih banyak komponen

  • Pengujian yang lebih hati-hati

  • Observabilitas yang lebih baik

Anda sedang membangun konkruensi nyata, bukan konkruensi teoretis. Tetapi hadiahnya adalah skala yang sesuai dengan apa yang dirancang untuk diberikan oleh runtime SVM.

Kesalahan yang Paling Mahal

Kesalahan yang paling merusak itu sederhana. Satu akun yang dapat ditulis bersama yang disentuh oleh setiap transaksi. Pada rantai seperti Fogo, kesalahan itu menjadi jelas dengan cepat. Semakin cepat rantainya, semakin jelas menjadi bahwa desain Anda adalah kendala.

Fogo Membuat Percakapan Menjadi Jujur

Apa yang dilakukan Fogo adalah membuat percakapan pengembang menjadi jujur.

  • Tidak cukup hanya mengatakan bahwa rantainya cepat

  • Model eksekusi mengharuskan pengembang merancang untuk independensi

  • Partisi keadaan dengan cerdas

  • Perlakukan keadaan sebagai permukaan konkruensi

Kesimpulan: Disiplin di Atas Pemasaran

Eksekusi paralel bukan fitur pemasaran. Ini adalah disiplin. Pada Layer 1 berbasis SVM seperti Fogo, disiplin itu ditegakkan oleh desain.

#fogo @Fogo Official $FOGO