1. 程式人生 > >通過Java程式碼獲取Zookeeper伺服器狀態

通過Java程式碼獲取Zookeeper伺服器狀態

有的時候,我們想知道Zookeeper叢集中哪些伺服器屬於Leader,哪些屬於Follower,哪些屬於Observer。

通過命令,可以很容易的獲取到Zookeeper伺服器的狀態:

[[email protected] bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/apache/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower

下面我們用Java程式碼來獲取Zookeeper伺服器的狀態:
public class ServerStatus {
	@Test
	public void serverStatus() throws IOException {
		String host = "10.0.1.84";
		int port = 2181;
		String cmd = "stat";

		Socket sock = new Socket(host, port);
		BufferedReader reader = null;
		try {
			OutputStream outstream = sock.getOutputStream();
			// 通過Zookeeper的四字命令獲取伺服器的狀態
			outstream.write(cmd.getBytes());
			outstream.flush();
			sock.shutdownOutput();

			reader = new BufferedReader(new InputStreamReader(sock.getInputStream()));
			String line;
			while ((line = reader.readLine()) != null) {
				if (line.indexOf("Mode: ") != -1) {
					System.out.println(line.replaceAll("Mode: ", "").trim());
				}
			}
		} finally {
			sock.close();
			if (reader != null) {
				reader.close();
			}
		}
	}
}

輸出結果:
follower

上面的程式碼可以改改,通過其他四字命令獲取zookeeper叢集的狀態。

相關推薦

通過Java程式碼獲取Zookeeper伺服器狀態

有的時候,我們想知道Zookeeper叢集中哪些伺服器屬於Leader,哪些屬於Follower,哪些屬於Observer。 通過命令,可以很容易的獲取到Zookeeper伺服器的狀態: [[emai

如何通過Java程式碼獲取tomcat伺服器的絕對路徑

有時候我們可能會有這樣的需求:獲取tomcat的絕對路徑,以便於進行一些其他的操作,看過很多老哥的方式大多都類似於這種: ①: Test.class.getResource("/") ②: Sy

zookeeper - 通過java程式碼連線zookeeper(2)

首先建立一個Maven專案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www

通過java程式碼獲取jvm資訊和系統資訊

轉載自LOC_Thomas的部落格 前言 隨著微服務的概念逐漸流行,監控成了必不可少的模組,本篇文章主要介紹一下如何通過java程式碼獲得一些核心的資料,方便從各個方面對應用進行監控 獲取jvm資料 jvm資料是監控應用很重要的一系列引數,一般本地開發的時候可以通過jcons

微信公眾號開發-開發環境搭建並通過java程式碼獲取微信access_token

進入開發文件: 獲取access token access_token是公眾號的全域性唯一票據,公眾號呼叫各介面時都需使用access_token。開發者需要進行妥善儲存。access_token的儲存至少要保留512個字元空間。access_token的有效期目前為2

通過java程式碼使用zookeeper

Zookeeper的使用主要是通過建立其jar包下的Zookeeper例項,並且呼叫其介面方法進行的,主要的操作就是對znode的增刪改操作,監聽znode的變化以及處理。 以下為主要的API使用和解釋 /建立一個Zookeeper例項,第一個引數為目標伺服器地址和埠,第

通過java程式碼 測試高併發、伺服器

話不多少 上程式碼Maven 座標 <!-- http球球 -->  <dependency>        <groupId>org.apache.httpcomponents</groupId>        <art

java 程式碼獲取真實IP

在開發工作中,我們常常需要獲取客戶端的IP。一般獲取客戶端的IP地址的方法是:request.getRemoteAddr();但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。 原因:由於在客戶端和服務之間增加了中間代理,因此伺服器無法直接拿到客戶端的IP,伺

ETL-kettle通過java程式碼傳遞引數,呼叫job呼叫轉換

定義變數,以表輸入為例,定義變數名稱為${變數名},這裡用test為變數名。並且勾選sql語句變數 package demo; import org.pentaho.di.core.KettleEnvironment; import org.pentaho.di.core.datab

Spring. 通過Java程式碼裝配bean

儘管在很多情況下通過元件掃描和自動裝配來實現 Spring 的自動化配置是更為推薦的方式,但有時候自動化配置的方案行不通,因此需要明確配置 Spring。比如說你想要將第三方庫中的元件裝配到你的應用中,在這種情況下,是沒辦法在它的類上新增 @Component 和 @Autowired 註解的,

解決linux下java程式碼獲取不到本機ip地址

        今天在部署完預生產環境的時候發現一個問題,在linux下面java程式碼獲取本機ip地址獲取不到。但是我在測試環境上面是能夠獲取到的。先粘下獲取本機ip的程式碼: try{ Enumeration<NetworkInter

SprinvAction學習一、裝配bean:通過Java程式碼裝配bean

具體步驟 (1)普通的介面 (2)實現介面的類,該類為需要裝配到spring bean中 (3)配置類,由該類定義bean 示例程式碼: 介面1:(普通的介面) package com.sp

通過java程式碼執行shell命令的小案列

一 需求描述: 通常我們操作linux伺服器都是通過遠端連線工具,比如:SecureCRT,Xmanager等工具,在其上輸入命令來完成一些工作,但是在實際工作中,有些時候需要我們通過java程式碼遠端連線到linux伺服器執行一些shell命令,包括叢集的狀

java程式碼獲取jenkins資料,構建歷史等資訊

本篇文章主要介紹如何獲取jenkins構建歷史資料等資訊,不包含java構建等操作。 1.jenkins所需jar,後續如有缺少可百度自行補齊。 <!--jenkins所需jar包開始--> <!-- https://mvnreposit

jdbc 中通過Java程式碼連線資料庫

示例程式碼 1.通過建立一個類  寫出連線資料庫的相關屬性 username,password,URL,Connection Statement . Resultset 物件 2.載入並註冊MySQL的驅動——在Java程式中,可以通過 “Class.forName(“

通過Java程式碼自動釋出Geoserver的地圖服務WMS

import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; import java.io.*; import java.n

linux上面java程式碼獲取不到本機ip地址

        今天在部署完預生產環境的時候發現一個問題,在linux下面java程式碼獲取本機地址獲取不到。但是我在測試環境上面是能夠獲取到的。先粘下獲取獲取本機ip的程式碼: try{ Enumeration<NetworkInterface>

Java程式碼獲取當前類名和方法名

1、獲取類名 非靜態方法:this.getClass().getName(); 靜態方法:Thread.currentThread().getStackTrace()[1].getClassName(); private static void getString() {

MongoDB 通過 Java 程式碼 CRUD 資料庫與集合

本文導讀 相比 Java 操作 關係型資料庫(如 Mysql) 而言,Java  操作 noSql 更加簡單,因為沒有事務這些操作 Java 操作 Mysql 資料庫需要 Mysql 的連線驅動包,同理 Java 操作 MongoDB 也需要連線驅動包,叫 mongo-j

通過java反射獲取任意物件的欄位名及欄位值

import java.lang.reflect.Field; /** * * @author EX-QINCIDONG001 * */ public class ReflectClass { /** * @param args */ public