Принуждение к кэшированию: прикручиваем L2 кэш Apache Ignite к Activiti

Под катом пример решения этой проблемы, код выложен на GitHub.
Искусство создания компьютерных программ
Если вы — программист, то вам приходится учиться очень много. Вспомните свой первый "Hello, World!". У меня это было в четвертом классе. Мы изучали С++, и наш учитель написал программу от руки на доске. Мы использовали Turbo C++, копировали ее на дискету, чтобы экспериментировать дома.
В том время я не думал, что Turbo C++ это редактор. Я не думал о нем как об IDE. Для меня Turbo C++ был языком C++. Это был единственный известный мне способ программировать. Я не знал, что значит "компиляция", не знал, зачем нужен #include
в начале файла. Я не понимал, что делает main
и что printf
может принимать любое количество аргументов. Я просто скопировал программу с доски, нажал Run
и увидел вывод на экране.
Это круто. Так и нужно учить программированию. Нужно делать что-то до того когда еще не понимаешь, как это работает. Некоторое время нужно умышленно быть в неведении о деталях. Детали отвлекают.
Когда я узнал, что появился новый язык программирования системного уровня, с производительностью как у С++ и без сборщика мусора, я сразу заинтересовался. Мне нравится решать задачи с помощью языков со сборщиками мусора, вроде C# или JavaScript, но меня постоянно терзала мысль о сырой и грубой мощи С++. Но в С++ так много способов выстрелить себе в ногу и других хорошо известных проблем, что я обычно не решался.
Так что я влез в Rust. И, блин, влез глубоко.
Язык Rust все еще довольно молод, поэтому его экосистема пока находится в стадии начального развития. В некоторых случаях, например, в случае с вебсокетами или сериализацией есть хорошие и популярных решения. В других областях у Rust не все так хорошо. Одна из таких областей это OpenGL GUI, вроде CEGUI или nanogui. Я хотел помочь сообществу и языку, поэтому взялся за портирования nanogui на Rust, с кодом на чистом Rust, без связок с С/C++. Проект можно найти тут.
Обычно, знакомство с Rust начинается с борьбы с идеей borrow-checker. Как и у других программистов, у меня тоже был период, когда я не мог понять, как решить ту или иную проблему. К счастью, есть классное сообщество в #rust-beginners. Его обитатели помогали мне и отвечали на мои дурацкие вопросы. Мне понадобилось несколько недель на то, чтобы почувствовать себя более-менее комфортно в Rust.
Но я не подозревал, что когда сталкиваешься с проблемой, поиск решения похож на ориентацию в джунглях. Часто находится несколько ответов, которые похожи на решение твоей проблемы, но не подходят из-за крохотной детали.