Rilis kerangka untuk membuat aplikasi jaringan ErgoFramework 2.2

Rilis ErgoFramework 2.2 berikutnya berlangsung, mengimplementasikan tumpukan jaringan Erlang lengkap dan perpustakaan OTP-nya dalam bahasa Go. Kerangka kerja ini memberi pengembang alat fleksibel dari dunia Erlang untuk membuat solusi terdistribusi dalam bahasa Go menggunakan pola desain tujuan umum yang sudah jadi gen.Application, gen.Supervisor dan gen.Server, serta yang khusus - gen. Stage (pub/sub terdistribusi), gen.Saga (transaksi terdistribusi, implementasi pola desain SAGA) dan gen.Raft (implementasi protokol Raft).

Selain itu, kerangka kerja ini menyediakan fungsionalitas proxy dengan enkripsi ujung ke ujung, yang tidak tersedia di Erlang/OTP dan Elixir. Karena bahasa Go tidak memiliki analogi langsung dari proses Erlang, framework ini menggunakan goroutine sebagai dasar untuk gen.Server dengan wrapper β€œrecover” untuk menangani situasi pengecualian. Kode proyek didistribusikan di bawah lisensi MIT.

Tumpukan jaringan di ErgoFramework sepenuhnya mengimplementasikan spesifikasi DIST dari protokol Erlang. Artinya, aplikasi yang ditulis berdasarkan ErgoFramework bekerja secara asli dengan aplikasi apa pun yang ditulis dalam bahasa pemrograman Erlang atau Elixir (contoh interaksi dengan node Erlang). Perlu juga dicatat bahwa pola desain gen.Stage diimplementasikan sesuai dengan spesifikasi Elixir GenStage dan sepenuhnya kompatibel dengannya (contoh implementasi).

Dalam rilis baru:

  • Templat baru ditambahkan
    • gen.Web adalah pola desain Web API Gateway (juga dikenal sebagai Backend For Frontend). Contoh.
    • gen.TCP adalah templat yang memungkinkan Anda mengimplementasikan kumpulan akseptor koneksi TCP dengan sedikit usaha dalam menulis kode. Contoh.
    • gen.UDP - mirip dengan template gen.TCP, hanya untuk protokol UDP. Contoh.
  • Fungsionalitas Peristiwa baru telah diusulkan dengan penerapan bus peristiwa sederhana di dalam sebuah node, yang memungkinkan Anda membuat mekanisme untuk pertukaran peristiwa (pub/sub) di antara proses lokal. Contoh.
  • Menambahkan dukungan untuk registrasi tipe, yang memungkinkan serialisasi/deserialisasi pesan secara otomatis ke tipe data asli Golang. Artinya Anda tidak perlu lagi menggunakan etf.TermIntoStruct untuk setiap pesan yang diterima. Tipe yang terdaftar akan diubah ke tipe yang ditentukan secara otomatis, yang secara signifikan mempercepat kinerja pertukaran pesan antar node yang didistribusikan.

Sumber: opennet.ru

Tambah komentar