Cloudpods 是一个开源的 Golang 实现的云原生的多云和混合云融合平台。
Cloudpods 不仅可以管理本地的虚拟机和物理机资源,还可以管理其他公有云和私有云平台的资源。
GitHub: https://github.com/yunionio/cloudpods
Golang 作为云联壹云平台主要的开发语言,在迭代过程中积累了丰富的关于 Golang 的经验以及框架和库。
首先是 Golang 的服务框架,所有的组件都是基于这个服务框架来开发,服务框架的特点比较适合在我们平台开发,并且针对平台的特点做出优化,适合快速开发服务。
一个 Golang 服务框架 ,四个 Golang 工具库
jsonutils:JSON 序列化和反序列化 https://github.com/yunionio/jsonutils
sqlchemy:模仿 SQLAlchemy 的 ORM 库 https://github.com/yunionio/sqlchemy
structarg:基于结构体的命令行参数生成和解析工具 https://github.com/yunionio/structarg
pkg:其他一些小工具和方法 https://github.com/yunionio/pkg
基本所有服务都是基于这个服务框架开发,此框架是比较方便做 CRUD 的脚手架框架。
因为服务主要是对云资源的操作,比如云资源的创建、删除、更新等。
因为云的资源非常多,通过脚手架能够比较方便地实现资源的 CRUD 操作,再加上其他机制实现对云资源的复杂操作以及信息回复。
除 CRUD 脚手架外,其实它把平台的特别功能加进去,首先组件之间是基于 keystone 认证,所以在将 keystone 认证加到框架中,则开发不需关注 keystone 认证,只要代码是在框架中实现的,天生就集成了 keystone 认证。
每一个 API 都受到权限的控制,权限控制也集成到框架中,每一个开发者在开发平台相应的 restapi 时,不必为权限写相应的代码,能够天然地将权限控制集成到 API 中。
微服务框架的每一个服务都有相应的配置,如何方便地管理服务配置,并进行更新 ,同步到相应的组件使其生效,此过程相对复杂,我们将服务配置的功能集成到框架中,开发者采用框架不必考虑配置的存储、更新、服务器读取更新并使配置生效,这些复杂事宜已在框架中解决。
还有异步任务的管理功能,平台可以被认为是一个分布式的系统,云控制器需要去操作和管理数据计算节点、裸金属的管理节点。协调组件之间的复杂操作,例如将虚拟机、裸金属创建起来,这些都是分布式的任务管理,在平台中也嵌入了异步任务管理框架。如此即可较为方便地实现异步任务。
此外还有 CRUD 脚手架原理和四个 Golang 库的详细介绍,了解全部详情请看: https://mp.weixin.qq.com/s/bFn3C3AFjW1iHIue8sUpog
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.