{"id":26256898,"url":"https://github.com/ruizeng/pando-cloud","last_synced_at":"2025-04-28T14:43:25.428Z","repository":{"id":57513888,"uuid":"44509997","full_name":"ruizeng/pando-cloud","owner":"ruizeng","description":"pando open source iot cloud.","archived":false,"fork":false,"pushed_at":"2017-11-07T01:50:59.000Z","size":10611,"stargazers_count":167,"open_issues_count":0,"forks_count":83,"subscribers_count":32,"default_branch":"master","last_synced_at":"2024-05-20T00:11:45.440Z","etag":null,"topics":["iot","iot-cloud","iot-framework","iot-platform"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruizeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-19T03:50:56.000Z","updated_at":"2023-12-12T15:18:27.000Z","dependencies_parsed_at":"2022-09-19T10:50:52.977Z","dependency_job_id":null,"html_url":"https://github.com/ruizeng/pando-cloud","commit_stats":null,"previous_names":["pandocloud/pando-cloud"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruizeng%2Fpando-cloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruizeng%2Fpando-cloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruizeng%2Fpando-cloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruizeng%2Fpando-cloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruizeng","download_url":"https://codeload.github.com/ruizeng/pando-cloud/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251332023,"owners_count":21572543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iot","iot-cloud","iot-framework","iot-platform"],"created_at":"2025-03-13T20:19:46.820Z","updated_at":"2025-04-28T14:43:25.410Z","avatar_url":"https://github.com/ruizeng.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pando-cloud  [![Build Status](https://travis-ci.org/ruizeng/pando-cloud.svg)](https://travis-ci.org/ruizeng/pando-cloud)  [![Coverage Status](https://coveralls.io/repos/PandoCloud/pando-cloud/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/PandoCloud/pando-cloud?branch=master) \n\nPandoCloud是一个开源的物联网云平台。\n\n[English Document](docs/en/README.md)\n\n## 设计理念\n\nPando的目的是为了提供一套可应用于实际生产环境的的物联网解决方案。它并不是一个简单的用于演示物联网服务的测试demo。下面列举了实现这套方案我们需要关注的一些关键点：\n\n* **物联网**: 应该提供一套物联网应用场景的最佳实践。\n* **可靠性**: 应该被充分的测试，并少有缺陷。\n* **分布式**: 可以方便的部署在单机和集群环境中。\n* **可用性**: 提供容错能力，灾备能力，自我修复机制等。\n* **扩展性**: 必须是模块化，可插拔。\n* **易用性**: 易于学习的开发和部署方式。\n* **通用性**: 通用的设计和深度的业务抽象。\n* **高性能**: 在硬件能耗和网络带宽使用上要尽量降低。\n* **安全性**: 避免降低入侵和破解的风险。\n* **伸缩性**: 轻松管理数千乃至数亿级的物联网设备。\n\n## 系统架构\n\n![architecture](docs/img/architecture.jpeg)\n\n系统采用三层架构。\n\n### 接入层\n接入层提供了使用不同协议的设备的通信连接，包括但不局限于HTTP协议，XMPP协议，MQTT协议，COAP协议。 \n\n设备注册，身份验证和设备发现使用HTTP协议。目前，我们支持使用MQTT协议与设备进行通信。\n\n### 业务层\n逻辑业务层用于实现整个物联网面相设备的相关业务，例如设备管理和API等。\n\n* **registry**: 负责维护平台级的配置信息和元数据。\n* **devicemanger**: 设备管理器用于管理设备和处理设备的数据请求，并保持、监视设备状态。\n* **apiprovider**: 为应用程序扩展提供Restful API，并在设备状态发生变化时通知应用服务器。\n* **controller**: 管理设备接入服务，并且将设备请求路由到正确的接入服务。\n\n### 核心服务层 \n\n我们的核心服务所选择的开源程序：\n\n* **mongodb**: 用mongodb做为设备的数据存储引擎。\n* **mysql**: 用MySql存储同类型设备的全局配置信息。\n* **redis**: 使用redis提供缓存服务。\n* **nsq**: 异步通信消息队列做为消息通知中心。\n* **etcd**: 高可用的键值存储系统,主要用于共享配置和服务发现。\n* **ELK**: elk日志分析系统即Logstash+ElasticSearch+Kibana4的组合简称，主要用于日志记录和分析。\n\n## 技术参考\n\n* [micro-services](http://martinfowler.com/articles/microservices.html)\n* [12-factor apps](http://12factor.net/)\n* [GoLang](http://golang.org)\n* [MQTT](http://mqtt.org/)\n* [Docker](http://www.docker.com/)\n* [MySQL](http://www.mysql.com/)\n* [MongoDB](https://www.mongodb.org/)\n* [redis](http://redis.io/)\n* [etcd](https://github.com/coreos/etcd)\n* [nsq](http://nsq.io/)\n* [ELK](https://www.elastic.co/products)\n\n## 快速开始\n\n[快速开始](docs/zh-cn/quick-start/README.md)介绍如何在自己的服务器或者pc机上单机部署pando物联网云。\n\n## 开发应用\n基于pando平台的物联网应用分为**设备端**和**应用服务器**。\n\n* **设备端**负责实现数据流的传输和管理，须符合[pando物联网应用协议](https://github.com/PandoCloud/pando-protocol)；我们提供了[Pando嵌入式开发框架](https://github.com/PandoCloud/pando-embeded-framework)封装了协议的实现，并支持移植到不同的硬件平台。也可根据[设备接入接口文档](./docs/zh-cn/api-doc/device.md)自行实现设备端移植。\n* **应用服务器**负责实现设备管理和交互的业务逻辑，并负责和用户终端（如手机，pc，微信等）进行交互。应用服务区器通过REST API访问Pando云平台的HTTP接口来实现对设备的操作，并通过向云平台注册回调URL接收设备的状态变化的事件通知。具体可参考[应用服务器接口文档](./docs/zh-cn/api-doc/application.md)。\n\n## 贡献项目\npando物联网平台是完全开源免费的物联网解决方案，欢迎大家以各种形式贡献项目。\n\n* **反馈问题**：我们鼓励通过[提交Issue](https://github.com/PandoCloud/pando-cloud/issues/new)的方式反馈您在使用中遇到的疑问或问题。\n* **提出建议**：同样，可以通过[提交Issue](https://github.com/PandoCloud/pando-cloud/issues/new)向我们提供改进意见，同时可以通过加入我们的讨论QQ群（488074716）或者参加我们主办的线下物联网技术沙龙一起讨论。\n* **贡献代码**：非常欢迎有能力的朋友一起参与Pando物联网平台的开发，一起构建开放、免费、开源的物联网解决方案。请按照[贡献流程](./docs/zh-cn/contribution/work-flow.md)参与项目开发。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruizeng%2Fpando-cloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruizeng%2Fpando-cloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruizeng%2Fpando-cloud/lists"}