Gridgain что это
Перейти к содержимому

Gridgain что это

  • автор:

Основы In-Memory Computing для архитекторов и разработчиков. Часть 1

Денис Магда, Apache Ignite PMC Chair и директор по продукту в GridGain, расскажет об основных возможностях и компонентах In-Memory Computing решений на примере Apache Ignite. Вебинар совмещает теорию и практику, после него участники смогут проектировать и писать код под подобные системы. На конкретных примерах кода вы узнаете про:

  • Конфигурацию и запуск кластеров;
  • Обработку данных с использованием key-value API;
  • Оптимальную обработку данных с помощью распределенного SQL.

Это первая часть серии вебинаров, предназначенных для разработчиков и архитекторов. Вебинар проходит на русском языке.

Вебинар будет интересен, если вы:

  • Слышали про In-Memory Computing, но не видели их в действии;
  • Разработчик, инженер или архитектор, начинающий работу с Apache® Ignite™.

Для чего нужен Apache Ignite / GridGain, на примере .NET & C#

В последнее время имена GridGain и Apache Ignite нередко мелькают в интернетах. Однако, судя по комментариям (например, здесь), мало кто понимает, что же это за продукт и с чем его едят.

В этой статье я попытаюсь доступным языком объяснить, и на примерах кода показать, что умеет Apache Ignite.

Apache Ignite Logo

Ignite vs GridGain

Краткий ликбез: компания GridGain выпустила первую версию одноимённого продукта в 2007 году. В 2014 году GridGain пожертвовала большую часть кода в пользу Apache Software Foundation, в результате чего родился проект Apache Ignite. GridGain предоставляет платную поддержку и дополнительную функциональность в виде плагина.

Важно понимать: Apache Ignite не принадлежит GridGain и является свободным программным обеспечением под лицензией Apache 2.0.

Отличие от «обычных» open-source проектов (расположенных на GitHub, например) здесь в том, что нет возможности «передумать», закрыть код, поменять лицензию, и так далее.

Ignite принадлежит Apache Software Foundation.

Ignite.NET

Ignite написан на Java, а так же предоставляет API на .NET и C++. В данной статье будет идти речь именно о .NET API, в котором есть примерно 90% функционала жавовского АПИ, плюс свои собственные плюшки (LINQ).

Что это такое и зачем?

Самый простой и ёмкий ответ — это база данных. В основе которой — хранилище «ключ-значение»; грубо говоря, ConcurrentDictionary , в котором данные расположены на нескольких машинах.

При этом поддерживаются распределённые транзакции, SQL с индексами, полнотекстовый поиск Lucene, map-reduce вычисления, и многое другое. Но обо всём по порядку.

Как запустить?

В одну строчку! Это самая простая в установке и использовании база данных, которую я знаю.

Плохая новость: нам потребуется установленный Java Runtime 7+. Хорошая новость: с этого момента про Java можно забыть.

Создадим в Visual Studio простой Console Application, установим NuGet пакет Apache.Ignite, добавим в метод Main одну строчку Ignition.Start(); . Готово, можно запускать. Через пару секунд в консоли появится «Topology snapshot [ver=1, servers=1». Запустим программу ещё раз и увидим в обеих консолях «Topology snapshot [ver=2, servers=2». Распределённая база данных запущена на двух узлах.

Two Ignite nodes

Отступление про терминологию

  • Узел или Нода — это результат команды Ignition.Start() . Можно запустить несколько узлов на одной машине или даже в одном процессе.
  • Кластер — набор нод, соединённых между собой. Ноды видят или не видят друг друга в зависимости от конфигурации. Таким образом, можно запустить несколько отдельных кластеров даже в пределах одного процесса.

Работа с данными

Хорошо, базу данных мы стартовали, теперь неплохо бы создать таблицы и наполнить их.

Таблица в Apache Ignite — это кэш, ICache . Работа идёт напрямую с пользовательскими типами данных, так что у нас здесь и ORM в одном флаконе (хотя есть возможность работать с данными напрямую, без маппинга в объекты).

class Car < public string Model < get; set; >public int Power < get; set; >public override string ToString() => $"Model: , Power: hp"; > static void Main() < using (var ignite = Ignition.Start()) < ICachecache = ignite.GetOrCreateCache("cars"); cache[1] = new Car ; foreach (ICacheEntry entry in cache) Console.WriteLine(entry); > >

Как видим, базовая работа с кэшем ничем не отличается от всем знакомого Dictionary . При этом данные немедленно доступны на всех узлах кластера.

Эту часть функционала можно сравнивать с Redis.

Данные можно добавлять и запрашивать через SQL. Для этого требуется явно указать, какие поля объекта принимают участие в запросах (атрибут [QuerySqlField] ), и указать типы ключа и значения в конфигурации кэша:

class Car < [QuerySqlField] public string Model < get; set; >[QuerySqlField] public int Power < get; set; >> . // Конфигурируем кэш для работы с SQL: var queryEntity = new QueryEntity(typeof(int), typeof(Car)); var cacheConfig = new CacheConfiguration("cars", queryEntity); ICache cache = ignite.GetOrCreateCache(cacheConfig); // Вставка данных (_key - предопределённое поле): var insertQuery = new SqlFieldsQuery("INSERT INTO Car (_key, Model, Power) VALUES " + "(1, 'Ariel Atom', 350), " + "(2, 'Reliant Robin', 39)"); cache.QueryFields(insertQuery).GetAll(); // Запрос данных: var selQuery = new SqlQuery(typeof(Car), "SELECT * FROM Car ORDER BY Power"); foreach (ICacheEntry entry in cache.Query(selQuery)) Console.WriteLine(entry);

Эти два подхода, key-value и SQL, можно смешивать по вкусу. Получить или вставить одно значение проще и быстрее через cache[key] , а обновить множество значений по условию — через SQL.

LINQ

Запрос из примера выше можно переписать на LINQ (потребуется NuGet пакет Apache.Ignite.Linq):

var linqSelect = cache.AsCacheQueryable().OrderBy(c => c.Value.Power); foreach (ICacheEntry entry in linqSelect) Console.WriteLine(entry);

Этот запрос будет транслирован в SQL, в чём можно убедиться, приведя тип linqSelect к ICacheQueryable .

Обратите внимание на AsCacheQueryable() — это важно! Забыв этот вызов, мы превратим распределённый SQL запрос в LINQ-To-Objects, который приведёт к загрузке всех данных на локальный узел, чего мы обычно не хотим.

Как это работает?

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

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

В некоторых случаях имеет смысл Replicated режим, где каждый узел хранит полную копию всех данных.

Map-Reduce, Locks, Atomics.

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

class Translator : IComputeFunc  < public string Invoke(string text) =>TranslateText(text); > . IEnumerable pages = GetTextPages(); ICollection translated = ignite.GetCompute().Apply(new Translator(), pages);

Синхронизировать различные процессы между узлами можно при помощи распределённых блокировок. Функционал аналогичен lock <> / Monitor , с той лишь разницей, что распространяется на весь кластер:

var cache = ignite.GetOrCreateCache("foo"); using (ICacheLock lck = cache.Lock(1)) < lck.Enter(); // делай дело lck.Exit(); >

Знакомы с классом Interlocked? Ignite предоставляет аналогичный неблокирующий функционал, только операции атомарны в пределах всего кластера.

var atomic = ignite.GetAtomicLong(name: "myVal", initialValue: 1, create: true); atomic.Increment(); atomic.CompareExchange(10, 20);

Эту группу фич можно сравнивать с Akka.

Заключение

Я работаю в GridGain, но пишу этот пост от лица контрибьютора Apache Ignite. Мне кажется, продукт заслуживает внимания. Особенно в .NET мире, где вся тема Big Data и распределенных вычислений слабо раскрыта. Мало таких проектов нормально поддерживают .NET, ещё меньше на нём написано.

Ignite.NET действительно легко попробовать, он запускается даже в LINQPad (примеры кода для LINQPad включены в NuGet!). Способов использования может быть масса. Есть интеграция с ASP.NET (output cache, session state cache), с Entity Framework (second level cache). Можно использовать как платформу для (микро)сервисов. В любом проекте, где требуется более одного сервера, Ignite может тем или иным образом облегчить жизнь.

Да, есть другие проекты, которые имеют ту или иную фичу Ignite, но нет другого проекта, где всё это объединено и интегрировано в один продукт.

Ссылки

  • Сайт ignite.apache.org
  • Код на GitHub github.com/apache/ignite
  • Код .NET github.com/apache/ignite/tree/master/modules/platforms/dotnet
  • NuGet nuget.org/packages/Apache.Ignite
  • Примеры кода на GitHub

P. S. Мы в Apache Ignite всегда рады новым контрибьюторам! Есть множество интересных задач на .NET, C++, Java. Поучаствовать проще, чем кажется!

Основы In-Memory Computing для архитекторов и разработчиков. Часть 2

Денис Магда, Apache Ignite PMC Chair и директор по продукту в GridGain, расскажет об основных возможностях и компонентах In-Memory Computing решений на примере Apache Ignite. На конкретных примерах кода вы узнаете про:

  • Collocated обработку;
  • Collocated обработку для распределенных вычислений;
  • Collocated обработку для SQL (распределенные joins и т.п.);
  • Распределенную персистентность.

Вебинар проходит на русском языке

Это вторая часть серии вебинаров, предназначенных для разработчиков и архитекторов. Видео первой части

Вебинар будет интересен, если вы:

  • Слышали про In-Memory Computing, но не видели их в действии;
  • Разработчик, инженер или архитектор, начинающий работу с Apache® Ignite™.

GridGain

GridGain, разработчик корпоративных программных решений на базе Apache Ignite, был основан в 2005 году программистами Никитой Ивановым и Дмитрием Сетракяном. Базируется в США, городе Плезантон в Кремниевой долине.

По данным анкеты GridGain на российских рекрутинговых сайтах, её инжиниринг с 2012 года был сосредоточен в России: в Санкт-Петербурге, Москве, Новосибирске, Иркутске и ряде других городов [1] .

GridGain специализируется на разработке ПО для работы с большими объемами оперативной памяти в реальном времени (технология In-Memory Computing, IMC). Использование технологии IMC позволяет ускорить работу с большими базами данных. За последние годы появилось множество таких «ускорителей». Один из самых известных — решение SAP HANA.

Компания разрабатывает платформу распределенных вычислений с открытым кодом на Java, распространяемую под лицензиями LGPL и Apache 2.0. Первый релиз платформы вышел в 2007 году. Решения GridGain интегрируют базы данных (SQL, NoSQL, Apache Hadoop) с облачными приложениями и обеспечивают высокую пропускную способность данных и ультра-низкую латентность в масштабируемом кластере серверов.

В числе клиентов компании — Apple, Canon, Sony, Moody’s и другие.

История и показатели деятельности

2023: Ликвидация российского юрлица

Как выяснил TAdviser, 29 декабря 2022 года было подано заявление о ликвидации российского юридического лица компании GridGain – «Гридгаин Рус», учредителем которой является базирующаяся в США GridGain Systems. По состоянию на январь 2023 года российская компания находится в стадии ликвидации, по данным базы юрлиц «Контур.Фокус».

Решение GridGain Systems избавиться от этого актива, судя по всему, связано с ранее озвученным намерением компании уйти с рынка России на фоне российско-украинского конфликта. В апреле 2022 года гендиректор GridGain Systems Оуэн О’Коннор (Eoin O’Connor) осудил происходящее и объявил, что GridGain Systems покинет Россию, «часть мира, которая в ранние дни компании играла значительную роль» [2] . Российский рынок мобильных приложений для бизнеса и госсектора: крупнейшие игроки, тенденции и перспективы. Обзор TAdviser

По словам Оуэна О’Коннора, уже к тому моменту многие из российских сотрудников GridGain Systems уехали из страны, и по состоянию на апрель компания работала над тем, чтобы перевезти оставшихся в Северную Америку и Европу.

В 2015 году Сбербанк вместе с венчурными фондами инвестировал в GridGain $15 млн

В 2021 году «Гридгаин Рус» получила выручку около 392,6 млн рублей с ростом на 8% год к году и чистую прибыль в 7,5 млн рублей. Согласно данным базы «Контур.Фокус», в 2021 году её среднесписочная численность сотрудников составляла около 80 человек.

В пресс-службе Сбербанка, который в 2015 году вместе с венчурными фондами инвестировал в GridGain $15 млн, не смогли предоставить TAdviser комментарии по теме.

В 2016-2018 гг. представители Сбербанка на различных отраслевых мероприятиях рассказывали о том, как тестируют платформу GridGain и где планируют её применять. Например, для неё тогда предполагалось место в платформе поддержки развития бизнеса (ППРБ) Сбербанка, которая объединяет в себе процессы миддл- и бэк-офиса банка, создавая технологические компоненты и продуктовые фабрики для оказания услуг клиентам [3] . Однако, похоже, что до реальных внедрений дело не дошло. Поиск в открытых источниках показывает, что примерно с 2018 года «пиарить» GridGain в привязке к проектам банка как будто бы прекратили.

Вместе с тем, по состоянию на 2022 год известно, что в новой технологической платформе Сбербанка используется Apache Ignite – решение, появившееся в результате того, что в 2014 году GridGain пожертвовала большую часть кода в пользу Apache Software Foundation. Apache Ignite не принадлежит GridGain и является свободным программным обеспечением, распространяемым под лицензией Apache 2.0.

2017: Сотрудничество с Huawei

15 сентября 2017 года компания Huawei подписала меморандум о взаимопонимании с компаниями GridGain Systems, разработчиком передовых интеграционных распределенных систем, и ISS — Интеллектуальные Системы Безопасности. Сотрудничество будет проводиться на базе Open Lab в Москве, которая откроется в ноябре 2017 года.

Главная цель сотрудничества Huawei c GridGain — поддержка клиентов финансового сектора, правительства и крупных предприятий, поэтому предполагается совместная разработка решений в секторе финансовых услуг, городской безопасности, транспортной промышленности и энергетики. Подробнее здесь.

2016: Утроение выручки

  • Выручка GridGain Systems более чем удваивается каждый год в течение последних четырех лет. В 2016 году продажи компании практически утроились по сравнению с результатами 2015 года. Объемы продаж только за четвертый квартал 2016 года превысили показатель за весь 2015 год.
  • Компания расширила свои операции на страны Европы и СНГ, достигнув успешных договоренностей с клиентами в сфере финансовых услуг, финтеха, разработки ПО, электронной и розничной торговли, онлайн бизнес-сервисов, здравоохранения, телекоммуникаций, IoT, веб-приложений и других секторов.
  • Компания закрыла раунд B инвестиций, книга заявок на который была переподписана, и привлекла в его рамках 4 миллиона долларов стратегических вложений от глобальной мульти миллиардной компании в сфере информационно-коммуникационных технологий. Общий объем привлеченных инвестиций с учетом раунда составил 16,3 миллиона долларов.
  • Численность команды GridGain Systems выросла вдвое в 2016 году за счет новых сотрудников в подразделениях разработки, продаж, маркетинга и операций. Компания расширила свое присутствие на рынках Западной Европы, Северной Америки и России.

2015: $15 млн от Сбербанка и венчурных фондов

В феврале 2016 года Сбербанк и фонды Almaz Capital, MoneyTime Ventures и RTP Ventures (один из фондов Леонида Богуславского) сообщили о том, что инвестировали в GridGain. Объем раунда составил $15 млн. В результате сделки генеральный партнер MoneyTime Ventures, Виктор Орловский вошел в совет директоров GridGain Systems.

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

Ранее, в январе 2016 года, президент Сбербанка Герман Греф сообщал [4] , что его банк покупает пакет акций GridGain. Ее он охарактеризовал как компанию, «которая выиграла тендер у Oracle, IBM и других, оказалась на порядок выше этих крупнейших компаний».

ПО GridGrain Сбербанк планирует использовать при создании новой ИТ-платформы, которая должна прийти на смену единой платформе, созданной в рамках программы «Централизация 2.0».

GridGain предлагает технологию, которая работает с большими базами данных, и позволяет значительно ускорить вычисления за счет того, что данные вытаскиваются в оперативную память, где производятся операции, отметил в разговоре с РБК Александр Галицкий, управляющий партнер фонда Almaz Capital Partners. Интегрируя такие решения в свои системы, компании могут уменьшить ИТ-издержки иногда в 20 раз, добавил он.

В декабре 2015 года GridGain получила от Сбербанка $5,6 млн: банк провел у нее закупку продукта GridGain In-Memory Data Fabric как у единственного поставщика [5] .

До этого Almaz Capital и RTP Ventures инвестировали в GridGain Systems в 2013 году. Объем раунда составил $10 млн. Представители Almaz Capital и RTP вошли в совет директоров GridGain. Всего компания привлекла $27,5 млн.

2014: Передача кода в Apache Software Foundation

В 2014 году компания GridGain Systems передала в Apache Software Foundation разработанный ее сотрудниками код — платформу для вычислений в оперативной памяти. Так появился Apache Ignite Сотрудники компании GridGain продолжила участвовать в развитии проекта [6] .

2013: Привлечение инвестиций от Almaz Capital

В июне 2013 года GridGain привлекла инвестиции в размере $10 млн от фондов Almaz Capital Partners и RTP Ventures [7] . Привлеченные средства компания планировала потратить на ускорение вывода на рынок программного обеспечения, которое разрабатывает.

2011: Привлечение инвестиций от RTP Ventures

В декабре 2011 GridGain привлекла первые инвестиции. Фонд RTP Ventures организовал первый раунд инвестиций, вложив в компанию $2,5 млн. По условиям сделки представитель фонда вошел в совет директоров GridGain.

Примечания

  1. ↑Профиль GridGain Systems на портале HeadHunter
  2. ↑Message from CEO Eoin O’Connor on Ukraine and business in Russia
  3. ↑Презентация с конференции CNews, стр. 5
  4. ↑Греф в ужасе: ИТ-централизация не позволяет Сбербанку догонять ИТ-компании
  5. ↑Выбор компании GridGain Systems, Inc. в качестве единственного поставщика, предоставляющей право на программный продукт GridGain In-Memory Data Fabric для нужд ПАО Сбербанк
  6. ↑Блог GridGain на Habr
  7. ↑Вычисления на $10 млн

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *