apache ignite,使用Apache Ignite構建C++版本的分布式應用

 2023-10-30 阅读 18 评论 0

摘要:為什么80%的碼農都做不了架構師?>>> ?? 本文會介紹Apache Ignite的C++ API(稱為Ignite C++),主要面向C/C++開發者。 Ignite和Ignite C++ Ignite C++構建于Ignite之上;Ignite C+

為什么80%的碼農都做不了架構師?>>> ??hot3.png

本文會介紹Apache Ignite的C++ API(稱為Ignite C++),主要面向C/C++開發者。

Ignite和Ignite C++

  • Ignite C++構建于Ignite之上;
  • Ignite C++在同一個進程中啟動JVM,并且通過JNI與之通信;
  • .NET、C++和Java節點可以加入同一個集群,使用相同的緩存,并且使用通用的二進制協議進行互操作;
  • Java計算作業可以在任意節點上執行(Java、.NET和C++)。

入門

因為Ignite是一個分布式平臺,所以開始就要先啟動一個節點,這方面如果使用ignite::Ignition類是非常簡單的:

apache ignite、好了,在C++環境中已經使用默認的配置啟動了第一個Ignite節點!其中Ignite類是訪問集群的主要入口點。

數據操作

暴露數據操作API的主要Ignite C++組件是ignite::cache::Cache<K,V>。它包含了基本的數據操作方法集。由于緩存本質上是作為分布式哈希表的接口,因此基本上可以像處理簡單容器(map或者unordered_map)那樣與它進行交互。

Ignite主要是用Java開發的,Ignite組件的實現也使用了很多Java的特性,比如,對象的序列化/反序列化就用在了磁盤存儲和對象的網絡傳輸上。

在Ignite C++中,這個特性通過ignite::binary::BinaryType<T>模板限定來實現:,不管是普通的客戶端還是瘦客戶端,都是用的這個方式,對于上面提到的Person類,大致如下:

ios構建版本、

這里除了序列化/反序列化方法BinaryType<Person>::WriteBinaryType<Person>::Read外,還有其它的一些方法,它們用于向平臺說明,如何在其它語言中處理自定義C++類型,尤其是在Java中,下面會詳細探討這些方法:

  • GetTypeName():返回類型名。該類型名在所有使用這個類型的平臺中都應該是一致的,如果只在Ignite C++中使用這個類型,那么這個命名就沒有強制要求;
  • GetTypeId():返回跨平臺的唯一類型ID。要想在所有平臺上都有正確的行為,那么所有的實現都必須使用相同的計算方法。GetBinaryStringHashCode(TypeName)在任意平臺的默認實現,都會返回相同的類型ID,因此這種實現方式在任意平臺上都能保證該類型的正確使用;
  • GetFieldId():返回字段名的唯一ID。不過要保證跨平臺,要使用GetBinaryStringHashCode()方法;
  • IsNull():檢查類實例是否為空,該方法用于NULL值的正確序列化,對于類實例用處不大,不過如果用戶想處理智能指針以及定義比如BinaryType< std::unique_ptr<Person>>這樣的限定,則可能會比較方便;
  • GetNull():如果要反序列化NULL值,會調用它。關于IsNull()的說法,也適用于GetNull()

SQL

與傳統數據庫類似,可以將緩存視為數據庫模式,并且該模式只有一個表名為類型名的表。除了緩存模式之外,還有一個名為PUBLIC的公共模式,在該模式中,可以使用標準DDL指令(如CREATE TABLEDROP TABLE等)創建/刪除任意數量的表。通常,如果只想將Ignite用作分布式數據庫,則可以通過ODBC/JDBC連接到PUBLIC模式。

Ignite支持完整的SQL查詢,包括DML和DDL。通過MVCC,SQL事務也是支持的,不過還處于測試階段。

要通過SQL處理緩存數據,必須在緩存配置中顯式指定將在SQL查詢中使用哪些對象字段。配置在XML文件中進行了描述,之后將在節點啟動時指定配置文件的路徑:

版本工具,

該配置會由Java來解析,因此其中的基本類型在Java中也要指定,配置文件建好之后,就可以啟動一個節點,獲取一個緩存實例,進而處理SQL:

這時候就可以執行INSERT、UPDATE、CREATE TABLE以及其它查詢了,當然,跨緩存查詢也是支持的。不過這種情況下要注意,需要給查詢中的緩存名上加上引號,作為模式名,比如這樣不行:

要這樣寫:

分布式程序、

好了,暫時就寫這么多,Apache Ignite功能強大,C++ API目前也仍在全力開發中,所以請繼續關注未來的更新。

轉載于:https://my.oschina.net/liyuj/blog/3006502

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/165010.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息