Skip to content

gitnabi/coa-serialization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Пример сборки и запуска:

GROUP_UDP_ADDR="224.0.0.1:9000" docker compose up --build -d

Подключиться к прокси для тестирования:

nc -u localhost 2000

Прокси обрабатывает два типа команд:

get_result <native/xml/json/protobuf/avro/yaml/message_pack>
get_result all

Внутренние детали:

  • образы контейнеров скачиваются из докерхаба
  • контейнер прокси слушает 2000 порт, который прокинут на хост. После получения команды, прокси запрашивает бенчмарки и результат возвращает на клиент
  • контейнеры, которые проводят бенчмарк, прослушивают два адреса: уникальный адрес в сети и мультикаст адрес. Для обработки двух адресов запускаются две горутины
  • все контейнеры объединены в одну bridge сеть(все они могут общаться друг с другом по <имя сервиса>:<прослушиваемый порт>)
  • есть возможность задать мультикаст адрес через переменную окружения GROUP_UDP_ADDR. При инициализации контейнера, проверяется корректность адреса.
  • есть возможность для контейнеров выбрать уровень логирования, указав значение APP_ENVIRONMENT в файле docker-compose.yaml:
    • если указать debug и testing, то логи будут выводиться до уровня DEBUG
    • если указать pre_prod и prod, то логи будут выводиться до уровня INFO

Иллюстрация подключения к прокси и получения замеров сериализации и десериализации:

❯ nc -u localhost 2000
get_result xml
xml:
	size of serialized data  	225 bytes
	serialization duration   	52µs
	deserialization duration 	32µs
get_result all
xml:
	size of serialized data  	225 bytes
	serialization duration   	49µs
	deserialization duration 	41µs
avro:
	size of serialized data  	44 bytes
	serialization duration   	72µs
	deserialization duration 	49µs
message_pack:
	size of serialized data  	84 bytes
	serialization duration   	23µs
	deserialization duration 	18µs
json:
	size of serialized data  	115 bytes
	serialization duration   	77µs
	deserialization duration 	27µs
protobuf:
	size of serialized data  	132 bytes
	serialization duration   	269µs
	deserialization duration 	18µs
native:
	size of serialized data  	147 bytes
	serialization duration   	182µs
	deserialization duration 	75µs
yaml:
	size of serialized data  	131 bytes
	serialization duration   	106µs
	deserialization duration 	105µs

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors