diff --git a/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/zookeeper/ZookeeperService.java b/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/zookeeper/ZookeeperService.java index 758247aa..8d3a78b1 100644 --- a/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/zookeeper/ZookeeperService.java +++ b/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/zookeeper/ZookeeperService.java @@ -15,4 +15,16 @@ public interface ZookeeperService { void batchReplaceDataInDB(Long clusterPhyId, List infoList); List listFromDBByCluster(Long clusterPhyId); + + /** + * 所有服务挂掉 + * @return + */ + boolean allServerDown(Long clusterPhyId); + + /** + * 存在服务挂掉 + * @return + */ + boolean existServerDown(Long clusterPhyId); } diff --git a/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/zookeeper/impl/ZookeeperServiceImpl.java b/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/zookeeper/impl/ZookeeperServiceImpl.java index 2f1e318c..84d7eb4c 100644 --- a/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/zookeeper/impl/ZookeeperServiceImpl.java +++ b/km-core/src/main/java/com/xiaojukeji/know/streaming/km/core/service/zookeeper/impl/ZookeeperServiceImpl.java @@ -14,6 +14,7 @@ import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil; import com.xiaojukeji.know.streaming.km.common.utils.Tuple; import com.xiaojukeji.know.streaming.km.common.bean.entity.zookeeper.ZookeeperInfo; import com.xiaojukeji.know.streaming.km.common.bean.po.zookeeper.ZookeeperInfoPO; +import com.xiaojukeji.know.streaming.km.common.utils.ValidateUtils; import com.xiaojukeji.know.streaming.km.common.utils.zookeeper.FourLetterWordUtil; import com.xiaojukeji.know.streaming.km.common.utils.zookeeper.ZookeeperUtils; import com.xiaojukeji.know.streaming.km.core.service.zookeeper.ZookeeperService; @@ -105,6 +106,28 @@ public class ZookeeperServiceImpl implements ZookeeperService { return ConvertUtil.list2List(this.listRawFromDBByCluster(clusterPhyId), ZookeeperInfo.class); } + @Override + public boolean allServerDown(Long clusterPhyId) { + List infoList = this.listFromDBByCluster(clusterPhyId); + if (ValidateUtils.isEmptyList(infoList)) { + return false; + } + + // 所有服务挂掉 + return infoList.stream().filter(elem -> !elem.alive()).count() == infoList.size(); + } + + @Override + public boolean existServerDown(Long clusterPhyId) { + List infoList = this.listFromDBByCluster(clusterPhyId); + if (ValidateUtils.isEmptyList(infoList)) { + // 不存在挂掉的服务 + return false; + } + + // 存在挂掉的服务 + return infoList.stream().filter(elem -> !elem.alive()).count() > 0; + } /**************************************************** private method ****************************************************/