Size: a a a

Golang Developers — русскоговорящее сообщество

2020 October 22

SA

Saimon Arzin in Golang Developers — русскоговорящее сообщество
x-foby
Смотрите, всё ведь просто.
Если у вас ожидается 1к запросов в секунду, и на каждый запрос вам надо ходить в 100 сервисов, то вы пулом ни количество запросов, ни количество сервисов не уменьшите.

То есть, порождая 100 горутин на запрос, вы получите максимально быстрое выполнение и, если железо выдержит, то проблем вам это не доставит.
Если же железо не будет держать эту нагрузку, то ограничивая количество горутин пулом, вы будете увеличивать время обработки каждого запроса, то есть начнёте создавать очередь, соответственно и не сможете держать 1к рпс.

Если резюмировать, то мы придём к тому что пул вам ничего не даст: потому что если вам в секунду нужно тысячу раз сходить в 100 сервисов, то что бы вы не делали, задача не изменится — вам всё равно нужно будет сходить тысячу раз в секунду в 100 сервисов.

Вы говорили выше что-то про кристалл, но процессор тут не причём, единственное, что вы действительно сможете сэкономить, используя пул, — это память.
Но, опять же, если у вас стоит задача ходить тысячу раз в секунду в 100 сервисов, то вам в любом случае нужно соответствующее задаче железо.

Отталкивайтесь всегда от задачи.
цифры если что с потолка брал :) спасибо большое за объемное разъяснение
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
господа, а как можно анмаршалить из json в структуру с приватными полями ?
type User struct {
Id        Id    
firstName string json: FirstName
lastName  string
status    bool
}
в
от такая у меня структура

user := User{}
err := json.Unmarshal(jsonData, &user)

вот так я ее пытаюсь анмаршалить

вот так вот жсон {"Id":"08443906-3eb5-4c87-a7b8-7930d6dbb07f","FirstName":"John","LastName":"Doe","Status":true}
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Dmitry
господа, а как можно анмаршалить из json в структуру с приватными полями ?
type User struct {
Id        Id    
firstName string json: FirstName
lastName  string
status    bool
}
в
от такая у меня структура

user := User{}
err := json.Unmarshal(jsonData, &user)

вот так я ее пытаюсь анмаршалить

вот так вот жсон {"Id":"08443906-3eb5-4c87-a7b8-7930d6dbb07f","FirstName":"John","LastName":"Doe","Status":true}
Кастомным демаршалером можно.
А зачем вам это?
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
по сути это гидрация обьекта при доставании из репозитория
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
в данном конкретном примере репозиторий сделан на файлах с использованием джсон
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Dmitry
по сути это гидрация обьекта при доставании из репозитория
Так а приватные поля зачем? Это принципиально? Публичными их сделать нельзя?
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
нельзя, принципиально, это сущность, раскрывать ее внутренние данные нельзя
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
сущность имеет внутренний стейт + команды на его изменение
ну вот сохранить в джсон проблемы не составило, хотя и пришлось использовать анонимную структуру
а вот восстановить пока не понимаю как
источник

SA

Saimon Arzin in Golang Developers — русскоговорящее сообщество
как вариант придется сделать структуру, где поле публичное и преобразовать в другую структуру, где поле будет уже приватным
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
да, вот я сделал аналогично при маршалинге, начитавшись гугла
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
func (u *User) ToJson() ([]byte, error) {
return json.Marshal(struct {
 Id        string
 FirstName string
 LastName  string
 Status    bool
}{
 Id:        u.Id.ToString(),
 FirstName: u.firstName,
 LastName:  u.lastName,
 Status:    u.status,
})
}


вот такой вариант, но даже он мне не нравится
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
это дулирование кода, что не есть гут
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Dmitry
func (u *User) ToJson() ([]byte, error) {
return json.Marshal(struct {
 Id        string
 FirstName string
 LastName  string
 Status    bool
}{
 Id:        u.Id.ToString(),
 FirstName: u.firstName,
 LastName:  u.lastName,
 Status:    u.status,
})
}


вот такой вариант, но даже он мне не нравится
источник

SA

Saimon Arzin in Golang Developers — русскоговорящее сообщество
Dmitry
это дулирование кода, что не есть гут
согласен, но иногда приходится идти на компромиссы
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
Saimon Arzin
согласен, но иногда приходится идти на компромиссы
я это прекрасно понимаю, мои вопросы совсем могут быть нубские и туповаты, я только учусь голангу и пробую привычные мне методы разработки и приемы которые я получил в других языках
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
большое вам спасибо
источник

SA

Saimon Arzin in Golang Developers — русскоговорящее сообщество
Dmitry
я это прекрасно понимаю, мои вопросы совсем могут быть нубские и туповаты, я только учусь голангу и пробую привычные мне методы разработки и приемы которые я получил в других языках
да не, все норм
кто-то знает чуть больше, кто-то чуть больше в другой области. это нормально
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Dmitry
я это прекрасно понимаю, мои вопросы совсем могут быть нубские и туповаты, я только учусь голангу и пробую привычные мне методы разработки и приемы которые я получил в других языках
Лучше не переносить практики из других языков на го.
Большая часть практик и  шаблонов порождены проблемами той или иной платформы и призваны их решать.
В гошке многих проблем нет, но есть куча своих, именно поэтому слепое копирование тех или иных практик может только хуже сделать)
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
x-foby
Лучше не переносить практики из других языков на го.
Большая часть практик и  шаблонов порождены проблемами той или иной платформы и призваны их решать.
В гошке многих проблем нет, но есть куча своих, именно поэтому слепое копирование тех или иных практик может только хуже сделать)
ну, всякие там ддд и разделение ответственности и тп применимо ко всем языкам
я просто пробую применить их на голанге
источник

D

Dmitry in Golang Developers — русскоговорящее сообщество
сейчас пробую банальное создание сущности и ее гидрации
источник