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

OSCHINA-MIRROR/AhooWang-CosId

28.02.2025 04:16
GitLife Service Account

⭐ Улучшения

  • Увеличение охвата тестов: равномерность распределения алгоритма Snowflake
  • Улучшение: поддержка более широкого спектра типов дат в CosIdIntervalShardingAlgorithm:
    • java.time.Instant
    • java.time.LocalDate
    • java.time.OffsetDateTime
    • java.time.ZonedDateTime
    • java.time.LocalDateTime
    • java.time.YearMonth
    • java.sql.Date
    • java.sql.Timestamp
  • Переработка: автоматическая конфигурация MachineStateStorage
  • Переработка: удаление конфигурации MachineProperties.StateStorage.enabled
  • Улучшение: проверка на нулевые значения

🔨 Обновление зависимости

  • Обновление до версии v4.10.0 бома com.squareup.okhttp3:okhttp-bom
  • Обновление до версии v4.6.1 бома org.axonframework:axon-bom
  • Обновление до версии v5.2.1 ShardingSphere

🐞 Исправление ошибок

  • Исправление устаревших документов
  • Исправление проблемы с https://github.com/Ahoo-Wang/CosId/issues/168
  • Исправление ошибки вычисления смещения временной метки
Последнее сообщение коммита: update version
28.02.2025 04:16
GitLife Service Account

Обновленные изменения

  • Функционал: Добавлен Radix36CosIdGenerator для поддержки регистронезависимого хранения.
  • Временные исправления: Устранены проблемы с частью устаревшей документации.

CosIdGenerator

Radix62CosIdGenerator

        //0TEXPEbg0001001
        String id = radix62CosIdGenerator.generateAsString();
        //CosIdState{timestamp=1660526325024, machineId=1, sequence=1}
        CosIdState cosIdState = radix62CosIdGenerator.getStateParser().asState(id);

Radix36CosIdGenerator

        //0L6U2PAD600010001
        String id = radix36CosIdGenerator.generateAsString();
        //CosIdState{timestamp=1660526664378, machineId=1, sequence=1}
        CosIdState cosIdState = radix36CosIdGenerator.getStateParser().asState(id);
Последнее сообщение коммита: fix https://github.com/Ahoo-Wang/CosId/issues/135
28.02.2025 04:15
GitLife Service Account

Обновленные изменения 🎉 🎉 🎉

  • Новый распределённый алгоритм ID: CosIdGenerator.
    • Глобальное монотонное увеличение.
    • Локальное монотонное увеличение.
    • Высокая производительность: 15 570 085 операций в секунду (generateAsString), что в три раза превышает UUID.randomUUID().
    • Разбор состояния ID (timestamp, machineId, sequence).
    • Просто масштабируемый.
    • Низкое потребление памяти: 15 символов.

CosIdGenerator

  • Рефакторинг: Добавлен параметр sequenceResetThreshold для оптимизации неравномерного распределения сегментов при низкой пропускной способности системы для снежинкового алгоритма.
Последнее сообщение коммита: add CosIdGenerator Algorithm structure diagram
28.02.2025 04:14
GitLife Service Account

Обновлено

  • Улучшение: добавлена генератор ID с непредсказуемостью (UncertaintyIdGenerator) для обеспечения глобального монотонного увеличения при условии непредсказуемости, что особенно важно для следующих сценариев:
    • Неравномерное распределение снежинок ID при низкой пропускной способности системы.
    • Отсутствие желания генерировать предсказуемые ID: предотвращение создания пауков на основе порядковых номеров ID, предотвращение прогнозирования объема сделок на основе ID заказа.

Полный список изменений: https://github.com/Ahoo-Wang/CosId/compare/v1.12.0...v1.12.1

Последнее сообщение коммита: add UncertaintyIdGenerator (#117)
28.02.2025 04:14
GitLife Service Account

Изменившееся

  • Добавлено: Модуль cosid-axon, который поддерживает генерацию ID с использованием фреймворка AxonFramework (события, команды, запросы, сущности, агрегаты и т.д.)

Полный список изменений: https://github.com/Ahoo-Wang/CosId/compare/v1.10.4...v1.11.0

Последнее сообщение коммита: rename axon.cosid to cosid.axon
28.02.2025 04:13
GitLife Service Account

⭐ Новые возможности

  • Улучшение: добавлен модуль cosid-proxy, режим PROXY снижает зависимость потребителей ID от уровня хранения дистрибутора, что упрощает процесс интеграции. example-proxy
  • Улучшение: добавлен модуль cosid-proxy-server.
    CosId-Proxy
Последнее сообщение коммита: update to 1.10.0
28.02.2025 04:13
GitLife Service Account

⭐ Новые возможности

  • Улучшение: Введен класс MachineIdGuarder (Защитник идентификатора машины) для управления идентификаторами машин, что решает проблему невозможности восстановления идентификатора машины при непреднамеренном завершении процесса.
    MachineIdGuarder

  • Улучшение: Добавлен модуль cosid-test, который используется для стандартизации реализации расширений, а также предоставляет тестирование совместимости и параллелизма для повышения надежности расширений.

Последнее сообщение коммита: update to 1.9.0
28.02.2025 04:13
GitLife Service Account

🔨 Охват тестами

  • Улучшение охвата тестами с 56.42% до 78.62%. codecov

Изменения

Последнее сообщение коммита: update version
28.02.2025 04:11
GitLife Service Account

⭐ Новые возможности

  • добавлен ConcurrentGenerateTest.
  • добавлен IdGeneratorDecorator.

🔨 Улучшения

  • рефакторинг юнит-тестов.
  • добавление некоторых Java-Doc.
  • игнорирование проверки типа при чтении целочисленного поля. (@RocherKong) в https://github.com/Ahoo-Wang/CosId/pull/29

🐞 Исправление ошибок

  • исправление демонстрационной программы, которая не запускалась корректно благодаря правильному application.yaml (@RocherKong) в https://github.com/Ahoo-Wang/CosId/pull/28

Новые участники

Полный список изменений: https://github.com/Ahoo-Wang/CosId/compare/v1.8.6...v1.8.9

Последнее сообщение коммита: update Doc version
28.02.2025 04:11
GitLife Service Account

🌟 Новые возможности

  • Добавлена поддержка генерации ID типа int с помощью IntegerIdGenerator
  • Улучшена поддержка генерации ID типа int в CosIdAccessor
  • Обновлено использование аннотации @CosId, чтобы поддерживать цель ElementType.TYPE
    public abstract static class AbstractId {
        private long id;

        public long getId() {
            return id;
        }

        public void setId(long id) {
            this.id = id;
        }
    }
    @CosId
    public static class ClassIdInheritedType extends AbstractId {

    }
  • Улучшено автоматическое распознавание типов полей ID в базовых классах-генераторах с использованием CosIdAccessor.
    @CosId
    public abstract static class AbstractGenericCosId<T, N> {
        private T id;
        private N name;

        public T getId() {
            return id;
        }

        public void setId(T id) {
            this.id = id;
        }

        public N getName() {
            return name;
        }

        public void setName(N name) {
            this.name = name;
        }
    }

🔨 Рефакторинг

  • Переименован SnowflakeIntervalShardingAlgorithm в CosIdSnowflakeIntervalShardingAlgorithm
  • Удалены DateIntervalShardingAlgorithm, LocalDateTimeIntervalShardingAlgorithm, SnowflakeFriendlyIntervalShardingAlgorithm, StringIntervalShardingAlgorithm, TimestampIntervalShardingAlgorithm, TimestampOfSecondIntervalShardingAlgorithm. Вместо них используются CosIdIntervalShardingAlgorithm и CosIdSnowflakeIntervalShardingAlgorithm.
  • Изменены значения по умолчанию DEFAULT_BROKEN_THRESHOLD=500 и DEFAULT_SPIN_THRESHOLD=1
Последнее сообщение коммита: add Badge to document
28.02.2025 04:11
GitLife Service Account

:star: Новые возможности

  • Добавлена поддержка автоматической регистрации CosIdAccessor при сканировании пакетов.
        CosIdAccessorRegistry registry = new DefaultAccessorRegistry(new DefaultAccessorParser(AnnotationDefinitionParser.INSTANCE));
        DefaultCosIdScanner scanner =
            new DefaultCosIdScanner(new String[]{"me.ahoo.cosid.accessor.scanner.entity"}, new NamedDefinitionParser("id"), registry);
        scanner.scan();
  • Добавлен интерфейс CosIdAccessorParser.
  • Добавлен интерфейс CosIdAccessorRegistry.

⛏️ Улучшения

  • Улучшен и расширен интерфейс CosIdAccessor.
  • Переименован CosIdDefinition в IdDefinition.
  • Удалён @CosId#friendlyId.
Последнее сообщение коммита: add Badge
28.02.2025 04:10
GitLife Service Account

🌟 Новые возможности

  • Добавлено построение и публикацию документов (workflows).
  • Добавлено интеграционное тестирование (workflows).
  • Добавлено базовое тестирование CosId (workflows).
  • Добавлено тестирование сравнения производительности, которое сравнивает CosId и Leaf (workflows). https://github.com/Ahoo-Wang/CosId/issues/22
  • Поддерживается возможность включения пользовательской конфигурации для активации команды завершения работы (PrefetchWorkerExecutorService). https://github.com/Ahoo-Wang/CosId/issues/16 @cubita-io
  • Обновлена зависимость библиотеки Guava до версии Yöntem 30.0-jre. https://github.com/Ahoo-Wang/CosId/issues/13

🔨 Улучшения

  • Переработана константа MAX_PREFETCH_DISTANCE -> 100_000_000.
Предыдущее Текущее
Предыдущее Текущее
  • Переработан плагин JMHPlugin, который поддерживает пользовательские параметры JMH: -PjmhIncludes/-PjmhExcludes/-PjmhThreads/-PjmhMode.
  • Метод IntervalTimeline.sharding теперь возвращает согласованное подмножество типа коллекции. https://github.com/Ahoo-Wang/CosId/issues/14
  • Добавлен checkstyle для проверки качества кода.
  • Добавлен spotbugs плагин для повышения качества кода.
Последнее сообщение коммита: - update version
28.02.2025 04:10
GitLife Service Account

📔 Документация

🔨 Оптимизация

  • переименовать SmartIntervalShardingAlgorithm в CosIdIntervalShardingAlgorithm (соответствие с ShardingSphere).
  • переименовать ModShardingAlgorithm в CosIdModShardingAlgorithm (соответствие с ShardingSphere).
  • отметить как @Deprecated: DateIntervalShardingAlgorithm, LocalDateTimeIntervalShardingAlgorithm, StringIntervalShardingAlgorithm, TimestampIntervalShardingAlgorithm, TimestampOfSecondIntervalShardingAlgorithm; объединить в CosIdIntervalShardingAlgorithm.
Последнее сообщение коммита: - rename SmartIntervalShardingAlgorithm to `CosIdIntervalSharding...
28.02.2025 04:10
GitLife Service Account

Новые возможности

  • Добавлен JdbcMachineIdInitializer.
  • Добавлен AsStringDeserializer.
  • Добавлен AsStringSerializer.
  • Добавлен @AsString. (cosid-jackson)
public class AsStringDto {

    @AsString
    private Long id;

    @AsString(AsString.Type.RADIX)
    private Long radixId;

    @AsString(value = AsString.Type.RADIX, radixPadStart = true)
    private Long radixPadStartId;

    @AsString(value = AsString.Type.RADIX, radixPadStart = true, radixCharSize = 10)
    private Long radixPadStartCharSize10Id;

    @AsString(AsString.Type.FRIENDLY_ID)
    private long friendlyId;

   // getters / setters
}

Результат сериализации

{
  "id": "266300479548424192",
  "radixId": "JferHIEYZk",
  "radixPadStartId": "0JferHIEYZk",
  "radixPadStartCharSize10Id": "JferHIEYZk",
  "friendlyId": "20211228202301948-0-0"
}
Последнее сообщение коммита: - @AsString support FRIENDLY_ID
28.02.2025 04:09
GitLife Service Account

Новые возможности

  • Добавлен JdbcMachineIdDistributor, чтобы поддерживать использование реляционной базы данных в качестве хранилища для распределения идентификаторов машин.
  • Добавлена конфигурация CosIdJdbcMachineIdDistributorAutoConfiguration для интеграции с JdbcMachineIdDistributor.
cosid:
  snowflake:
    machine:
      distributor:
        type: jdbc
  • CosIdKeyGenerateAlgorithm теперь поддерживает генерацию ключей типа строки как распределённых первичных ключей.

Исправление ошибок

  • Исправлено отсутствие проверки успешного состояния в DistributedAtomicNumber.
Последнее сообщение коммита: - add JdbcMachineIdDistributor
28.02.2025 04:09
GitLife Service Account

Новые возможности

  • Добавлен CosIdZookeeperAutoConfiguration, чтобы снизить сложность при интеграции с ZooKeeper.
cosid:
  zookeeper:
    enabled: true
    connect-string: localhost:2181
    retry:
      base-sleep-time-ms: 100
      max-retries: 5
      max-sleep-ms: 500
    block-until-connected-wait: 10s
  segment:
    distributor:
      type: zookeeper
  snowflake:
    machine:
      distributor:
        type: zookeeper

Здесь представлены новые возможности, включая конфигурацию автоматической интеграции с ZooKeeper.

Последнее сообщение коммита: add CosIdZookeeperAutoConfiguration
28.02.2025 04:09
GitLife Service Account

Новые возможности

  • Добавлен IdSegmentDistributorFactory, чтобы обеспечить гибкую замену IdSegmentDistributor.
  • Добавлен ZookeeperIdSegmentDistributorFactory.
  • Добавлен ZookeeperMachineIdDistributor, чтобы поддерживать распределение машинных номеров на основе ZooKeeper.
  • Добавлен CosIdZookeeperSegmentAutoConfiguration (cosid-spring-boot-starter).
cosid:
  segment:
    distributor:
      type: zookeeper
  • Добавлен CosIdZookeeperMachineIdDistributorAutoConfiguration (cosid-spring-boot-starter).
cosid:
  snowflake:
    machine:
      distributor:
        type: zookeeper

Переработка

  • Добавлен JdbcIdSegmentDistributorFactory, чтобы адаптироваться к IdSegmentDistributorFactory.
  • Добавлен RedisIdSegmentDistributorFactory, чтобы адаптироваться к IdSegmentDistributorFactory.
  • Добавлен SpringRedisIdSegmentDistributorFactory, чтобы адаптироваться к IdSegmentDistributorFactory.
  • Переработана конфигурация CosIdJdbcSegmentAutoConfiguration, чтобы адаптироваться к IdSegmentDistributorFactory и снизить избыточность кода.
  • Переработана конфигурация CosIdSegmentAutoConfiguration, чтобы адаптироваться к IdSegmentDistributorFactory и снизить избыточность кода.
  • Переработана конфигурация CosIdSpringRedisSegmentAutoConfiguration, чтобы адаптироваться к IdSegmentDistributorFactory и снизить избыточность кода.
  • Переработана конфигурация CosIdRedisSegmentAutoConfiguration, чтобы адаптироваться к IdSegmentDistributorFactory и снизить избыточность кода.
Последнее сообщение коммита: - add IdSegmentDistributorFactory to support more flexible replac...
28.02.2025 04:09
GitLife Service Account

Новые возможности

  • Добавлен IdConverter, поддерживающий преобразование пользовательских ID типа long в тип String.
  • Добавлен Radix62IdConverter, обеспечивающий сжатие строковых ID и гарантию их порядка (264499621261217792 -> JXPU9qorEu).
  • Добавлен SnowflakeFriendlyIdConverter, преобразующий ID, созданные с использованием алгоритма Snowflake, в friendlyId (264500352223547392 -> 20211223210958149-1-0).
  • Улучшена поддержка IdConverter API в cosid-spring-boot-starter.
      short_id:
        converter:
          prefix: cosid_
          type: radix
          radix:
            char_size: 11
            pad_start: false
  • Добавлен ZookeeperIdSegmentDistributor, поддерживающий распределение номерных диапазонов через ZooKeeper.
Последнее сообщение коммита: - rename Radix62IdConvert to Radix62IdConverter
28.02.2025 04:08
GitLife Service Account
  • Оптимизация ModCycle (алгоритм модульного цикла)
  • Уменьшение зависимостей: guava [30.0-jre] -> [29.0-jre] (соответствие с ShardingSphere)
  • Добавление: StringIntervalShardingAlgorithm для поддержки типов данных дат в строковом формате
  • Оптимизация: SmartIntervalShardingAlgorithm для поддержки типов данных дат в строковом формате
  • Добавление: SnowflakeFriendlyIntervalShardingAlgorithm для поддержки периодического алгоритма шардинга SnowflakeFriendId
  • Добавление: частичные юнит-тесты для повышения охвата тестов
  • Внесение исправлений: баг в методе AbstractIntervalShardingAlgorithm.convertRangeShardingValue
  • Изменение API: IntervalTimeline.sharding выбрасывает исключение при превышении точной границы значения шардинга вместо возврата null
  • Изменение зависимости: io.codearte.nexus-staging -> io.github.gradle-nexus.publish-plugin
  • Обновление зависимости: org.openjdk.jmh -> 1.33
Последнее сообщение коммита: - update jmhVersion -> 1.33
28.02.2025 04:08
GitLife Service Account
  • Улучшение: Введено ExactCollection (точное множество), которое предназначено для сценариев использования алгоритмов шардинга Interval и Mod, где количество узлов можно предварительно определить. Это повышает производительность и эффективность использования памяти.
  • Добавлено: CosIdModShardingAlgorithm, чтобы переопределить алгоритм шардинга по модулю и повысить производительность.
    CosIdModShardingAlgorithm
  • Добавлено: тестирование производительности ModShardingAlgorithmBenchmark, сравнение CosIdModShardingAlgorithm и org.apache.shardingsphere.sharding.algorithm.sharding.mod.ModShardingAlgorithm
PreciseShardingValue RangeShardingValue
Производительность ModShardingAlgorithm — PreciseShardingValue Производительность ModShardingAlgorithm — RangeShardingValue
Последнее сообщение коммита: add CosIdModShardingAlgorithm
1
https://api.gitlife.ru/oschina-mirror/AhooWang-CosId.git
git@api.gitlife.ru:oschina-mirror/AhooWang-CosId.git
oschina-mirror
AhooWang-CosId
AhooWang-CosId