Apa itu JuiceFS?

  • Engineering
June 15, 2021
Changjian Gao and Jingjing Jia

Kolaborasi antara komunitas sumber terbuka adalah hal yang ajaib. Para sukarelawan yang bersemangat, cerdas, dan kreatif tidak hanya membuat solusi sumber terbuka tetap inovatif, mereka juga bekerja untuk menyatukan berbagai alat yang berbeda dengan cara yang menarik dan bermanfaat. Milvus, basis data vektor paling populer di dunia, dan JuiceFS, sistem berkas bersama yang dirancang untuk lingkungan cloud-native, disatukan dalam semangat ini oleh komunitas sumber terbuka masing-masing. Artikel ini menjelaskan apa itu JuiceFS, cara membangun cluster Milvus berdasarkan penyimpanan file bersama JuiceFS, dan kinerja yang dapat diharapkan pengguna dengan menggunakan solusi ini.

Apa itu JuiceFS?

JuiceFS adalah sistem berkas POSIX terdistribusi sumber terbuka berkinerja tinggi, yang dapat dibangun di atas Redis dan S3. Sistem ini dirancang untuk lingkungan cloud-native dan mendukung pengelolaan, analisis, pengarsipan, dan pencadangan data jenis apa pun. JuiceFS biasanya digunakan untuk memecahkan tantangan data besar, membangun aplikasi kecerdasan buatan (AI), dan pengumpulan log. Sistem ini juga mendukung berbagi data di beberapa klien dan dapat digunakan secara langsung sebagai penyimpanan bersama di Milvus.

Setelah data, dan metadata yang sesuai, disimpan ke penyimpanan objek dan Redis, JuiceFS berfungsi sebagai middleware tanpa kewarganegaraan. Berbagi data direalisasikan dengan memungkinkan berbagai aplikasi yang berbeda untuk saling terhubung satu sama lain secara mulus melalui antarmuka sistem berkas standar. JuiceFS mengandalkan Redis, sebuah penyimpanan data dalam memori sumber terbuka, untuk penyimpanan metadata. Redis digunakan karena menjamin atomisitas dan menyediakan operasi metadata berkinerja tinggi. Semua data disimpan dalam penyimpanan objek melalui klien JuiceFS. Diagram arsitekturnya adalah sebagai berikut:

juicefs-architecture.png juicefs-architecture.png

Membangun kluster Milvus berdasarkan JuiceFS

Milvus cluster yang dibangun dengan JuiceFS (lihat diagram arsitektur di bawah ini) bekerja dengan memecah permintaan hulu menggunakan Mishards, sebuah middleware cluster sharding, untuk mengalirkan permintaan ke sub-modul. Ketika memasukkan data, Mishards mengalokasikan permintaan hulu ke simpul tulis Milvus, yang menyimpan data yang baru dimasukkan dalam JuiceFS. Saat membaca data, Mishards memuat data dari JuiceFS melalui simpul baca Milvus ke memori untuk diproses, kemudian mengumpulkan dan mengembalikan hasil dari sub-layanan di hulu.

milvus-cluster-built-with-juicefs.png milvus-cluster-dibangun-dengan-juicefs.png

Langkah 1: Meluncurkan layanan MySQL

Luncurkan layanan MySQL pada setiap node di dalam cluster. Untuk detailnya, lihat Mengelola Metadata dengan MySQL.

Langkah 2: Membuat sistem berkas JuiceFS

Untuk tujuan demonstrasi, digunakan program JuiceFS biner yang sudah dikompilasi. Unduh paket instalasi yang tepat untuk sistem Anda dan ikuti Panduan Memulai Cepat JuiceFS untuk petunjuk instalasi yang mendetail. Untuk membuat sistem berkas JuiceFS, pertama-tama siapkan basis data Redis untuk penyimpanan metadata. Direkomendasikan untuk penerapan awan publik, Anda meng-host layanan Redis pada awan yang sama dengan aplikasi. Selain itu, siapkan penyimpanan objek untuk JuiceFS. Dalam contoh ini, Azure Blob Storage digunakan; namun, JuiceFS mendukung hampir semua layanan objek. Pilih layanan penyimpanan objek yang paling sesuai dengan kebutuhan skenario Anda.

Setelah mengonfigurasi layanan Redis dan penyimpanan objek, format sistem berkas baru dan pasang JuiceFS ke direktori lokal:

1 $  export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net"
2 $ ./juicefs format \
3     --storage wasb \
4     --bucket https://<container> \
5     ... \
6     localhost test #format
7 $ ./juicefs mount -d localhost ~/jfs  #mount
8

Jika server Redis tidak berjalan secara lokal, ganti hos lokal dengan alamat berikut ini: redis://<user:password>@host:6379/1.

Ketika instalasi berhasil, JuiceFS mengembalikan halaman penyimpanan bersama /root/jfs.

installation-success.png instalasi-sukses.png

Langkah 3: Mulai Milvus

Semua node dalam klaster harus sudah terinstal Milvus, dan setiap node Milvus harus dikonfigurasi dengan izin baca atau tulis. Hanya satu node Milvus yang dapat dikonfigurasi sebagai node tulis, dan sisanya harus menjadi node baca. Pertama, atur parameter bagian cluster dan general dalam berkas konfigurasi sistem Milvus server_config.yaml:

Bagian cluster

ParameterDeskripsiKonfigurasi
enableApakah akan mengaktifkan mode clustertrue
rolePeran penyebaran Milvusrw/ro

Bagian general

# meta_uri is the URI for metadata storage, using MySQL (for Milvus Cluster). Format: mysql://<username:password>@host:port/database
general:
  timezone: UTC+8
  meta_uri: mysql://root:milvusroot@host:3306/milvus

Selama instalasi, jalur penyimpanan bersama JuiceFS yang dikonfigurasi ditetapkan sebagai /root/jfs/milvus/db.

1 sudo docker run -d --name milvus_gpu_1.0.0 --gpus all \
2 -p 19530:19530 \
3 -p 19121:19121 \
4 -v /root/jfs/milvus/db:/var/lib/milvus/db \  #/root/jfs/milvus/db is the shared storage path
5 -v /home/$USER/milvus/conf:/var/lib/milvus/conf \
6 -v /home/$USER/milvus/logs:/var/lib/milvus/logs \
7 -v /home/$USER/milvus/wal:/var/lib/milvus/wal \
8 milvusdb/milvus:1.0.0-gpu-d030521-1ea92e
9

Setelah instalasi selesai, mulai Milvus dan konfirmasikan bahwa Milvus telah diluncurkan dengan benar. Terakhir, mulai layanan Mishards pada salah satu node dalam kluster. Gambar di bawah ini menunjukkan peluncuran Mishards yang berhasil. Untuk informasi lebih lanjut, lihat tutorial GitHub.

mishards-launch-success.png mishards-launch-success.png

Tolok ukur kinerja

Solusi penyimpanan bersama biasanya diimplementasikan oleh sistem penyimpanan yang terhubung ke jaringan (NAS). Jenis sistem NAS yang umum digunakan termasuk Network File System (NFS) dan Server Message Block (SMB). Platform cloud publik umumnya menyediakan layanan penyimpanan terkelola yang kompatibel dengan protokol-protokol ini, seperti Amazon Elastic File System (EFS).

Tidak seperti sistem NAS tradisional, JuiceFS diimplementasikan berdasarkan Filesystem in Userspace (FUSE), di mana semua pembacaan dan penulisan data dilakukan secara langsung di sisi aplikasi, sehingga mengurangi latensi akses. Terdapat juga fitur unik pada JuiceFS yang tidak dapat ditemukan pada sistem NAS lainnya, seperti kompresi data dan caching.

Pengujian benchmark menunjukkan bahwa JuiceFS menawarkan keunggulan utama dibandingkan EFS. Pada benchmark metadata (Gambar 1), JuiceFS menunjukkan operasi I/O per detik (IOPS) hingga sepuluh kali lebih tinggi daripada EFS. Selain itu, tolok ukur throughput I/O (Gambar 2) menunjukkan JuiceFS mengungguli EFS baik dalam skenario pekerjaan tunggal maupun banyak pekerjaan.

performance-benchmark-1.png performance-benchmark-1.png

performance-benchmark-2.png performance-benchmark-2.png

Selain itu, pengujian benchmark menunjukkan waktu pengambilan kueri pertama, atau waktu untuk memuat data yang baru dimasukkan dari disk ke memori, untuk cluster Milvus berbasis JuiceFS rata-rata hanya 0,032 detik, yang mengindikasikan bahwa data dimuat dari disk ke memori hampir seketika. Untuk pengujian ini, waktu pengambilan kueri pertama diukur dengan menggunakan satu juta baris data vektor 128 dimensi yang disisipkan dalam kelompok 100 ribu dengan interval 1 hingga 8 detik.

JuiceFS adalah sistem penyimpanan file bersama yang stabil dan dapat diandalkan, dan cluster Milvus yang dibangun di atas JuiceFS menawarkan kinerja tinggi dan kapasitas penyimpanan yang fleksibel.

Pelajari lebih lanjut tentang Milvus

Milvus adalah alat canggih yang mampu mendukung beragam kecerdasan buatan dan aplikasi pencarian kemiripan vektor. Untuk mempelajari lebih lanjut tentang proyek ini, lihat sumber daya berikut:

  • Baca blog kami.
  • Berinteraksi dengan komunitas sumber terbuka kami di Slack.
  • Gunakan atau kontribusikan database vektor paling populer di dunia di GitHub.
  • Menguji dan menerapkan aplikasi AI dengan cepat dengan bootcamp baru kami.

writer bio-changjian gao.png penulis bio-changjian gao.png writer bio-jingjing jia.pngpenulis bio-jingjing jia.png

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Terus Baca