[#] [Перевод] Как Discord каждый день изменяет размер 150 млн картинок с помощью Go и C++
habrabot(difrex,1) — All
2017-11-28 19:30:07


![][1]

Хотя Discord — это приложение для голосового и текстового чата, каждый день через него проходит более ста миллионов изображений. Конечно, мы бы хотели, чтобы задача была простой: просто перенаправить картинки вашим друзьям по всем каналам. Но в реальности доставка этих изображений создаёт довольно большие технические проблемы. Прямая ссылка на картинки выдаст хосту с картинкой IP-адреса пользователей, а большие изображения расходуют много трафика. Чтобы избежать этих проблем, требуется промежуточный сервис, который будет получать изображения для пользователей и изменять их размер для экономии трафика.


# Встречайте Image Proxy


Для выполнения этой работы мы создали сервис Python и креативно назвали его _Image Proxy_. Он загружает картинки с удалённых URL, а затем выполняет ресурсоёмкую задачу по ресайзингу с помощью пакета [pillow-simd][2]. Этот пакет работает удивительно быстро, используя где только возможно для ускорения ресайзинга [инструкции x86 SSE][3]. Image Proxy будет получать HTTP-запрос, содержащий URL, чтобы загрузить, изменить размер и, наконец, выдать окончательное изображение.
[Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/201/bce/32b/201bce32b07895b92f2cb2026ae6c708.png
[2]: https://github.com/uploadcare/pillow-simd
[3]: https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions
[4]: https://habrahabr.ru/post/343414/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut