Rilis Apache Ignite 2.5 - Database Terdistribusi-Memori dan Platform Caching

Pada bulan Mei, versi baru Apache Ignite dirilis - 2.5. Banyak perubahan telah dilakukan untuk itu, daftar lengkapnya dapat ditemukan di Catatan Rilis. Dan dalam artikel ini kita akan mempertimbangkan inovasi kunci yang patut diperhatikan.

Apache Ignite adalah platform yang dapat diskalakan secara horizontal untuk penyimpanan data transaksional, serta komputasi terdistribusi di atas data ini dalam mode waktu nyata dekat.

Ignite digunakan ketika skalabilitas horizontal dan kecepatan pemrosesan data sangat tinggi diperlukan. Yang terakhir ini juga dicapai dengan mengoptimalkan platform untuk menyimpan data secara langsung dalam RAM sebagai penyimpanan utama, daripada cache (In-Memory Computing). Fitur khas dari produk ini adalah mesin kueri penuh ANSI SQL 1999, penyimpanan disk, perluasan RAM, sejumlah besar alat integrasi bawaan dan pembelajaran mesin Zero-ETL.

Di antara perusahaan yang menggunakan perusahaan Apache Ignite seperti Veon / dari Beeline , Sberbank, Huawei, Barclays, Citi, Microsoft, dan banyak lainnya .

Opsi Topologi Baru: Bintang Sekitar ZooKeeper


Salah satu perubahan besar dalam versi 2.5 adalah versi baru dari topologi. Sebelumnya, Ignite hanya memiliki topologi "cincin", yang digunakan untuk bertukar peristiwa dalam sebuah cluster dan memberikan skalabilitas yang efisien dan cepat, pada skala hingga 300 node.

Topologi baru ini dirancang untuk instalasi ratusan dan ribuan node.

Sekarang Anda dapat memilih: gunakan topologi lama, di mana Ignite cukup untuk Anda, atau - untuk kelompok besar - melengkapi Ignite besar dengan ZooKeeper kecil di mana pertukaran acara akan berlangsung.

Mengapa ini dan bagaimana itu membantu?

"Dering" besar memiliki kelemahan: dengan mempertimbangkan pertukaran dan pemrosesan jaringan akun, pemberitahuan semua node tentang acara baru dapat mencapai detik. Ini buruk dalam dirinya sendiri, dan jika Anda mempertimbangkan bahwa kemungkinan kegagalan simpul karena kegagalan jaringan sementara, peralatan atau masalah lainnya meningkat dengan ukuran cluster, maka rekonstruksi topologi menjadi tugas yang cukup biasa, terutama pada cluster yang dibangun pada perangkat keras (komoditas) yang murah. Dalam "cincin" besar ini memperkenalkan kekacauan tambahan, mengganggu pemrosesan aliran peristiwa dan memaksanya untuk memulai lagi, secara bersamaan mengirimkan informasi tentang topologi baru.

"Bintang" baru, di mana cluster ZooKeeper terletak di tengah, memungkinkan tidak hanya untuk mempertahankan skalabilitas (ZooKeeper juga dapat tumbuh secara horizontal), tetapi bahkan secara signifikan meningkatkan skalabilitasnya - efisiensi pada volume besar. Lagi pula, dengan berbagi tanggung jawab untuk memproses acara dan bekerja dengan data, kami dapat mengalokasikan cluster ZooKeeper yang jauh lebih ringkas untuk pemrosesan acara, sehingga mengurangi ketergantungan acara pada ukuran cluster.

Ini tidak mempengaruhi pertukaran data antara simpul Ignite, misalnya, selama penyeimbangan kembali, serta penyimpanan atau pengambilan data, karena semua operasi ini berjalan dan memotong topologi peristiwa melalui koneksi langsung antara node cluster.

Juga, menambahkan topologi baru tidak mempengaruhi yang lama dengan cara apa pun - itu tetap direkomendasikan, karena lebih mudah untuk mempertahankan dan lebih ringan, tidak memerlukan elemen tambahan.

Tetapi jika Anda telah mencapai batas penskalaan "cincin" Ignite, Anda tidak dapat melakukan optimasi mikro dan peretasan, jangan menerapkan pengetahuan khusus dan "kruk". Dalam hal ini, Anda memiliki solusi yang tersedia dan didukung secara resmi yang akan secara signifikan memfasilitasi implementasi dan dukungan dari sekelompok besar.

Informasi terperinci tentang topologi baru dapat ditemukan dalam dokumentasi .

Klien Tipis: Klien Java Tipis, Otentikasi Klien Tipis


Dalam versi 2.4, dukungan diberikan untuk klien tipis di luar JDBC / ODBC, yang bukan peserta penuh dalam topologi, jauh lebih sedikit menuntut sumber daya, tetapi pada saat yang sama menawarkan fungsionalitas yang berkurang. Klien tipis pertama adalah klien untuk .NET.

Dimulai dengan versi 2.5, klien tipis untuk Java juga tersedia.

Ini memungkinkan Ignite untuk tertanam dalam aplikasi yang peka terhadap sumber daya, misalnya, dalam aplikasi pada perangkat terminal, tanpa lapisan tambahan. Sebelumnya, tugas ini membutuhkan lapisan perantara, yang, misalnya, melalui REST, menerima permintaan dan kemudian menggunakan klien "tebal" internal untuk bertukar data dengan cluster Ignite.

Thin client dapat digunakan dengan menghubungkan file JAR core ignite-core "zero-dependency", misalnya, dari repositori maven.

Contoh menggunakan thin client:

ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800"); try (IgniteClient igniteClient = Ignition.startClient(cfg)) { System.out.println(">>>    ."); final String CACHE_NAME = "put-get-example"; ClientCache<Integer, Address> cache = igniteClient.getOrCreateCache(CACHE_NAME); System.out.format(">>>   [%s].\n", CACHE_NAME); Integer key = 1; Address val = new Address(", 20", 101000); cache.put(key, val); System.out.format(">>>  [%s]   .\n", val); Address cachedVal = cache.get(key); System.out.format(">>>  [%s]   .\n", cachedVal); } catch (...) { ... } 

Juga di versi 2.4 tidak ada otentikasi untuk klien tipis. Dimulai dengan versi 2.5, itu, bersama dengan dukungan untuk enkripsi ketika mengakses klien tipis, akan debut di Ignite.

 ClientConfiguration clientCfg = new ClientConfiguration() .setAddresses("127.0.0.1:10800"); //   clientCfg .setSslMode(SslMode.REQUIRED) .setSslClientCertificateKeyStorePath("client.jks") .setSslClientCertificateKeyStoreType("JKS") .setSslClientCertificateKeyStorePassword("123456") .setSslTrustCertificateKeyStorePath("trust.jks") .setSslTrustCertificateKeyStoreType("JKS") .setSslTrustCertificateKeyStorePassword("123456") .setSslKeyAlgorithm("SunX509") .setSslTrustAll(false) .setSslProtocol(SslProtocol.TLS); //   clientCfg .setUserName("joe") .setUserPassword("passw0rd!"); try (IgniteClient client = Ignition.startClient(clientCfg)) { ... } catch (ClientAuthenticationException e) { // Handle authentication failure } 

Informasi terperinci dapat ditemukan dalam dokumentasi .

SQL: otentikasi dan manajemen pengguna, pemuatan massal cepat


Mesin SQL ANSI99 yang didistribusikan secara historis menjadi salah satu kekuatan dan fitur pembeda penting dari Apache Ignite. Ini memungkinkan "jendela tunggal", melalui klien Java / .NET / C ++ atau melalui driver JDBC / ODBC, untuk mengeksekusi query SQL di atas seluruh cluster, baik dalam RAM dan dalam Ignite Native Persistence.

Dalam versi 2.0–2.4, pengembang fokus selain meningkatkan produktivitas (yang tidak pernah cukup), juga pada percepatan pemuatan data primer dan curah dan dukungan yang lebih lengkap untuk DDL, operasi seperti CREATE TABLE, ALTER TABLE, CREATE INDEX, dll., yang juga melalui "jendela tunggal" dapat secara konsisten dieksekusi di cluster.

Dalam versi 2.5, langkah diambil menuju pengembangan lebih lanjut dari DDL: otentikasi untuk SQL dan perintah yang sesuai CREATE USER , ALTER USER , DROP USER ditambahkan.

Jika sebelumnya Anda berencana untuk meng-host Ignite SQL dalam DMZ steril dengan kontrol akses di tingkat layanan yang ada, sekarang Anda dapat meningkatkan keamanan dengan otentikasi yang dikelola SQL.

Dalam hal kecepatan pengunduhan volume data yang besar, 2,5 inovasi muncul dalam 2.

Yang pertama adalah perintah SQL COPY baru di JDBC, yang memungkinkan Anda untuk dengan cepat, dalam mode massal, mentransfer konten file CSV ke sebuah tabel.

 COPY FROM "/path/to/local/file.csv" INTO city ( ID, Name, CountryCode, District, Population) FORMAT CSV 

Yang kedua adalah mode streaming untuk JDBC, diaktifkan melalui perintah SET baru . Ini memungkinkan pemuatan data melalui operasi INSERT standar untuk secara transparan mengelompokkan dan memuat catatan baru ke dalam cluster Ignite. Transfer operasi yang terakumulasi ke cluster terjadi ketika mengisi batch atau ketika menutup koneksi JDBC.

 SET STREAMING ON 


Pembelajaran Mesin: Algoritma Genetika, Partisi


Pembelajaran mesin adalah salah satu bidang pengembangan strategis Ignite. ML mengimplementasikan paradigma Zero-ETL, yang memungkinkan pelatihan langsung pada data yang ada di penyimpanan transite Ignite. Dengan demikian, penghematan waktu dan sumber daya yang signifikan dicapai pada konversi data dan transfer jaringan ke sistem pelatihan.

Dalam versi 2.5, algoritma genetika ditambahkan ke set alat yang dapat diakses.

Juga, untuk mengoptimalkan proses pembelajaran dan meminimalkan pertukaran jaringan, dukungan telah muncul untuk perhitungan-ML, yang memiliki informasi tentang partisi di mana mereka dieksekusi dan dapat mengikat informasi tambahan ke partisi ini. Mempertimbangkan bahwa partisi adalah atom dalam hal distribusi, dan satu partisi tidak dapat dipotong antara beberapa node, ini memungkinkan Anda untuk mengoptimalkan proses pembelajaran, memberikan lebih banyak jaminan untuk algoritma.

Informasi terperinci dapat ditemukan dalam dokumentasi .

Dan masih banyak lagi


Juga dalam versi 2.5 ini diterapkan:

Source: https://habr.com/ru/post/id416281/


All Articles