libsoup игнорирует DNS TTL в архитектуре с балансировкой нагрузки AWS Elastic Load Balancer

По этой ссылке http://www.chaseventers.org/2010/09/libsoup-ignores-dns-ttls.html

Код из libsoup /* Требуется блокировка host_lock */

static SoupSessionHost *
get_host_for_uri (SoupSession *session, SoupURI *uri)
{
    SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session);
    SoupSessionHost *host;

    host = g_hash_table_lookup (priv->hosts, uri);
    if (host)
        return host;

    host = soup_session_host_new (session, uri);
    g_hash_table_insert (priv->hosts, host->uri, host);

    return host;
}

К сожалению, записи в этой хэш-таблице никогда не удаляются и не имеют срока действия, если сам объект SoupSession не исчезнет.

Это отстой по нескольким причинам:

  1. Значения DNS TTL игнорируются. Вместо этого результат DNS-запроса кешируется навсегда. Очевидно, это означает, что если запись когда-либо изменяется, клиенты libsoup должны быть перезапущены, чтобы узнать об этом.

  2. Распределение нагрузки на DNS нарушается libsoup, который будет неоднократно подключаться к одному и тому же IP-адресу независимо от того, включены ли несколько IP-адресов в ответ на запрос A.

Похоже, что libsoup будет плохо себя вести в облачной среде с балансировкой нагрузки. пожалуйста подтвердите.

1 ответ

Вы можете перейти на Network Load Balancer, который предоставляет статический IP-адрес вместо DNS-имени, который разрешает разные IP-адреса на каждый AZ, поэтому даже если библиотека не поддерживает TTL, это не будет проблемой для вас.

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