Нужен кеш, который используется совместно приложениями C ++, Java и .Net - PullRequest
1 голос
/ 24 февраля 2010

Существует ли решение для кеширования, которое работает с C ++, .Net и Java, которые обращаются к одним и тем же данным и помещают их в кеш? (Данные состоят только из простых строк)

Более длинная версия:

У меня есть 4 приложения, которые работают в разных областях проблемы. Два из них разработаны на C ++, одно - настольное Java-приложение, а другое - приложение C #, использующее .Net 3.5.

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

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

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

Ответы [ 6 ]

7 голосов
/ 24 февраля 2010

Memcached отлично работает в независимых приложениях.

5 голосов
/ 24 февраля 2010

Вы должны взглянуть на таблицу данных Gigaspaces ... http://www.gigaspaces.com/datagrid

1 голос
/ 14 июля 2012

IBM WebSphere eXtreme Scale имеет API для Java, а также REST API, которые могут использоваться приложениями .NET и C ++. Этот продукт (раньше он назывался ObjectGrid) существует уже 6 лет и находится в выпуске 8.5. Языковые API для C # и C ++ находятся в разработке.

0 голосов
/ 12 августа 2013

Для такого простого случая использования memcached, скорее всего, сработает. У него есть клиенты Java, C / C ++ и C #.

Если вы смотрите на более продвинутые варианты использования (что-то кроме «получить и положить»), то попробуйте решение с сеткой данных в памяти (IMDG), например Oracle Coherence. Существует сводка рынка Gridner In-Memory Data Grid под названием «Конкурентная среда: сетки данных In-Memory». Вы можете увидеть копию по адресу: http://www.gartner.com/technology/reprints.do?id=1-1HCCIMJ&ct=130718&st=sb

Ради полного раскрытия я работаю в Oracle. Мнения и взгляды, выраженные в этом посте, являются моими собственными и не обязательно отражают мнения или взгляды моего работодателя.

0 голосов
/ 24 февраля 2010

вы можете создать оболочку для каждого языка, который взаимодействует с плоским файлом или базой данных ключ / значение. я бы порекомендовал Tokyo Cabinet. У него есть привязки, плавающие в сети для нескольких языков

Tokyo Cabinet примеры производительности: http://www.igvita.com/2009/02/13/tokyo-cabinet-beyond-key-value-store/

0 голосов
/ 24 февраля 2010

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

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