其他分享
首页 > 其他分享> > 智汀家庭云-开发指南Golang:架构概述

智汀家庭云-开发指南Golang:架构概述

作者:互联网

  智汀家庭云,立项于2021年,结合国内智能家居各厂商软件特点,研发“智汀家庭云”,并对该生态系统全面开源,为国内首个采用智能家居系统全生态开源协议(Apache License, Version 2.0)的软件。

1.应用场景

智汀家庭云可以离线运行在局域网内,也可以通过绑定到智汀云来获取更强大的功能。

运行在局域网环境时,用户可以通过智汀APP发现与管理智汀家庭云,安装插件来对设备进行管理与控制。

用户也可以通过在智汀云上面注册帐号,将智汀家庭云设备绑定到云端,然后通过云端中转的方式支持在外网对设备进行控制。

在开发过程中需要注意的是,任何情况下,用户的隐私都是最重要的,因此在任何情况下用户都可无条件地取消对智汀云,第三方应用或插件的授权; 同时也应保证用户数据不被第三方获取。

2.架构设计

智汀家庭云运行在 Linux 主机下,通过 Docker 来对其中的服务进行部署与资源隔离。其中部分核心服务容器需要预先配置, 并且随系统启动自动运行;而插件(plugin)类服务则是由 SA 调用 docker API 的方式进行管理。

插件启动后会运行一个 gRPC 服务以及一个可选的 HTTP 服务,SA 通过 docker API 监听插件运行状态, 通过 gRPC 接口获取插件信息

3.功能模块

智汀家庭云模块拆分为 internal 与 pkg 两个分组,其中 internal 为与项目业务逻辑相关性比较强功能模块分组;pkg 包含与业务关系不大的通用组件。其引用关系如下图所示:

其中比较重要的业务模块如下:

4.程序设计的规则参考

5.目录结构

项目源码结构参考 Standard Go Project Layout :

├── app.yaml            运行时配置文件
├── app.yaml.example    配置文件范例
├── build               打包相关的脚本
│   ├── docker
│   └── docs
├── cmd
│   └── smartassistant 入口命令
├── docs                文档
│   ├── guide
│   ├── images
│   └── tutorial
├── internal
│   ├── api       接口
│   │   ├── area
│   │   ├── brand
│   │   ├── cloud
│   │   ├── device
│   │   ├── location
│   │   ├── middleware
│   │   ├── page
│   │   ├── role
│   │   ├── scene
│   │   ├── scope
│   │   ├── session
│   │   ├── test
│   │   ├── user
│   │   └── utils
│   │       ├── cloud
│   │       └── response
│   ├── cloud
│   ├── config
│   ├── entity
│   ├── plugin
│   │   ├── docker
│   │   └── mocks
│   ├── task
│   ├── types
│   │   └── status
│   ├── utils
│   │   ├── hash
│   │   ├── jwt
│   │   ├── session
│   │   └── url
│   └── websocket
├── pkg         通用组件代码
│   ├── errors
│   ├── proxy
│   ├── rand
│   └── reverseproxy
├── static
├── Makefile            make 配置
└── README.md           项目介绍文档

如果您想进一步了解项目开发相关的内容,请参考 如何参与项目

标签:插件,架构,智汀,家庭,Golang,pkg,模块,docker
来源: https://blog.csdn.net/zhiting654321/article/details/120346515