Refactoring

This commit is contained in:
2023-12-12 10:02:45 +03:00
parent 08a7c9c04f
commit 309da64677
4 changed files with 7 additions and 33 deletions

View File

@@ -20,8 +20,8 @@
## Discovery ## Discovery
Для поиска соседей используется механизм рассылки широковещательных сообщений. Для поиска соседей используется механизм рассылки широковещательных сообщений.
Каждая нода периодически рассылает широковещательные сообщения со своим ip адресом. Каждая нода периодически рассылает широковещательные сообщения со своим ip адресом, а так же
Каждая нода так же случает широковещательные сообщения на том же порту и сохраняет случает широковещательные сообщения на том же порту и сохраняет
у себя уникальный список полученных адресов. Все новые адреса отправляются в у себя уникальный список полученных адресов. Все новые адреса отправляются в
отдельный канал. За регистрацию отпадающих нод отвечает сервис рассылки сообщений, отдельный канал. За регистрацию отпадающих нод отвечает сервис рассылки сообщений,
уведомляя о них discovery сервис через отдельный канал. уведомляя о них discovery сервис через отдельный канал.
@@ -31,8 +31,8 @@
## Рассылка сообщений ## Рассылка сообщений
Сервис рассылки сообщений получает новые адреса нод от discovery сервиса и Сервис рассылки сообщений получает новые адреса нод от discovery сервиса через выделенный канал
создаёт стрим для каждого полученного адреса ноды. При отключении стрима отправляет и создаёт стрим для каждого полученного адреса ноды. При отключении стрима отправляет
сообщение с ip адресом отвалившейся ноды в discovery сервис. сообщение с ip адресом отвалившейся ноды в discovery сервис.
В каждый стрим периодически (период настраиваем) отправляется строка, которую В каждый стрим периодически (период настраиваем) отправляется строка, которую

View File

@@ -31,7 +31,7 @@ func main() {
log.Sugar().Infof("Start service version %s", version) log.Sugar().Infof("Start service version %s", version)
app, err := application.NewApplication(&cfg, log) app, err := application.NewApplication(cfg, log)
if err != nil { if err != nil {
log.Error("new application", zap.Error(err)) log.Error("new application", zap.Error(err))

View File

@@ -19,7 +19,7 @@ type Application struct {
log *zap.Logger log *zap.Logger
} }
func NewApplication(cfg *Config, log *zap.Logger) (*Application, error) { func NewApplication(cfg Config, log *zap.Logger) (*Application, error) {
discoveryOpts := []discovery.Option{ discoveryOpts := []discovery.Option{
discovery.WithBroadcastInterval(cfg.BroadcastInterval), discovery.WithBroadcastInterval(cfg.BroadcastInterval),
} }
@@ -62,30 +62,3 @@ func (a *Application) Start(ctx context.Context, wg *sync.WaitGroup) {
go a.messenger.StartServer(ctx, wg) go a.messenger.StartServer(ctx, wg)
go a.messenger.Start(ctx, wg) go a.messenger.Start(ctx, wg)
} }
var _ = `
s1-1 | Received 'apq34yod73' from <172.19.0.5>
s1-1 | Received 'cbtfl716li' from <172.19.0.3>
s1-1 | Received 'n84fg3mx9o' from <172.19.0.2>
s1-1 | Received 'zb98146fqz' from <172.19.0.4>
s2-1 | Received '7h1s9ruilr' from <172.19.0.2>
s2-1 | Received 'aij179r0ck' from <172.19.0.3>
s2-1 | Received 'm3k0snj7ma' from <172.19.0.6>
s2-1 | Received 'tw5726fo7e' from <172.19.0.5>
s3-1 | Received '32d20marhg' from <172.19.0.6>
s3-1 | Received 'ffs9pi6o9j' from <172.19.0.3>
s3-1 | Received 'wcso6aashe' from <172.19.0.5>
s3-1 | Received 'wfhcy9xbdj' from <172.19.0.4>
s4-1 | Received '2le3u1ikyg' from <172.19.0.2>
s4-1 | Received '5locacst6w' from <172.19.0.4>
s4-1 | Received 'cf47nyd2ca' from <172.19.0.6>
s4-1 | Received 'guvfhb7wud' from <172.19.0.5>
s5-1 | Received 'dsr7qt2x5l' from <172.19.0.3>
s5-1 | Received 'l67gc5xdt3' from <172.19.0.2>
s5-1 | Received 'mof0yp4vxt' from <172.19.0.6>
s5-1 | Received 'slc9tw30r4' from <172.19.0.4>
`

View File

@@ -54,6 +54,7 @@ type Messenger struct {
func (m *Messenger) Start(ctx context.Context, wg *sync.WaitGroup) { func (m *Messenger) Start(ctx context.Context, wg *sync.WaitGroup) {
defer wg.Done() defer wg.Done()
defer close(m.FailNodesCh)
for { for {
select { select {