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

Советы по использованию commons-pool в продакшене

Основываясь на ответе, который я получил здесь, я начал давать commons-pool серьезный взгляд. Мой последний опыт использования был примерно в 2003 году, вероятно, версия 1.1 или 1.2. Его основной пользователь, DBCP, многими считается ошибочным и его следует избегать.

Кто-нибудь использует общий пул в производстве для написания собственного пула? Какой тип бассейна лучше всего использовать? Я планирую хранить в нем клиентские сокеты TCP.

Есть ли другой универсальный пул, который заменяет его?

02.06.2009

  • Я впервые слышу о недостатках DBCP... у вас есть что-то более конкретное? 29.12.2009
  • @skaffman - в основном он терял связи без причины 29.12.2009
  • Это интересно: static.springsource.com/projects/tc- server/6.0/admin/ ... упоминает неадекватность DBCP. Однако это не очень помогает, так как это закрытый исходный код. 30.12.2009
  • Насколько я знаю, качество DBCP было основной причиной написания c3p0 и proxool. 30.12.2009

Ответы:


1

Кто-нибудь использует общий пул в производстве для написания собственного пула?

Да, и пул поддерживает TCP-соединения, как вы и предполагали. Он подключен через Spring, поэтому, если вы понимаете конфигурацию Spring:

<bean class="com.company.ConnectionSupplier">
<constructor-arg>
  <!-- The ConnectionSupplier wraps an object pool -->
  <bean class="org.apache.commons.pool.impl.GenericObjectPool">
    <constructor-arg>
       <!-- The ObjectPool uses a ConnectionFactory to build new connections -->
       <bean class="com.company.ConnectionFactory">
         <constructor-arg value="server" />
         <constructor-arg value="3000" />  
       </bean>  
    </constructor-arg>
    <property name="maxActive" value="20" />
    <property name="testOnBorrow" value="true" />
  </bean>
</constructor-arg>
</bean>  

ConnectionFactory расширяет BasePoolableObjectFactory и представляет собой небольшую оболочку SocketFactory.

@First comment: конструктор ConnectionFactory принимает сервер и порт. В переопределенном makeObject() создаются сокеты, которые подключаются к этому серверу и порту. Он возвращает объекты Connection, которые обертывают созданный сокет некоторыми удобными методами для связи через сокет.

Соединение проверяется с помощью своего рода «пинга» или «эха», предоставляемого протоколом, используемым для связи через сокет. Если бы это было недоступно, проверка/проверка соединения на самом деле невозможна, за исключением запроса сокета, был ли он закрыт. В этом случае соединение в пуле было бы недействительным, если бы оно вызвало исключение, и каждый метод, использующий соединения, должен быть готов к такому сбою и попытаться выполнить ту же операцию с другим соединением.

06.01.2010
  • Как вы реализовали фабрику соединений? Как вы проверяете соединение на живость? 06.01.2010

  • 2

    Вы должны проверить, что создание экземпляра стоит дороже или выборка из пула. Потому что единственная допустимая ситуация для использования пула — первая.

    01.01.2010
  • Я не могу создавать экземпляры новых объектов, поскольку объекты представляют собой клиентские TCP-сокеты, которые должны существовать как можно дольше. Закрытие и открытие соединений считается DOS-атакой. 02.01.2010
  • К вашему сведению: мы используем GenericObjectPool из commons-pool в другой области, но он работает очень хорошо. 02.01.2010

  • 3

    Вы заглядывали в Netty или Apache MINA? Они оба будут отслеживать ваши TCP-соединения и должны упростить реализацию любого протокола связи, который будут использовать эти сокеты TCP.

    02.01.2010
  • Насколько я знаю, они используются для реализации серверов, а не клиентов. Могу ли я использовать их для реализации КЛИЕНТСКИХ пулов tcp? 03.01.2010
  • да. И Netty, и MINA также позволяют вам писать клиента. 04.01.2010

  • 4

    Во-первых, не используйте commons-pool 1.3, у него есть серьезные проблемы с многопоточными приложениями.

    Во-вторых, пакет параллелизма Java 5 имеет достойную реализацию пула (см. пример здесь)

    29.12.2009
  • Позволяет ли c3p0 использовать свой пул без JDBC? 29.12.2009
  • Я исправлен, удалил c3p0, но мое замечание о пуле общего пользования 1.3 бесценно, мне понадобилась целая вечность, чтобы найти его в производстве. производительность сильно подскочила после обновления до 1.4... 29.12.2009
  • Мы используем 1.5... Java 5 действительно имеет хороший пул Thread, но мы искали пул Object 30.12.2009

  • 5

    Ознакомьтесь с MultiThreadedHttpConnectionManager. это менеджер пула соединений Apache Commons HttpClient, который, вероятно, будет соответствовать вашим потребностям прямо из коробки.

    02.06.2009
  • Как я уже писал, мне нужно, чтобы пул содержал TCP-сокеты, а не HTTP-соединения. 03.06.2009
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге 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 , и использованием..

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