超全面的 Golang 实践经验分享!

2022-01-07 19:47:06 +08:00
 Cloudpods

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

GitHub: https://github.com/yunionio/cloudpods

2783 次点击
所在节点    推广
6 条回复
ro2020
2022-01-09 12:10:32 +08:00
谢谢分享,已收藏
VVValent
2022-01-09 14:40:05 +08:00
刚开始学 go, 谢谢分享
BryantBa
2022-01-12 15:21:49 +08:00
正在学 go ,多谢大佬分享
Cloudpods
2022-03-07 15:55:43 +08:00
@ro2020 感谢认可
Cloudpods
2022-03-07 15:56:00 +08:00
@VVValent 感谢支持
Cloudpods
2022-03-07 15:56:09 +08:00
@BryantBa 感谢支持

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/826904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX