Как eureka peers гарантируют, что регистрационная информация непротиворечива при сбое действия синхронизации

PeerAwareInstanceRegistryImpl будет синхронизироваться с другими одноранговыми узлами при изменении регистрации, код выглядит следующим образом:

private void replicateInstanceActionsToPeers(Action action, String appName,
                                             String id, InstanceInfo info, InstanceStatus newStatus,
                                             PeerEurekaNode node) {
    try {
        InstanceInfo infoFromRegistry = null;
        CurrentRequestVersion.set(Version.V2);
        switch (action) {
            case Cancel:
                node.cancel(appName, id);
                break;
            case Heartbeat:
                InstanceStatus overriddenStatus = overriddenInstanceStatusMap.get(id);
                infoFromRegistry = getInstanceByAppAndId(appName, id, false);
                node.heartbeat(appName, id, infoFromRegistry, overriddenStatus, false);
                break;
            case Register:
                node.register(info);
                break;
            case StatusUpdate:
                infoFromRegistry = getInstanceByAppAndId(appName, id, false);
                node.statusUpdate(appName, id, newStatus, infoFromRegistry);
                break;
            case DeleteStatusOverride:
                infoFromRegistry = getInstanceByAppAndId(appName, id, false);
                node.deleteStatusOverride(appName, id, infoFromRegistry);
                break;
        }
    } catch (Throwable t) {
        logger.error("Cannot replicate information to {} for action {}", node.getServiceUrl(), action.name(), t);
    }
}

Меня смущает распределенная согласованность нескольких серверов eureka - когда действие репликации завершается неудачей - оно просто ловит бросаемый объект. Почему бы не использовать алгоритмы согласованности, такие как сплетни, паксос, чтобы обеспечить более высокую согласованность?

Я видел описание вики и знаю, что eureka просто допустила временную несогласованность - сервер пытается быть максимально устойчивым... Ага, теория ограничений!

0 ответов

Другие вопросы по тегам