Дайджест интересных событий из мира Java, и вокруг нее #2 (09.05.2016 — 22.05.2016)

в 6:15, , рубрики: .net, java, java дайджест twitter linkedin, Программирование, метки:

image

В этом выпуске

— Новики в Java: иммутабельные коллекции в JDK9, новые опции для обработки out-of-memory в JDK8
— Как зареордерить чтения на x86?
— Опен-сорс наступает: гиганты IT индустрии выкладывают новые фреймворки
— «Слухи о моей смерти сильно преувеличены»: Twitter на защите Scala
— Терабайты RAM в облаке: новое предложение от Amazon
— Как HR-ы Google приглашают на собеседование?
… и многое другое

1. Новости

1.1. Иммутабельные коллекции в Java 9

В JDK9 влили иммутабельные коллекции. Да не простые, а компактные! Например, пары ключ-значение в Map хранятся в обычном массиве, внутри которого они расположены согласно хэша ключей.

Оригинальный JIRA-тикет: bugs.openjdk.java.net/browse/JDK-8139233

1.2. Новые опции для обработки out-of-memory в Java 8

Начиная с последнего релиза восьмерки 8u92, в JVM появляется два новых флажка: CrashOnOutOfMemoryError и ExitOnOutOfMemoryError. Обе опции грохают Java-процесс при возникновении первого OutOfMemoryError.

Очень полезная фича. В случае OOM серверные приложения могут очень долго не реагировать на внешние воздействия. Единственное, что с ними можно сделать в этом случае — прибить руками. В случае использования этих опций Java-процесс умрет сам собой, а в случае CrashOnOutOfMemoryError еще и создаст крэш-дамп.

1.3. LinkedIn открыл исходный код распределенного хранилища Ambry

Когда компания масштаба LinkedIn открывает исходники своих продуктов, это всегда интересно. Когда это сопровождается подробнейшим описанием архитектуры системы и историей ее создания — это интересно вдвойне.

В двух словах, Ambry работает примерно так:
image
Источник: engineering.linkedin.com

Ну а если серьезно, то обязательно прочитайте статью от и до. Такое подробное описание мотивации и процесса принятия технических решений будет в миллион раз полезней, чем чтение сухих исходников на GitHub.

Любопытно, что через некоторое время после выхода статьи, появилась информация о взломе LinkedIn и утечке паролей. Многим из вас наверняка пришло письмо счастья с рекомендацией поменять пароль. Простое совпадение? Не думаю.

1.4. Twitter открыл исходный код системы для распределенного логирования DistributedLog

Когда компания масштаба… ну вы поняли.

Репозиторий: github.com/twitter/distributedlog
Описание архитектуры: blog.twitter.com/2015/building-distributedlog-twitter-s-high-performance-replicated-log-service

1.5. Сколько Scala в Twitter?

Хроники умирающей Scala. Stu Hood, инженер Twitter, оценил долю бэкэнда, написанного на Scala в 50%. Хорошо это или плохо, жива Scala или нет — решайте сами.

Любопытно, что буквально за неделю до этого акции Twitter едва не обновили свой абсолютный минимум, упав до отметки 13.90$ за акцию. Простое совпадение? Не думаю.

1.6. X1 — новый продукт Amazon

Amazon анонсировал выход нового флагманского инстанса X1. Что бы вы понимали — 128 ядер, 2Tb оперативки, 10Gbps сеть. Компания любезно предлагает переносить на эти инстансы Ваши SAP-ы, Spark-и, и прочие монструозные конструкции.

image
Источник: www.businessinsider.com

Это звоночек. Понятно, что за активное использование таких мощностей придется отваливать Amazon очень серьезные суммы. Но это сейчас, когда операционная прибыль Amazon Web Services измеряется десятками процентов. Пройдет несколько десятков лет, железо еще больше подешевеет, конкуренция усилится, маржа упадет, и покупка серверного hardware станет редкостью.

2. Почитать

2.1. Интервью Мартина Томпсона

Ссылка: https://www.infoq.com/interviews/thompson-high-performance-java/

Интересный разговор про сеть, профайлеры, аллокации и производительность.

2.2. Post-mortem: разбор причин падений известных сервисов и приложений

Ссылка: https://github.com/danluu/post-mortems

Крайне занимательный репозиторий, в котором собраны ссылки на описание причин всевозможных багов, аутэджей и прочих проблем популярных сервисов и приолжений, таких как Amazon, Google, Microsoft и т.д.

Захватывающее чтиво, в духе «в дата-центр A ударила молния, из-за этого возрос трафик на дата-центр B, но в его ПО была concurrency-бага, которая воспроизводилась только под нагрузкой, в итоге половина наших сервисов померла». Заставляет задуматься о пределе человеческих возможностей в обуздании распределенных систем.

2.3. Статья о внутренностях C2-компилятора

Ссылка: http://marcelinorc.com/2016/05/11/phases-of-the-java-hostpot-c2s-compiler/

Для любителей хардкора. В статье рассказано о том, как С2 анализирует код, и какие конкретно оптимизации применяет. Все это снабжено ссылками на соответствующие исходники OpenJDK.

2.4. Демонстрация «реордеринга» на примере теста из jcstress

Ссылка: http://stackoverflow.com/questions/37240208/reordering-of-reads/37241534#37241534

Алексей Шипилев наглядно показывает, как игнорирование Java Memory Model может приводить к непредсказуемым последствиям даже на достаточно спокойных архитектурах, вроде x86. Никакой Total Store Ordering вас не спасет.

3. Мудрость

3.1. О жизненном цикле Вашего кода

3.2. Бенчмарки: приятные цифры или корректность на примере GC

3.3. О дистрибутивных системах

3.4. Про отношение к багам

3.5. О том, какой должна быть первая версия Вашего продукта

4. Юмор

4.1. Хайрим правильно

HR-ы Google решили проблему найма персонала. Теперь они создают позиции под конкретного человека.
image

4.2. Последствия перехода на микросервисную архитектуру

4.3. А это поймут только опен-сорсники

Автор: devozerov

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js