- PVSM.RU - https://www.pvsm.ru -

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

image

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

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

1. Новости

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. Почитать

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

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

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

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

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

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

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

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

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

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

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

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

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

3. Мудрость

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

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

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

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

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

4. Юмор

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

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

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

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

Автор: devozerov

Источник [36]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/121352

Ссылки в тексте:

[1] влили: http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/c5467b18921b

[2] bugs.openjdk.java.net/browse/JDK-8139233: https://bugs.openjdk.java.net/browse/JDK-8139233

[3] появляется: http://www.oracle.com/technetwork/java/javase/8u92-relnotes-2949471.html

[4] открывает: https://github.com/linkedin/ambry

[5] подробнейшим описанием: https://engineering.linkedin.com/blog/2016/05/introducing-and-open-sourcing-ambry---linkedins-new-distributed-

[6] engineering.linkedin.com: https://engineering.linkedin.com

[7] взломе LinkedIn и утечке паролей: http://www.tripwire.com/state-of-security/security-awareness/117-million-linkedin-email-addresses-and-passwords-put-up-for-sale/

[8] github.com/twitter/distributedlog: https://github.com/twitter/distributedlog

[9] blog.twitter.com/2015/building-distributedlog-twitter-s-high-performance-replicated-log-service: https://blog.twitter.com/2015/building-distributedlog-twitter-s-high-performance-replicated-log-service

[10] Stu Hood: https://www.linkedin.com/in/stu-hood-6b65633

[11] оценил: https://news.ycombinator.com/item?id=11680715

[12] упав: http://www.investopedia.com/articles/markets/050416/twitter-stock-falls-alltime-low-twtr.asp

[13] анонсировал: https://aws.amazon.com/ru/about-aws/whats-new/2016/05/now-available-x1-instances-the-largest-amazon-ec2-memory-optimized-instance-with-2-tb-of-memory/

[14] www.businessinsider.com: http://www.businessinsider.com

[15] измеряется: http://www.businessinsider.com/amazons-big-increase-in-aws-operating-margins-2016-4

[16] https://www.infoq.com/interviews/thompson-high-performance-java/: https://www.infoq.com/interviews/thompson-high-performance-java/

[17] https://github.com/danluu/post-mortems: https://github.com/danluu/post-mortems

[18] http://marcelinorc.com/2016/05/11/phases-of-the-java-hostpot-c2s-compiler/: http://marcelinorc.com/2016/05/11/phases-of-the-java-hostpot-c2s-compiler/

[19] jcstress: http://openjdk.java.net/projects/code-tools/jcstress/

[20] http://stackoverflow.com/questions/37240208/reordering-of-reads/37241534#37241534: http://stackoverflow.com/questions/37240208/reordering-of-reads/37241534#37241534

[21] Java Memory Model: https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html

[22] #WriteCleanCode: https://twitter.com/hashtag/WriteCleanCode?src=hash

[23] 10 мая 2016 г.: https://twitter.com/_ericelliott/status/729868612039790592

[24] 11 мая 2016 г.: https://twitter.com/shipilev/status/730437933271011329

[25] 13 мая 2016 г.: https://twitter.com/plborrill/status/730964914584485892

[26] @jbrains: https://twitter.com/jbrains

[27] @JasonKerney: https://twitter.com/JasonKerney

[28] 15 мая 2016 г.: https://twitter.com/tottinge/status/731980157427273728

[29] pic.twitter.com/1QJnf8Gnps: https://t.co/1QJnf8Gnps

[30] 19 мая 2016 г.: https://twitter.com/leanstartup/status/733212088626085888

[31] решили: https://twitter.com/pjf/status/730215052750381056

[32] #microservices: https://twitter.com/hashtag/microservices?src=hash

[33] pic.twitter.com/QfUWIVzhgD: https://t.co/QfUWIVzhgD

[34] 15 мая 2016 г.: https://twitter.com/tweets_so_fresh/status/731930759884234753

[35] 16 мая 2016 г.: https://twitter.com/jdub/status/732053666765537281

[36] Источник: https://habrahabr.ru/post/301402/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best