- Hazelcast 教程
- Hazelcast - 首頁
- Hazelcast - 簡介
- Hazelcast - 設定
- Hazelcast - 第一個應用程式
- Hazelcast - 配置
- 設定多節點例項
- Hazelcast - 資料結構
- Hazelcast - 客戶端
- Hazelcast - 序列化
- Hazelcast 高階
- Hazelcast - Spring 整合
- Hazelcast - 監控
- Map Reduce & 聚合
- Hazelcast - 集合監聽器
- 常見陷阱 & 效能提示
- Hazelcast 有用資源
- Hazelcast - 快速指南
- Hazelcast - 有用資源
- Hazelcast - 討論
Hazelcast - 客戶端
Hazelcast 客戶端是 Hazelcast 成員的輕量級客戶端。Hazelcast 成員負責儲存資料和分割槽。它們在傳統的客戶端-伺服器模型中充當伺服器。
Hazelcast 客戶端僅用於訪問儲存在叢集的 Hazelcast 成員中的資料。它們不負責儲存資料,也不承擔任何儲存資料的責任。
客戶端有自己的生命週期,不會影響 Hazelcast 成員例項。
讓我們首先建立 Server.java 並執行它。
import java.util.Map;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
public class Server {
public static void main(String... args){
//initialize hazelcast server/instance
HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance();
//create a simple map
Map<String, String> vehicleOwners = hazelcast.getMap("vehicleOwnerMap");
// add key-value to map
vehicleOwners.put("John", "Honda-9235");
// do not shutdown, let the server run
//hazelcast.shutdown();
}
}
現在,執行上面的類。
java -cp .\target\demo-0.0.1-SNAPSHOT.jar com.example.demo.Server
要設定客戶端,我們還需要新增客戶端 jar。
<dependency> <groupId>com.hazelcast</groupId> <artifactId>hazelcast-client</artifactId> <version>3.12.12</version> </dependency>
現在讓我們建立 Client.java。請注意,與 Hazelcast 成員類似,客戶端也可以透過程式設計方式或透過 XML 配置進行配置(即,透過 -Dhazelcast.client.config 或 hazelcast-client.xml)。
示例
讓我們使用預設配置,這意味著我們的客戶端能夠連線到本地例項。
import java.util.Map;
import com.hazelcast.client.HazelcastClient;
import com.hazelcast.core.HazelcastInstance;
public class Client {
public static void main(String... args){
//initialize hazelcast client
HazelcastInstance hzClient = HazelcastClient.newHazelcastClient();
//read from map
Map<String, String> vehicleOwners = hzClient.getMap("vehicleOwnerMap");
System.out.println(vehicleOwners.get("John"));
System.out.println("Member of cluster: " +
hzClient.getCluster().getMembers());
// perform shutdown
hzClient.getLifecycleService().shutdown();
}
}
現在,執行上面的類。
java -cp .\target\demo-0.0.1-SNAPSHOT.jar com.example.demo.Client
輸出
它將產生以下輸出:
Honda-9235 Member of cluster: [Member [localhost]:5701 - a47ec375-3105-42cd-96c7-fc5eb382e1b0]
從輸出中可以看到:
叢集僅包含 1 個成員,來自 Server.java。
客戶端能夠訪問儲存在伺服器內的對映。
負載均衡
Hazelcast 客戶端支援使用各種演算法進行負載均衡。負載均衡確保負載在成員之間共享,並且叢集中沒有單個成員過載。預設的負載均衡機制設定為輪詢。可以透過在配置中使用 loadBalancer 標籤來更改它。
我們可以在配置中使用 load-balancer 標籤指定負載均衡器的型別。以下是一個選擇隨機選擇節點的策略的示例。
<hazelcast-client xmlns="http://www.hazelcast.com/schema/client-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.hazelcast.com/schema/client-config
http://www.hazelcast.com/schema/client-config/hazelcastclient-config-4.2.xsd">
<load-balancer type="random"/>
</hazelcast-client>
故障轉移
在分散式環境中,成員可能會任意失敗。為了支援故障轉移,建議提供多個成員的地址。如果客戶端可以訪問任何一個成員,那麼它就足以將其定址到其他成員。引數 addressList 可以在客戶端配置中指定。
例如,如果我們使用以下配置:
<hazelcast-client xmlns="http://www.hazelcast.com/schema/client-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hazelcast.com/schema/client-config http://www.hazelcast.com/schema/client-config/hazelcastclient-config-4.2.xsd"> <address-list>machine1, machine2</address-list> </hazelcast-client>
即使,比如說,machine1 宕機,客戶端也可以使用 machine2 訪問叢集的其他成員。