Сервер CPS Platform использует NoSQL базу данных Apache Cassandra, специально созданную для сохранения больших объемов данных (в том числе временных рядов).
— Cassandra — распределённая, реплицируемая, с возможностью секционирования wide column-база данных
— место в CAP теореме: AP
— язык запросов: CQL
— модель консистентности: согласованность в конечном счёте (Causal consistency)
— формат хранения данных: LSM-Tree (Log Structured Merge Tree)
— производительность: 50 тысяч запросов в секунду на узел сервера, линейная масштабируемость
— поддержка Light Weight Transactions (Compare And Swap)
— поддержка батчей (несколько запросов применяются атомарно)
— сложные структуры в колонках: counter, map, set, user defined types
— secondary indexes (strong consistent)
— materialized views (eventually consistent)
Мы выбрали Apache Cassandra, поскольку эта база данных реализует компромисс между возможностями по масштабированию сервера CPS, его производительностью по приему и обработке потоков данных, а также надежностью и отказоустойчивостью.
Набор функций взаимодействия (API) с сервером CPS является открытым и хорошо документированным.
Мы придерживались принципа Keep it simple, API CPS Platform реализовано в стиле REST и построено как базис — доступны основные низкоуровневые функции, на базе которых можно реализовать любой предметно-ориентированный сервис.
Основные группы функций API
Основные протоколы
Расширяемость
Список протоколов не ограничен и может быть расширен под ваши устройства.
CPS Platform поддерживает 2 способа добавления новых протоколов — подключение нового модуля на сервере и взаимодействие с аппаратным\программным протокольным шлюзом, размещенным на стороне устройства.
При этом CPS Platform предлагает концепцию шлюзов из коробки, когда работа с вашими устройствами через шлюз будет прозрачной — так, как будто бы подключение осуществлено напрямую.
Программный шлюз
Различные устройства имеют собственные (зачастую проприетарные) протоколы обмена данными и управления. Сервер CPS имеет модульную структуру, и за счет этого вы можете добавить поддержку требуемого протокола. Мы называем это программным шлюзом протоколов, поскольку фактически будет добавлен программный модуль на сервер, который преобразует команды протокола устройства в команды CPS сервера.
Аппаратный шлюз
Ваши устройства уже имеют собственные аппаратные интерфейсы для связи с внешними системами?
Это отлично!
Сервер CPS Platform поддерживает подключение устройств через аппаратные шлюзы (некоторые из которых предоставляются нашей компанией, некоторые существуют на рынке в свободной продаже и должны быть лишь настроены на работу с CPS Platform).
Шлюз на базе смартфона
Любой современный смартфон может стать IoT-шлюзом с приложением CPS-Connect!
В массовом сегменте можно применить технологию «Smartphone as a gateway», которая позволяет использовать пользовательские мобильные устройства как шлюзы для подключения ваших устройств к серверу CPS Platform. В этом случае пользователь должен установить мобильное приложение CPS-Connect на свой смартфон и загрузить профиль подключения вашего устройства. Затем ваше устройство будет подключаться к смартфону посредством Bluetooth и соединяться с CPS Platform.
Масштабируйте ваш сервер горизонтально — подключайте больше устройств, обрабатывайте больше данных тогда, когда это нужно.
Сервер CPS поддерживает различные возможности масштабирования под ваши задачи:
* масштабирование под требуемые объемы хранения данных
* масштабирование под требуемую нагрузку на сервер (интенсивность обращений от устройств)
* масштабирование под требуемые объемы обрабатываемых данных (число фильтров, триггеров, отчетов)
Ознакомьтесь с полным отчётом о производительности и нагрузочном тестировании сервера CPS
Kotlin
Cassandra
Kafka/Zookeeper
Acapella
Nginx
В комплекте с сервером идут удобные инструменты его развертывания (инсталляции) на сервере. Это залог качественной работы ваших устройств и сервисов во время эксплуатации.
Минимальные требования к аппаратному обеспечению сервера, на котором может быть развернут сервер CPS:
Вместе с сервером CPS вы получаете автоматизированный способ развертывания его на ваших серверах и их обновления. Подойдет как выделенный сервер (private server), так и VDS. На схеме ниже представлена схема развертывания, которая автоматизирует работу ваших коллег из DevOps.