Skip to content

ruizeng/pando-cloud

Repository files navigation

pando-cloud Build Status Coverage Status

PandoCloud是一个开源的物联网云平台。

English Document

设计理念

Pando的目的是为了提供一套可应用于实际生产环境的的物联网解决方案。它并不是一个简单的用于演示物联网服务的测试demo。下面列举了实现这套方案我们需要关注的一些关键点:

  • 物联网: 应该提供一套物联网应用场景的最佳实践。
  • 可靠性: 应该被充分的测试,并少有缺陷。
  • 分布式: 可以方便的部署在单机和集群环境中。
  • 可用性: 提供容错能力,灾备能力,自我修复机制等。
  • 扩展性: 必须是模块化,可插拔。
  • 易用性: 易于学习的开发和部署方式。
  • 通用性: 通用的设计和深度的业务抽象。
  • 高性能: 在硬件能耗和网络带宽使用上要尽量降低。
  • 安全性: 避免降低入侵和破解的风险。
  • 伸缩性: 轻松管理数千乃至数亿级的物联网设备。

系统架构

architecture

系统采用三层架构。

接入层

接入层提供了使用不同协议的设备的通信连接,包括但不局限于HTTP协议,XMPP协议,MQTT协议,COAP协议。

设备注册,身份验证和设备发现使用HTTP协议。目前,我们支持使用MQTT协议与设备进行通信。

业务层

逻辑业务层用于实现整个物联网面相设备的相关业务,例如设备管理和API等。

  • registry: 负责维护平台级的配置信息和元数据。
  • devicemanger: 设备管理器用于管理设备和处理设备的数据请求,并保持、监视设备状态。
  • apiprovider: 为应用程序扩展提供Restful API,并在设备状态发生变化时通知应用服务器。
  • controller: 管理设备接入服务,并且将设备请求路由到正确的接入服务。

核心服务层

我们的核心服务所选择的开源程序:

  • mongodb: 用mongodb做为设备的数据存储引擎。
  • mysql: 用MySql存储同类型设备的全局配置信息。
  • redis: 使用redis提供缓存服务。
  • nsq: 异步通信消息队列做为消息通知中心。
  • etcd: 高可用的键值存储系统,主要用于共享配置和服务发现。
  • ELK: elk日志分析系统即Logstash+ElasticSearch+Kibana4的组合简称,主要用于日志记录和分析。

技术参考

快速开始

快速开始介绍如何在自己的服务器或者pc机上单机部署pando物联网云。

开发应用

基于pando平台的物联网应用分为设备端应用服务器

  • 设备端负责实现数据流的传输和管理,须符合pando物联网应用协议;我们提供了Pando嵌入式开发框架封装了协议的实现,并支持移植到不同的硬件平台。也可根据设备接入接口文档自行实现设备端移植。
  • 应用服务器负责实现设备管理和交互的业务逻辑,并负责和用户终端(如手机,pc,微信等)进行交互。应用服务区器通过REST API访问Pando云平台的HTTP接口来实现对设备的操作,并通过向云平台注册回调URL接收设备的状态变化的事件通知。具体可参考应用服务器接口文档

贡献项目

pando物联网平台是完全开源免费的物联网解决方案,欢迎大家以各种形式贡献项目。

  • 反馈问题:我们鼓励通过提交Issue的方式反馈您在使用中遇到的疑问或问题。
  • 提出建议:同样,可以通过提交Issue向我们提供改进意见,同时可以通过加入我们的讨论QQ群(488074716)或者参加我们主办的线下物联网技术沙龙一起讨论。
  • 贡献代码:非常欢迎有能力的朋友一起参与Pando物联网平台的开发,一起构建开放、免费、开源的物联网解决方案。请按照贡献流程参与项目开发。