Skip to content

simple custom load balancer written in pure java using netty http client

Notifications You must be signed in to change notification settings

attebjorner/load-balancer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Конфиг

Пример конфига:

port: 8082 # порт, на котором будет развернут балансер, по дефолту 8080
services: # список сервисов, которые надо балансировать
  - healthUrl: http://en.wikipedia.org/health # url, по которому балансер будет проверять, живой ли сервис (из этого же url-а берутся значения для host и port)
    failureThreshold: 3 # количество неуспешных ответов, после которого сервис выводится из балансировки, по дефолту 3
    successThreshold: 3 # количество успешных ответов от сервиса, после которого он опять вводится в балансировку, по дефолту 3
  - healthUrl: http://google.com/health
    failureThreshold: 3
    successThreshold: 3
timeout: 500 # в ms, превышение таймаута считается как fail для сервиса
delay: 5000 # с какой периодичностью опрашивать сервисы, живы ли они, в ms, по дефолту 3000
threadPoolSize: 4 # размер пула балансера, по дефолту 6
extraCodesToFailOn: # по дефолту будет считаться, что сервис не работает, только если он вернул код из 5xx, здесь можно дописать доп кода, по которым сервис так же должен считаться упавшим
  - 429

Путь до конфига берется из переменной окружения BALANCER_CONFIG

Примеры работы сервиса

Делались с конфигом, где все пороги = 1

Посылает запросы по очереди на каждый из сервисов в списке. Если один из сервисов не работает, он скипается до тех пор, пока не заработает снова.

Если ни один из сервисов не работает, то запросы все равно будут рассылаться подряд на сервисы из списка, пока хотя бы один из них не заработает

  1. Когда оба сервиса живы, запросы рассылаются поочередно на каждый в списке scheme
  2. Когда один из сервисов лежит, запросы рассылаются на живой из них: здесь мастер лежит, все запросы уходят на живую реплику
    scheme

Как запускать

mvn clean install # соберет jar и скопипастирует его в docker/
docker-compose up

About

simple custom load balancer written in pure java using netty http client

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published