V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Cloudpods
V2EX  ›  推广

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

  •  
  •   Cloudpods · 2022-01-07 19:47:06 +08:00 · 2764 次点击
    这是一个创建于 832 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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

    6 条回复    2022-03-07 15:56:09 +08:00
    ro2020
        1
    ro2020  
       2022-01-09 12:10:32 +08:00 via iPhone
    谢谢分享,已收藏
    VVValent
        2
    VVValent  
       2022-01-09 14:40:05 +08:00
    刚开始学 go, 谢谢分享
    BryantBa
        3
    BryantBa  
       2022-01-12 15:21:49 +08:00
    正在学 go ,多谢大佬分享
    Cloudpods
        4
    Cloudpods  
    OP
       2022-03-07 15:55:43 +08:00
    @ro2020 感谢认可
    Cloudpods
        5
    Cloudpods  
    OP
       2022-03-07 15:56:00 +08:00
    @VVValent 感谢支持
    Cloudpods
        6
    Cloudpods  
    OP
       2022-03-07 15:56:09 +08:00
    @BryantBa 感谢支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5503 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:31 · PVG 14:31 · LAX 23:31 · JFK 02:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.