Arhn - архитектура программирования

Пул HTTP-соединений

Служба A вызывает службу B через HTTP. Это случается часто, и размер передаваемых данных не очень большой. Я обнаружил, что повторное использование одного и того же TCP-соединения для отправки нескольких запросов от A к B, по-видимому, уменьшает задержку. Естественно, на ум приходит идея пула соединений:

  1. Откройте несколько подключений к сервису B и поддерживайте их в рабочем состоянии.
  2. Когда А нужно позвонить Б, предоставьте ему одно из соединений из пула

Реализация этого включает в себя решение некоторых проблем, которые выходят за рамки того, что я пытаюсь сделать, поэтому я ищу дешевый способ реализовать это (может быть, есть какой-то специально настроенный прокси-сервер между A и B?).

Я мог бы просто вскочить и начать программировать, но эта проблема кажется настолько распространенной, что я почти уверен, что кто-то уже решил ее раньше.


  • Большинство клиентских библиотек HTTP уже делают это. Какой язык вы используете? 26.02.2013
  • Если клиент вызывающей службы — Java, взгляните на HttpClient — stackoverflow.com/questions/4851535/. Пул должен быть в источнике — даже если прокси-сервер поддерживает объединение с конечным клиентом, накладные расходы на открытие и закрытие соединений с прокси-сервером все равно останутся. 26.02.2013
  • Проблема в том, что клиентская служба находится на PHP (и я не могу переписать ее на Java, иначе я бы использовал HTTP-компоненты apache). Расширение PHP cURL может повторно использовать соединения, но эти соединения не сохраняются для разных HTTP-запросов (apache отключает их после завершения запроса) 26.02.2013
  • Apache должен поддерживать их в рабочем состоянии, если вы используете заголовки HTTP 1.1. @AkberChoudhry Родной Java HttpURLConnection также выполняет пул соединений. 26.02.2013

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..