- PVSM.RU - https://www.pvsm.ru -
— Новики в Java: иммутабельные коллекции в JDK9, новые опции для обработки out-of-memory в JDK8
— Как зареордерить чтения на x86?
— Опен-сорс наступает: гиганты IT индустрии выкладывают новые фреймворки
— «Слухи о моей смерти сильно преувеличены»: Twitter на защите Scala
— Терабайты RAM в облаке: новое предложение от Amazon
— Как HR-ы Google приглашают на собеседование?
… и многое другое
В JDK9 влили [1] иммутабельные коллекции. Да не простые, а компактные! Например, пары ключ-значение в Map хранятся в обычном массиве, внутри которого они расположены согласно хэша ключей.
Оригинальный JIRA-тикет: bugs.openjdk.java.net/browse/JDK-8139233 [2]
Начиная с последнего релиза восьмерки 8u92, в JVM появляется [3] два новых флажка: CrashOnOutOfMemoryError и ExitOnOutOfMemoryError. Обе опции грохают Java-процесс при возникновении первого OutOfMemoryError.
Очень полезная фича. В случае OOM серверные приложения могут очень долго не реагировать на внешние воздействия. Единственное, что с ними можно сделать в этом случае — прибить руками. В случае использования этих опций Java-процесс умрет сам собой, а в случае CrashOnOutOfMemoryError еще и создаст крэш-дамп.
Когда компания масштаба LinkedIn открывает [4] исходники своих продуктов, это всегда интересно. Когда это сопровождается подробнейшим описанием [5] архитектуры системы и историей ее создания — это интересно вдвойне.
В двух словах, Ambry работает примерно так:
Источник: engineering.linkedin.com [6]
Ну а если серьезно, то обязательно прочитайте статью от и до. Такое подробное описание мотивации и процесса принятия технических решений будет в миллион раз полезней, чем чтение сухих исходников на GitHub.
Любопытно, что через некоторое время после выхода статьи, появилась информация о взломе LinkedIn и утечке паролей [7]. Многим из вас наверняка пришло письмо счастья с рекомендацией поменять пароль. Простое совпадение? Не думаю.
Когда компания масштаба… ну вы поняли.
Репозиторий: github.com/twitter/distributedlog [8]
Описание архитектуры: blog.twitter.com/2015/building-distributedlog-twitter-s-high-performance-replicated-log-service [9]
Хроники умирающей Scala. Stu Hood [10], инженер Twitter, оценил [11] долю бэкэнда, написанного на Scala в 50%. Хорошо это или плохо, жива Scala или нет — решайте сами.
Любопытно, что буквально за неделю до этого акции Twitter едва не обновили свой абсолютный минимум, упав [12] до отметки 13.90$ за акцию. Простое совпадение? Не думаю.
Amazon анонсировал [13] выход нового флагманского инстанса X1. Что бы вы понимали — 128 ядер, 2Tb оперативки, 10Gbps сеть. Компания любезно предлагает переносить на эти инстансы Ваши SAP-ы, Spark-и, и прочие монструозные конструкции.
Источник: www.businessinsider.com [14]
Это звоночек. Понятно, что за активное использование таких мощностей придется отваливать Amazon очень серьезные суммы. Но это сейчас, когда операционная прибыль Amazon Web Services измеряется [15] десятками процентов. Пройдет несколько десятков лет, железо еще больше подешевеет, конкуренция усилится, маржа упадет, и покупка серверного hardware станет редкостью.
Ссылка: https://www.infoq.com/interviews/thompson-high-performance-java/ [16]
Интересный разговор про сеть, профайлеры, аллокации и производительность.
Ссылка: https://github.com/danluu/post-mortems [17]
Крайне занимательный репозиторий, в котором собраны ссылки на описание причин всевозможных багов, аутэджей и прочих проблем популярных сервисов и приолжений, таких как Amazon, Google, Microsoft и т.д.
Захватывающее чтиво, в духе «в дата-центр A ударила молния, из-за этого возрос трафик на дата-центр B, но в его ПО была concurrency-бага, которая воспроизводилась только под нагрузкой, в итоге половина наших сервисов померла». Заставляет задуматься о пределе человеческих возможностей в обуздании распределенных систем.
Ссылка: http://marcelinorc.com/2016/05/11/phases-of-the-java-hostpot-c2s-compiler/ [18]
Для любителей хардкора. В статье рассказано о том, как С2 анализирует код, и какие конкретно оптимизации применяет. Все это снабжено ссылками на соответствующие исходники OpenJDK.
Ссылка: http://stackoverflow.com/questions/37240208/reordering-of-reads/37241534#37241534 [20]
Алексей Шипилев наглядно показывает, как игнорирование Java Memory Model [21] может приводить к непредсказуемым последствиям даже на достаточно спокойных архитектурах, вроде x86. Никакой Total Store Ordering вас не спасет.
The code does not belong to you. It is in your care for a time. Others may need to use it, maintain it, or patch it. #WriteCleanCode [22]
— Eric Elliott (@_ericelliott) 10 мая 2016 г. [23]
Stop trying to avoid GC in your benchmarks! If a code produces garbage, it has to pay with GC. And that should affect performance metrics.
— Aleksey Shipilëv (@shipilev) 11 мая 2016 г. [24]
The principle “single source of truth” is responsible for more bad design in distributed systems than any other misguided principle we know
— Paul Borrill (@plborrill) 13 мая 2016 г. [25]
Many teams spend > 70% time fixing bugs.
If zero bugs, they'd be > 3x productive.
The safe way is the fast way. @jbrains [26] @JasonKerney [27]— Tim Ottinger (@tottinge) 15 мая 2016 г. [28]
A nice way to visualize what an MVP (Minimum Viable Product) should accomplish pic.twitter.com/1QJnf8Gnps [29]
— Lean Startup Co. (@leanstartup) 19 мая 2016 г. [30]
HR-ы Google решили [31] проблему найма персонала. Теперь они создают позиции под конкретного человека.
when u have converted everything to #microservices [32] pic.twitter.com/QfUWIVzhgD [33]
— fresh tweets (@tweets_so_fresh) 15 мая 2016 г. [34]
Hopen Source, n. When a company throws a complex codebase over the wall, believing a community will magically form to fix and support it.
— Jeff Waugh (@jdub) 16 мая 2016 г. [35]
Автор: 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
Нажмите здесь для печати.