Odyssey dapat meningkatkan kinerja pemrosesan secara signifikan dengan menentukan sejumlah thread pekerja tambahan. Setiap thread pekerja bertanggung jawab untuk otentikasi dan proksi permintaan klien-ke-server dan server-ke-klien. Semua thread pekerja berbagi kumpulan koneksi server global. Desain multi-thread memainkan peran penting dalam kinerja SSL/TLS
.
Odyssey melacak status transaksi saat ini dan jika terjadi pemutusan klien yang tidak terduga dapat mengeluarkan koneksi Cancel
otomatis dan melakukan Rollback
transaksi yang ditinggalkan, sebelum mengembalikan koneksi server ke kumpulan server untuk digunakan kembali. Selain itu, klien pemilik koneksi server terakhir diingat untuk mengurangi kebutuhan untuk menyiapkan opsi klien pada setiap penugasan klien-ke-server.
Odyssey memungkinkan untuk mendefinisikan kumpulan koneksi sebagai pasangan Database
dan User
. Setiap kumpulan yang ditentukan dapat memiliki autentikasi terpisah, mode pengumpulan, dan pengaturan batas.
Odyssey memiliki dukungan SSL/TLS
berfitur lengkap dan metode otentikasi umum seperti: md5
dan clear text
untuk otentikasi klien dan server. Odyssey mendukung otentikasi PAM & LDAP, metode ini beroperasi serupa dengan autentikasi clear text
kecuali bahwa ia menggunakan PAM/LDAP untuk memvalidasi pasangan nama pengguna/kata sandi. PAM secara opsional memeriksa nama host jarak jauh atau alamat IP yang terhubung. Selain itu memungkinkan untuk memblokir setiap pengguna kumpulan secara terpisah.
Odyssey menghasilkan pengidentifikasi unik universal uuid
untuk koneksi klien dan server. Setiap peristiwa log dan respons kesalahan klien menyertakan id, yang kemudian dapat digunakan untuk mengidentifikasi klien secara unik dan melacak tindakan. Odyssey dapat menyimpan peristiwa log ke dalam file log dan menggunakan logger sistem.
Odyssey mendukung beberapa opsi baris perintah. Gunakan /path/to/odyssey
--help untuk melihat lebih lanjut
Odyssey memiliki arsitektur multi-utas asinkron canggih yang digerakkan oleh mesin coroutine yang dibuat khusus: machinarium. Ide utama di balik desain coroutine adalah membuat aplikasi asinkron berbasis peristiwa agar terlihat dan terasa seperti ditulis dengan cara prosedural sinkron alih-alih menggunakan pendekatan panggilan balik tradisional.
Salah satu tujuan utamanya adalah membuat basis kode dapat dimengerti oleh pengembang baru dan membuat arsitektur mudah diperluas untuk pengembangan di masa depan.
Informasi lebih lanjut: Arsitektur dan internal.
Saat ini Odyssey hanya berjalan di Linux. Platform yang didukung adalah x86/x86_64.
Untuk membangun Anda membutuhkan:
git clone git://github.com/yandex/odyssey.git
cd odyssey
make local_build
Sesuaikan odyssey-dev.conf lalu:
make local_run
Alternatifnya:
make console_run
make start-dev-env
Siapkan CLion Anda untuk membangun proyek dalam wadah, secara manual.