Структура резюме:
- python
- django-app: выдержки из проекта django-rest-framework/django-rest-framework-json-api. Права на код принадлежат работодателю, поэтому основная часть кода скрыта для соблюдения условий NDA.
- memdisk.py: отдельно взятый модуль оптимизации загрузки данных в систему. Причина необходимости использования:
- в эластике хранится несколько миллионов товаров. Каждый товар может быть найден по нескольким категориям. При индексации товаров необходимо выполнить каждый запрос категории и обновить информацию по товару. Т.к. обновление в эластике ресурсозатратно, нужна возможность собрать все товары локально и сбросить их в эластик пакетно. Сбор в оперативной памяти может съесть всю доступную память сервера. Данный модуль позволяет держать в памяти только индексы товаров, а собственно бинарное представление - в открытом файле. Это решает проблему производителньости и не нагружает память.
- nodejs: содержит небольшое приложение на плотформе nodejs для реализации асинхронной обработки задач на основании мониторинга elastic-бд и прослушивания очереди rabbitmq
- js:
- vue-component: небольшой vue-2 компонент
- angular-component: небольшой angular-2 компонент
- router.module.js: router, написанный на jquery + History js
- elastic: содержит структуру индекса данных товаров + модуль-обертка над операциями эластика через elasticsearch-py и elasticsearch-dsl
- c:
- linprog.c: по сути - оптимизированный вариант реализации модуля https://docs.scipy.org/doc/scipy/reference/optimize.linprog-simplex.html
- BNetwork.c: входной файл python-extension для возможности исползования libuv с максимальной производительностью. Расширение принимает на вход параметры режима работы, затем случает поступление новых url и возвращает уже полученный ответ от целевой страницы.
- BProxySocks5.c: один из файлов сетевого модуля: выполняет обработку протокола socks5