All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.journalkeeper.rpc.client.ClientServerRpc Maven / Gradle / Ivy

/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.journalkeeper.rpc.client; import io.journalkeeper.utils.event.EventBus; import io.journalkeeper.utils.event.EventWatcher; import java.net.URI; import java.util.concurrent.CompletableFuture; /** * Client调用Server的RPC * * @author LiYue * Date: 2019-03-14 */ public interface ClientServerRpc { /** * 获取当前连接Server的URI * @return 当前连接Server的URI */ URI serverUri(); /** * 客户端调用LEADER节点写入操作日志变更状态。 * 集群保证按照提供的顺序写入,保证原子性,服务是线性的,任一时间只能有一个客户端使用该服务。 * 日志在集群中复制到大多数节点,并在状态机执行后返回。 * * @param request See {@link UpdateClusterStateRequest} * @return See {@link UpdateClusterStateResponse} * @throws io.journalkeeper.exceptions.RequestTimeoutException 请求超时时抛出 * @throws io.journalkeeper.exceptions.TransportException 传输异常时抛出 */ CompletableFuture updateClusterState(UpdateClusterStateRequest request); /** * 客户端调用LEADER节点查询集群当前的状态,即日志在状态机中执行完成后产生的数据。 * 该服务保证强一致性,保证读到的状态总是集群的最新状态。 * * @param request See {@link QueryStateRequest} * @return See {@link QueryStateResponse} */ CompletableFuture queryClusterState(QueryStateRequest request); /** * 客户端调用任意节点查询节点当前的状态,即日志在状态机中执行完成后产生的数据。 * 该服务不保证强一致性,只保证顺序一致,由于复制存在时延,集群中各节点的当前状态可能比集群的当前状态更旧。 * * @param request See {@link QueryStateRequest} * @return See {@link QueryStateResponse} */ CompletableFuture queryServerState(QueryStateRequest request); /** * 客户端调用LEADER节点查询集群最新提交位置,用于二步读取。 * @return See {@link LastAppliedResponse} */ CompletableFuture lastApplied(); /** * 客户端查询任意节点上指定日志位置对应快照的状态,用于二步读取中,在非LEADER节点获取状态数据。 * * @param request See {@link UpdateClusterStateRequest} * @return See {@link UpdateClusterStateResponse} * 可能的返回的状态: * StatusCode.INDEX_OVERFLOW: 请求位置对应的快照尚未生成。 * StatusCode.INDEX_UNDERFLOW:请求位置对应的快照已删除。 */ CompletableFuture querySnapshot(QueryStateRequest request); /** * 客户端查询任意节点获取集群配置,返回集群所有节点和当前的LEADER节点。 * 需要注意的是,只有LEADER节点上的配置是最新且准确的,在其它节点上查询到的集群配置有可能是已过期的旧配置。 * * @return See {@link GetServersResponse} */ CompletableFuture getServers(); /** * 获取当前节点状态 * * @return See {@link GetServerStatusResponse} */ CompletableFuture getServerStatus(); /** * 添加pull模式事件监听。 * @see EventBus * @return See {@link AddPullWatchResponse} */ CompletableFuture addPullWatch(); /** * 删除pull事件监听。 * @see EventBus * @param request See {@link RemovePullWatchRequest} * @return See {@link RemovePullWatchResponse} */ CompletableFuture removePullWatch(RemovePullWatchRequest request); /** * 变更集群配置 * @param request See {@link UpdateVotersRequest} * @return See {@link UpdateClusterStateResponse} */ CompletableFuture updateVoters(UpdateVotersRequest request); /** * 拉取事件,并确认已拉取的事件位置。 * @param request See {@link PullEventsRequest} * @see EventBus * @return See {@link PullEventsResponse} */ CompletableFuture pullEvents(PullEventsRequest request); /** * 执行角色转换 * @param request See {@link ConvertRollRequest} * @return See {@link ConvertRollResponse} */ CompletableFuture convertRoll(ConvertRollRequest request); /** * 开启一个新事务,并返回事务ID。 * @param request See {@link CreateTransactionRequest} * @return See {@link CreateTransactionResponse} */ CompletableFuture createTransaction(CreateTransactionRequest request); /** * 提交或回滚事务 * @param request See {@link CompleteTransactionRequest} * @return See {@link CompleteTransactionResponse} */ CompletableFuture completeTransaction(CompleteTransactionRequest request); /** * 获取当前进行中的事务 * @return See {@link GetOpeningTransactionsResponse} */ CompletableFuture getOpeningTransactions(); /** * 获取当前所有快照 * @return See {@link GetSnapshotsResponse} */ CompletableFuture getSnapshots(); /** * 领导人检测 * @return See {@link CheckLeadershipResponse} */ CompletableFuture checkLeadership(); /** * 添加事件监听器,当事件发生时会调用监听器 * @see EventBus * @param eventWatcher 事件监听器 */ void watch(EventWatcher eventWatcher); /** * 删除事件监听器 * @see EventBus * @param eventWatcher 事件监听器 */ void unWatch(EventWatcher eventWatcher); void stop(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy