#c_sharp #linux
Доброе времени суток. Возникла необходимость делиться информацией между двумя приложениями. Вспомнил что есть MemoryMappedFile, решил воспользоваться. Зашел msdn глянул работает и под .net core - что очень важно. Так как рассматривается вариант запуска сервисов под linux-ом. Но тут же я столкнулся с проблемой под linux-ом: "Unhandled Exception: System.PlatformNotSupportedException: Named maps are not supported." Вопрос все еще актуален Есть ли какие-то альтернативы? Как вы решаете проблему с обработкой больших объемов, что бы они были доступны между двух и более сервисов? Задача: есть данные примерно такого вида: id price1 price1 (таких записей 1млн) которые необходимо обновлять, ну скажем раз 20 в секунду UPDATE#1 Named maps - это функция, предоставляемая Windows. Как правило, отображаемые в память файлы работают путем межпроцессного взаимодействия, отображая один и тот же файл в несколько процессов, например, используя MemoryMappedFile.CreateFromFile. Если не использовать именование, то запись будет иметь такой вид: string path = "/home/test/test"; using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) using (MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(fs, null, fs.Length, MemoryMappedFileAccess.ReadWrite, HandleInheritability.None, true)) using (MemoryMappedViewAccessor acc = mmf.CreateViewAccessor())
Ответы
Ответ 1
Именованные memory mapped файлы под Linux не поддерживаются. Альтернатива - готовые key-value storage. IMO, проще всего будет прикрутить Redis. Есть готовый образ на dockerhub + есть хороший .NET клиент от Stack Exchange
Комментариев нет:
Отправить комментарий