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

Cloudpods 不仅可以管理本地的虚拟机和物理机资源,还可以管理其他公有云和私有云平台的资源。GitHub:Golang 作为云联壹云平台主要的开发语言,在迭代过程中积累了丰富的关于 Golang 的经验以及框架和库。首先是 Golang 的服务框架,所有的组件都是基于这个服务框架来开发,服务框架的特点比较适合在我们平台开发,并且针对平台的特点做出优化,适合快速开发服务。一个 Golang 服务框架 ,四个 Golang 工具库jsonutils:JSON 序列化和反序列化sqlchemy:模仿 SQLAlchemy 的 ORM 库structarg:基于结构体的命令行参数生成和解析工具 pkg:其他一些小工具和方法 基本所有服务都是基于这个服务框架开发,此框架是比较方便做 CRUD 的脚手架框架。因为服务主要是对云资源的操作,比如云资源的创建、删除、更新等。因为云的资源非常多,通过脚手架能够比较方便地实现资源的 CRUD 操作,再加上其他机制实现对云资源的复杂操作以及信息回复。除 CRUD 脚手架外,其实它把平台的特别功能加进去,首先组件之间是基于 keystone 认证,所以在将 keystone 认证加到框架中,则开发不需关注 keystone 认证,只要代码是在框架中实现的,天生就集成了 keystone 认证。每一个 API 都受到权限的控制,权限控制也集成到框架中,每一个开发者在开发平台相应的 restapi 时,不必为权限写相应的代码,能够天然地将权限控制集成到 API 中。微服务框架的每一个服务都有相应的配置,如何方便地管理服务配置,并进行更新 ,同步到相应的组件使其生效,此过程相对复杂,我们将服务配置的功能集成到框架中,开发者采用框架不必考虑配置的存储、更新、服务器读取更新并使配置生效,这些复杂事宜已在框架中解决。还有异步任务的管理功能,平台可以被认为是一个分布式的系统,云控制器需要去操作和管理数据计算节点、裸金属的管理节点。协调组件之间的复杂操作,例如将虚拟机、裸金属创建起来,这些都是分布式的任务管理,在平台中也嵌入了异步任务管理框架。如此即可较为方便地实现异步任务。此外还有 CRUD 脚手架原理和四个 Golang 库的详细介绍,了解全部详情请看: GitHub:

请登录后发表评论

    没有回复内容