Skip to content

goutls/geoid

Repository files navigation

geoid

geoid — жоғары өнімділікті Go-кітапханасы, ол географиялық бөлінген сәйкестендіргіштерді жасауға арналған. Ол 64 биттік ID-дің ықшамдылығын RFC 9562 стандартындағы 128 биттік UUID v8-дің жаһандық үйлесімділігімен біріктіреді. Кітапхана орталықтандырылған үйлестірусіз бірнеше аймақтарда бірегейлікті қажет ететін жүйелер үшін жасалған. Оның негізгі артықшылықтары — sync/atomic негізіндегі блокталмайтын (lock-free) жұмыс принципі және жүйелік шақыруларды азайту үшін уақытты кэштеу.

geoid — это высокопроизводительная Go-библиотека для генерации геораспределенных идентификаторов. Она объединяет компактность 64-битных ID с глобальной совместимостью 128-битных UUID v8 (RFC 9562). Библиотека разработана для систем, требующих гарантированной уникальности в рамках нескольких регионов без использования централизованной координации. Ключевыми особенностями являются неблокирующий (lock-free) принцип работы на базе sync/atomic и кэширование времени для минимизации системных вызовов.

geoid is a high-performance Go library for generating geo-distributed identifiers. It combines the compactness of 64-bit IDs with the global compatibility of 128-bit UUID v8 (RFC 9562). The library is designed for systems that require guaranteed uniqueness across multiple regions without central coordination. Its core advantages include a lock-free design based on sync/atomic and time caching to minimize system overhead.

Использование / Қолданылуы / Usage

RU: Для интеграции библиотеки в ваш проект инициализируйте генератор через uuid.NewGenerator. Передайте prefix (для типа данных), globalID (регион) и writerID (узел). После этого вы сможете генерировать как стандартные 128-битные UUID v8, так и компактные 64-битные идентификаторы.

KZ: Кітапхананы жобаңызға қосу үшін uuid.NewGenerator арқылы генераторды іске қосыңыз. prefix (деректер түрі үшін), globalID (аймақ) және writerID (түйін) параметрлерін беріңіз. Осыдан кейін сіз стандартты 128 биттік UUID v8 және ықшам 64 биттік сәйкестендіргіштерді жасай аласыз.

EN: To integrate the library into your project, initialize the generator via uuid.NewGenerator. Provide a prefix (for data type), globalID (region), and writerID (node). After that, you can generate both standard 128-bit UUID v8 and compact 64-bit identifiers.

package sample

import (
    "testing"
    "github.com/goutls/geoid"
)

func TestSample(t *testing.T) {
    var (
       prefix   uint64 = 0xFF  // Тип данных / Деректер түрі / Data type
       globalID uint64 = 1     // Регион / Аймақ / Region
       writerID uint64 = 127   // Узел / Түйін / Node
    )
    
    // Инициализация / Іске қосу / Initialization
    tableId := uuid.NewGenerator(prefix, globalID, writerID)
    
    // UUID v8 (128-bit RFC 9562)
    t.Log(tableId.UUIDv8())
    
    // ID (64-bit uint64)
    t.Log(tableId.ID())
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages