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

No packages published