1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Chris2018998-BeeCP

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение: BeeCP — это небольшой пул соединений JDBC: высокая производительность, лёгкий код и хорошая стабильность.

  • Поддержка основных популярных драйверов баз данных.
  • Поддержка XAConnection/JTA.
  • Особенности пула: CAS, одиночный кэш соединений, повторное использование очереди, неперемещающееся ожидание самовращения, асинхронное добавление, безопасное закрытие, веб-мониторинг и так далее.
  • Хорошая надёжность и быстрая реакция на непредвиденные ситуации (например, отключение сети и сбой службы базы данных).
  • Хорошая расширяемость интерфейса.

Скачать: Java 7+

<dependency>
   <groupId>com.github.chris2018998</groupId>
   <artifactId>beecp</artifactId>
   <version>4.1.3</version>
</dependency>

Java 6

<dependency>
   <groupId>com.github.chris2018998</groupId>
   <artifactId>beecp</artifactId>
   <version>1.6.10</version>
</dependency>

Пример:

Пример-1 (независимый):

BeeDataSourceConfig config = new BeeDataSourceConfig();
config.setDriverClassName("com.mysql.jdbc.Driver");
config.setJdbcUrl("jdbc:mysql://localhost/test");
config.setUsername("root");
config.setPassword("root");
BeeDataSource ds=new BeeDataSource(config);
Connection con=ds.getConnection();
....

Пример-2 (Springboot):

application.properties

spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.driverClassName=com.mysql.jdbc.Driver

DataSourceConfig.java

@Configuration
public class DataSourceConfig {
  @Value("${spring.datasource.username}")
  private String user;
  @Value("${spring.datasource.password}")
  private String password;
  @Value("${spring.datasource.url}")
  private String url;
  @Value("${spring.datasource.driverClassName}")
  private String driver;

  @Bean
  @Primary
  @ConfigurationProperties(prefix="spring.datasource")
  public DataSource primaryDataSource() {
    return DataSourceBuilder.create().type(cn.beecp.BeeDataSource.class).build();
  }
  
  @Bean
  public DataSource secondDataSource() {
   return new BeeDataSource(new BeeDataSourceConfig(driver,url,user,password));
  }
}

Карта функций:

Монитор времени выполнения: В пуле предусмотрены два способа:

  • Jmx mbean.
  • Pool Vo (получить его можно, вызвав метод datasource: getPoolMonitorVo).

Если ваш проект использует beecp и основан на springboot, мы рекомендуем наш инструмент управления источниками данных BeeCP-Starter (веб-интерфейс, без разработки кода, просто некоторая конфигурация).

Сравнение с HikariCP:

Элемент сравнения BeeCP HikariCP
ключевая технология
Аналоги CAS, предварительное создание прокси, кэш операторов драйверов
Отличия честный режим, поддержка XA, повторное использование соединения, кеш одного соединения, повторное использование очереди, ожидание без перемещения, пауза пула
Файлы 37 файлов, 95 КБ Jar 44 файла, 158 КБ Jar
Производительность на 40 % быстрее (тест HikariCP)

Качество кода: зелёное яблоко

Изображение

Расширение пользователя: фабрика

1. Интерфейсы фабрики соединений

Два интерфейса, которые используются для создания необработанного соединения или необработанного XAConnection для самостоятельной реализации, имя его подкласса необходимо установить в «connectionFactoryClassName» в объекте Bee DataSourceConfig.

Изображение

Изображение Пример

Изображение

2. Класс расшифровки зашифрованного текста пароля JDBC

Изображение

Конфигурация: синяя книга

Название элемента Описание Значение по умолчанию
username Ссылка на имя пользователя в БД null
password Пароль пользователя БД null
jdbcUrl Ссылка на URL БД null
driverClassName Имя класса драйвера JDBC null
poolName Имя генерации, назначенное ему, если не установлено null
fairMode Режим работы пула false
initialSize Количество соединений при инициализации пула 0
asyncCreateInitConnection Режим создания начальных соединений false (синхронизация)
maxActive Максимальное количество доступных соединений в пуле
----------------------------------------------------------------------------------------
borrowSemaphoreSize максимальный размер разрешений пула семафоров min(maxActive/2,CPU size)
defaultAutoCommit начальное значение свойства autoCommit для созданных соединений null, считывает значение свойства read из первого соединения как начальное значение для других соединений
defaultTransactionIsolationCode начальное значение свойства transactionIsolation для созданных соединений null, считывает значение свойства read из первого соединения как начальное значение для других соединений
enableThreadLocal индикатор включения кэша локальных потоков true, установите значение false для поддержки виртуальных потоков
defaultCatalog начальное значение свойства catalog для созданных соединений null, считывает значение свойства read из первого соединения как начальное значение для других соединений
defaultSchema начальное значение свойства schema для созданных соединений null, считывает значение свойства read из первого соединения как начальное значение для других соединений
defaultReadOnly начальное значение свойства readOnly для созданных соединений null, считывает значение свойства read из первого соединения как начальное значение для других соединений
maxWait максимальное время ожидания в пуле для получения соединения заёмщиками, единица времени: миллисекунды 8000
idleTimeout время простоя соединений в пуле, единица времени: миллисекунды 18000
holdTimeout максимальное неактивное время заимствованных соединений, единица времени: миллисекунды 0 (никогда не истекает)
aliveTestSql живой тестовый SQL на заимствованных соединениях, пул удаляет мёртвые соединения SELECT 1
aliveTestTimeout максимальное время ожидания для получения результата проверки на тестовых соединениях, единица времени: секунды 3
aliveAssumeTime значение промежутка времени от последнего времени активности до точки заимствования, если меньше, не проверять, единица времени: миллисекунды 500
forceCloseUsingOnClear индикатор прямого закрытия заимствованных соединений во время очистки пула false
timerCheckInterval интервал времени для сканирования незанятых соединений, единица времени: миллисекунды 18000
connectionFactoryClassName имя класса фабрики соединений null
sqlExceptionCodeList хранит коды исключений SQL для проверки исключения соединений null, связанные методы: addSqlExceptionCode, removeSqlExceptionCode
sqlExceptionStateList хранит состояние исключений SQL для проверки исключения соединений null, related methods: addSqlExceptionCode, removeSqlExceptionCode
evictPredicateClassName имя класса предиката выселения null, pool только для проверки исключения, если оно установлено
jdbcLinkInfoDecoderClassName класс с коротким жизненным циклом, используемый для декодирования информации о связи JDBC null
forceDirtyOnSchemaAfterSet индикатор принудительной установки грязного состояния для свойства схемы под драйвером PG false
forceDirtyOnCatalogAfterSet индикатор принудительной установки грязного состояния для свойства каталога под драйвером PG false
enableJmx индикатор включения для регистрации конфигурации и пула в JMX false
printConfigInfo логический индикатор, true: печать информации об элементе конфигурации при запуске пула false
printRuntimeLog логический индикатор, true: печать журнала времени выполнения false

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Компонент пула соединений JDBC малого размера. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Chris2018998-BeeCP.git
git@api.gitlife.ru:oschina-mirror/Chris2018998-BeeCP.git
oschina-mirror
Chris2018998-BeeCP
Chris2018998-BeeCP
master