Как стать автором
Обновить

Taskurotta или управление процессами в распределенной системе

Программирование *Java *Amazon Web Services *
Из песочницы
Добрый день, хабраюзер!

Есть у нас задача связывать различные сервисы и существующие системы в управляемые процессы. Скорость нужна не космическая (т.е. не по биржевым котировкам отклик создавать), но зато процессов много и компонент (систем) которые нужно использовать тоже порядочно вырисовывается. Не хочется делать p2p связывание. Хочется чего-то красивого и управляемого.

Просмотрев рынок, было принято решение сделать реплику по мотивам Amazon Simple Workflow, так как использовать его напрямую мы не можем. Свойства фреймворка которые нам подходят:
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 5.7K
Комментарии 8

Исследуем и тестируем очереди от Hazelcast

Высокая производительность *Java *Big Data *
Многие из нас слышали о Hazelcast. Это удобный продукт, который реализует различные распределенные объекты. В частности: key-value хранилища, очереди, блокировки и т.д. К нему в целом применяются утверждения о распределенности, масштабируемости, отказоустойчивости и другие положительные свойства.

Так ли это применительно к его реализации очередей? Где границы их использования? Это мы и попытаемся выяснить.
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 41K
Комментарии 5

Исследуем и тестируем распределенные вычисления от Hazelcast

Высокая производительность *Java *Big Data *
Продолжаем тестировать Hazelcast. В предыдущем посте мы познакомились с его очередями. А в этом мы более внимательно взглянем на его возможность распределенного выполнения задач.

Работать с данными гораздо эффективнее как можно ближе к ним, а не выкачивать «к себе», потом считать и\или изменять и отправлять обратно в распределенное хранилище. Именно такую возможность нам предоставляет Hazelcast в виде распределенной реализации ExecutorService. Можно управлять и тем, на каких серверах хранить данные, группируя их по общему ключу, и запускать задачи на нужных серверах, используя тот-же ключ.

Мы попытаемся выяснить — так ли это и есть ли какие подводные камни?

Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 7.1K
Комментарии 3

Hazelcast 3.3 — что нового?

Высокая производительность *Java *Big Data *
Позавчера, 9 сентября, вышла новая версия Hazelcast — 3.3.

Кратко: Heartbeat для клиентов, кластеризация сессий для Tomcat 6 и 7, новая Replicated Map, улучшенная WAN Replication, улучшенный Data Aggregation, функциональность EvictAll и LoadAll для IMap.

Подробнее ...
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 9.5K
Комментарии 14

Обзор Java-конференции JPoint 2016

Блог компании JUG Ru Group Java *
22-23 апреля 2016 года в четвёртый раз прошла конференция JPoint, в т.ч. уже в третий раз подряд в Москве. В конференции приняли участие более 1000 Java-разработчиков, на 4 параллельных треках было прочитано 48 докладов. Далее приводятся подробности о прошедшей конференции.


Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Просмотры 14K
Комментарии 25

Виктор Гамов об In-Memory Data Grids и Hazelcast на jug.msk.ru

Блог компании JUG Ru Group Java *
На очередной встрече jug.msk.ru, прошедшей 4 мая 2016 года в офисе компании КРОК, Виктор Гамов рассказал об In-Memory Data Grids вообще и о Hazelcast в частности. Подробности и фотографии со встречи далее.


Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Просмотры 15K
Комментарии 27

JPoint 2017: вспомнить всё

Блог компании JUG Ru Group Java *
Продолжение начатой в статье с подведением итогов JBreak и JPoint темы Java-конференции JPoint 2017, проводившейся 7-8 апреля 2017 года в Москве стараниями JUG.ru Group.

Ещё больше фотографий, подробностей о докладах и больше впечатлений.


Читать дальше →
Всего голосов 35: ↑32 и ↓3 +29
Просмотры 8.9K
Комментарии 4

Что, если выкинуть все лишнее из базы в распределенный кэш – наш опыт использования Hazelcast

Блог компании ЮMoney Высокая производительность *Open source *Анализ и проектирование систем *Разработка под e-commerce *


Так как базы данных Яндекс.Денег вынуждены хранить массу второстепенной и временной информации, однажды такое решение перестало быть оптимальным. Поэтому в инфраструктуре появился распределенный Data Grid с функциями in-memory базы данных на базе Hazelcast.


В обмен на стабильно высокую производительность и отказоустойчивость мы получили любопытный опыт внедрения, который не во всем повторяет документацию. Под катом вы найдете рассказ о решении проблем Hazelcast при работе под высокой нагрузкой, борьбе со Split Brain, а также впечатления от работы с распределенным хранилищем данных в большой инфраструктуре.

Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Просмотры 51K
Комментарии 17

Что посмотреть на выходных? Обзор лучших докладов в свободном доступе. Часть вторая, JBreak 2017

Блог компании JUG Ru Group Java *Hadoop *

Что можно посмотреть вечером или на этих выходных? Можно смотреть какие-нибудь фильмы, а можно — наш непрекращающийся сериал под названием «Java-конференции». Единственный сериал, после просмотра которого у вас может радикально увеличиться зарплата.


Вчерашняя статья про JPoint 2017 оказалась удивительно успешной. У неё почти не было комментариев, но на данный момент — 88 закладок. То есть статья попала в цель: люди добавляют в закладки и смотрят — ура. Буквально в первый час её пришел читать сам Сатана.


Сегодня мы будем действовать по старой схеме: я для вас отсматриваю подряд 10 докладов, делаю короткое описание содержимого, чтобы неинтересное можно было выбросить. Кроме того, с сайтов собираю ссылки на слайды и описания. Полученное сортирую и выдаю в порядке увеличения рейтинга — то есть в самом низу будет самый крутой доклад. Оценки — это не лайки на YouTube, а наша собственная оценочная система, она круче лайков.



Читать дальше →
Всего голосов 37: ↑33 и ↓4 +29
Просмотры 14K
Комментарии 3

Как перейти на микросервисы и не разломать production

Блог компании True Engineering Высокая производительность *Управление продуктом *DevOps *
Сегодня расскажем, как переводили на микросервисы монолитное решение. Через наше приложение круглосуточно проходит от 20 до 120 тысяч транзакций в сутки. Пользователи работают в 12 часовых поясах. В то же время функционал добавлялся много и часто, что довольно сложно делать на монолите. Вот почему системе требовались устойчивая работа в режиме 24/7, то есть HighLoad, High Availability и Fault Tolerance.

Мы развиваем этот продукт по модели MVP. Архитектура менялась в несколько этапов вслед за требованиями бизнеса. Первоначально не было возможности сделать всё и сразу, потому что никто не знал, как должно выглядеть решение. Мы двигались по модели Agile, итерациями добавляя и расширяя функциональность.


Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 14K
Комментарии 9

Как и зачем мы написали высоконагруженный масштабируемый сервис для 1С: Предприятия: Java, PostgreSQL, Hazelcast

Блог компании 1С PostgreSQL *Java *Анализ и проектирование систем *Облачные сервисы *
В этой статье расскажем о том, как и для чего мы разработали Систему Взаимодействия – механизм, передающий информацию между клиентскими приложениями и серверами 1С:Предприятия – от постановки задачи до продумывания архитектуры и деталей реализации.

Система Взаимодействия (далее – СВ) – это распределенная отказоустойчивая система обмена сообщениями с гарантированной доставкой. СВ спроектирован как высоконагруженный сервис с высокой масштабируемостью, доступен и как онлайновый сервис(предоставляется фирмой 1С), и как тиражный продукт, который можно развернуть на своих серверных мощностях.

СВ использует распределенное хранилище Hazelcast и поисковую систему Elasticsearch. Еще речь пойдет о Java и о том, как мы горизонтально масштабируем PostgreSQL.
image
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 27K
Комментарии 85

Наш опыт создания API Gateway

Блог компании True Engineering .NET *Nginx *API *
Некоторые компании, в том числе наш заказчик, развивают продукт через партнерскую сеть. Например, крупные интернет-магазины интегрированы со службой доставки — вы заказываете товар и вскоре получаете трекинговый номер посылки. Другой пример — вместе с авиабилетом вы покупаете страховку или билет на аэроэкспресс.

Для этого используется один API, который нужно выдать партнерам через API Gateway. Эту задачу мы и решили. В этой статье расскажем подробности.

Дано: экосистема и API-портал с интерфейсом, где пользователи зарегистрированы, получают информацию и т.п. Нам нужно сделать удобный и надежный API Gateway. В процессе нам нужно было обеспечить

  • регистрацию,
  • контроль подключения к API,
  • мониторинг того, как пользователи используют конечную систему,
  • учёт бизнес-показателей.



В статье мы расскажем о нашем опыте создания API Gateway, в ходе которого мы решали следующие задачи:

  • аутентификация пользователя,
  • авторизация пользователя,
  • модификация исходного запроса,
  • проксирование запроса,
  • постобработка ответа.

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 19K
Комментарии 3

Как мы делаем Спортмастер

Блог компании Sportmaster Lab Разработка под e-commerce *
Всем привет! Уверен, многие из вас когда-нибудь покупали майку, мяч, кроссовки, ну или какой-нибудь другой спортивный инвентарь в наших магазинах, но мало кто знает, что из себя представляет Спортмастер с технической точки зрения.


Немного Спортмастера образца 2003 года с сайта web.archive.org

Меня зовут Дмитрий, я старший java-разработчик в компании Спортмастер, и сегодня я хотел бы рассказать о нашем интернет-магазине, о том, какой путь он проделал, чтобы стать тем, каким вы его знаете сейчас: с чего мы начинали, как развивались, что получилось, а что нет, о проблемах сегодня, и о планах на будущее. Интересно? Добро пожаловать под кат!
Читать дальше →
Всего голосов 43: ↑31 и ↓12 +19
Просмотры 12K
Комментарии 31

Как распилить монолит на сервисы и сохранить производительность In-memory кэшей без потери консистентности

Блог компании TINKOFF Java *Распределённые системы *Kubernetes *

Всем привет. Меня зовут Александр, я Java-разработчик в группе компаний Tinkoff.

В данной статье хочу поделиться опытом решения проблем, связанных с синхронизацией состояния кэшей в распределенных системах. Мы столкнулись с ними, разбивая наше монолитное приложение на микросервисы. Очевидно, что речь здесь пойдет о кэшировании данных на уровне JVM, поскольку с внешними кэшами проблемы синхронизации решаются вне контекста приложения.

В статье я расскажу про наш опыт перехода на сервис-ориентированную архитектуру, сопровождающуюся переездом в Kubernetes, и про решение сопутствующих проблем. Будет рассмотрен подход к организации системы распределенного кэширования In-Memory Data Grid (IMDG), его преимущества и недостатки, из-за которых мы решили написать собственное решение.

В статье рассматривается проект, бэкэнд которого написан на Java. Поэтому речь также пойдет про стандарты в области временного In-memory-кэширования. Обсудим спецификацию JSR-107, несостоявшуюся спецификацию JSR-347, а также особенности кэширования в Spring. Добро пожаловать под кат!
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 7.8K
Комментарии 17

Как мы в Спортмастере выбирали систему кеширования. Часть 1

Блог компании Sportmaster Lab Высокая производительность *Разработка веб-сайтов *Анализ и проектирование систем *IT-инфраструктура *
Привет! Меня зовут Алексей Пьянков, я разработчик в компании Спортмастер. В этом посте я рассказал, как начиналась работа над сайтом Спортмастер в 2012 году, какие инициативы удалось «протолкнуть» и наоборот, какие грабли мы собрали.

Сегодня я хочу поделиться мыслями, которые следуют за другим сюжетом – выбор системы кеширования для java-бэкенда в админке сайта. Этот сюжет имеет особое значение для меня – хотя история разворачивалась всего 2 месяца, но эти 60 дней мы работали по 12-16 часов и без единого выходного. Никогда раньше не думал и не представлял, что можно так много работать.

Поэтому текст разбиваю на 2 части, чтоб не загрузить по полной. Наоборот, первая часть будет очень легкой — подготовкой, введением, некоторыми соображениями, что такое кеширование. Если вы уже опытный разработчик или работали с кешами — с технической стороны ничего нового в этой статье, скорее всего, не будет. А вот для джуниора небольшой такой обзор может подсказать, в какую сторону смотреть, окажись он на таком распутье.


Читать дальше →
Всего голосов 31: ↑30 и ↓1 +29
Просмотры 13K
Комментарии 23

Кеширование. Часть 2: 60 дней до релиза

Блог компании Sportmaster Lab Программирование *Разработка под e-commerce *Управление проектами *
Привет! Я уже писал вам о том, как продвигать инициативы в корпорации. Точнее, как (иногда) это удается, и какие сложности могут возникнуть: Ретроспектива граблей. Как самописное решение оказалось круче платного и Как мы выбирали систему кеширования. Часть 1.

Сегодня я хочу продолжить и рассказать про психологически наиболее напряженный момент в том проекте, про который первые две статьи – когда итог проекта определяли не столько технические навыки команды, сколько уверенность в своих расчетах и готовность идти до конца.

Скажу сразу – я считаю, что довести проект до такого напряженного момента – это ошибка намного большая, чем любой героизм по вытягиванию проекта из такой … проблемы.
Но, этот опыт я не скрываю и охотно делюсь им – потому, что считаю:

  • именно проблемные места – это точки роста
  • наибольшие проблемы «прилетают» именно оттуда, откуда не ждешь

Сочетание этих пунктов – просто обязывает поделиться прекрасным опытом «как заработать переплет на ровном месте». Но, надо отметить, подобная ситуация – является исключительной в компании Спортмастер. То есть, исключено, что такая ситуация повторится – планирование и определение ответственности сейчас – совершенно на другом уровне.

Итак, кажется, достаточно вступления, если готовы – добро пожаловать под кат.


Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 2.3K
Комментарии 2

HazelCast и синхронизация метода между несколькими нодами

Блог компании Reksoft Java *Распределённые системы *
Туториал

В процессе синхронизации метода между несколькими нодами я решил поработать с библиотекой HazelCast IMDG. К моему удивлению, у данного проекта очень мало технической документации, особенно по сравнению с Redis. На официальном портале присутствует минимальное описание возможностей библиотеки вместе со списком конфигураций, где местами и вовсе нет комментариев к добавленным строкам кода.

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

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 8.9K
Комментарии 10

Reactive Spring Cloud Gateway: конвейер WebSocket в Restful и обратно

Анализ и проектирование систем *Разработка мобильных приложений *Kotlin *

Spring Cloud Gateway официально служит следующим целям: слоем безопасности, маршрутизатором, балансировщиком, провайдером протоколов сжатия. Gateway ничего не знает о передаваемых данных и тем более о бизнес-логике – это инфраструктурный сервис.

Связь Gateway с WebSocket обуславливает здравый смысл. Если перенести логику WebSocket в Gateway, то при высоких нагрузках потребуется ненамного увеличить количество подов с одной стороны, а с другой если через WebSocket работают не только браузеры, но и мобильные приложения – то такой подход становится естественным.

В статье описываются преимущества данного подхода, детально перечисляются нюансы реализации и определяются общие перспективы дальнейшего развития. Но основная идея сводится к уменьшению стоимости разработки за счёт переиспользования базовых технологий для всего необходимого функционала.

Читать далее
Рейтинг 0
Просмотры 3.6K
Комментарии 9