Привет! В выпуске ограничиваем скорость загрузки с сервера, кэшируем данные из монги в редисе и разбираемся со статической компиляцией в Джаве 9.
https://dzone.com/articles/enabling-caching-in-mongodb-database-with-redis-us
Caching in MongoDB With Redis Using Spring Boot
В статье рассказывается, как можно ускорить работу с монгой, подключив редис кэш, “без регистрации и смс”, точнее без XML конфигурации.
https://blog.twitter.com/2016/simplify-service-dependencies-with-nodes
Simplify Service Dependencies with Nodes
Инженеры из твиттера рассказывают о том как они боролись с ростом количества запросов к “микросервисам поиска” в приложении. В статье — сражение с циклическими зависимостями данных, асинхронные запросы, собственная опенсорс библиотека Finagle.
http://jug.ru/2016/12/aot-hotspot/
Время компилировать: Дмитрий Чуйко и Никита Липский про AOT в HotSpot
Статическая компиляция семимильными шагами приходит и в Джава мир. О том для чего она нужна и как все это связано с лозунгом Джава “Write once - run anywhere”. Дисклеймер - Джава идет в сторону iOS, но это не точно.
Кстати, эту статью написал и прислал подписчик. Если у вас есть чем поделиться с любителями джавы, не стесняйтесь присылать ссылки на почту волыхингмэйл
https://plumbr.eu/blog/monitoring/time-in-distributed-systems
Time in distributed systems
Инженеры из Пламбр рассказывают о том, как они синхронизируют время в своих джава агентах. Решение позаимствовано из распределенных систем и будет полезно всем кто интересуется этой темой.
http://book.mixu.net/distsys/single-page.html
**Distributed systems **for fun and profit Джава мир продолжает двигаться в сторону микросервисов и такие термины как пропускная способность, скорость отклика, отказоустойчивость приходят в джаву из распределенных систем. В ссылке небольшая книга о концепциях и терминах распределенных систем.
http://martin.kleppmann.com/2012/12/05/schema-evolution-in-avro-protocol-buffers-thrift.html
Schema evolution in Avro, Protocol Buffers and Thrift
Представьте, что у вас есть несколько микросервисов, которые обмениваются между собой сообщениями. Что вы будете делать если понадобилось добавить поле в одно из сообщений и при этом нельзя перезапускать все микросервисы? Решение есть. Ваши сообщения должны поддерживать “эволюцию схемы” - то есть работать только с теми полями, о которых они знают, а “устаревшие” не использовать.
Мартин Клеппман рассказывает о том как с этой проблемой справились в библиотеках Avro, Protocol Buffers, Thrift.
https://ivanyu.me/blog/2016/12/12/about-akka-streams/
About Akka Streams
Автор рассказывает о том как с помощью Акка Стримов можно декларативно конструировать асинхронные “пайпайны” для обработки данных. Автор простым языком объясняет концепции, которые за этим всем стоят.
http://www.nurkiewicz.com/2015/06/writing-download-server-part-i-always.html?m=1
Writing a download server. Part I: Always stream, never keep fully in memory
Если бы я мог вернуться в прошлое, я передал бы себе следующее послание - “Не клади все данные из файла в массив байтов - используй стримы”. Однажды я
столкнулся с похожим вопросом на собеседовании и провалил тестовое задание. Читайте статью и не делайте как я.
http://www.nurkiewicz.com/2011/03/tenfold-increase-in-server-throughput.html
Tenfold increase in server throughput with Servlet 3.0 asynchronous processing
Представьте, что у вашего приложения появился очень активный пользователь, который только и делает что загружает файлы с вашего сервера. Остальным пользователям перестает хватать скорости и сервер начинает тратить много памяти и процессора. Одно из возможных решений это ограничить скорость загрузки с сервера, или сделать ее контролируемой. Томас рассказывает, как написать сервлет, который будет отдавать файлы с одной и той же скоростью, независимо от того сколько пользователей к нему подключилось.