Приходит HTTP запрос, формирую строку для сохранения в БД, генерирую уникальный ID так:
```
func NewID() (ulid.ULID, error) {
entropy := rand.New(rand.NewSource(time.Now().UnixNano()))
ms := ulid.Timestamp(time.Now())
return ulid.New(ms, entropy)
}
```
Т.е. ulid.New в качестве энтропии использует рандом у которого в качестве источника энтропии время с наносекундами. Какова вероятность того, что прийдут два запроса в одну наносекунду и возникнет конфликт ID-шников?
Читать далее...
#golang