sponge 是一个快速生成web和微服务项目代码工具,也是一个基于gin和grpc封装的微服务框架。sponge拥有丰富的生成代码命令,一共生成12种不同功能代码,这些功能代码可以组合成完整的服务(类似人为打散的海绵细胞可以自动重组成一个新的海绵)。微服务代码功能包括日志、服务注册与发现、注册中心、限流、熔断、链路跟踪、指标监控、pprof性能分析、统计、缓存、CICD等功能。代码解耦模块化设计,很容易构建出从开发到部署的完整项目代码,让使用go语言开发项目更便捷、轻松、高效。

项目地址:https://github.com/zhufuyi/sponge
使用文档:https://go-sponge.com/
视频教程:https://space.bilibili.com/1440482691/video
在线生成代码demo: https://go-sponge.com/ui/

sponge 生成命令框架

生成代码基于YamlSQL DDLProtocol buffers三种方式,每种方式拥有生成不同功能代码,生成代码的框架图如图1-1所示:


图1-1 sponge生成代码框架图

微服务框架

sponge生成的微服务代码框架如图1-2所示,这是典型的微服务分层结构,具有高性能,高扩展性,包含常用的服务治理功能。


图1-2 微服务框架图

微服务主要功能:

  • Web 框架 gin
  • RPC 框架 grpc
  • 配置解析 viper
  • 配置中心 nacos
  • 日志 zap
  • 数据库组件 gorm
  • 缓存组件 go-redis ristretto
  • 文档 swagger
  • 鉴权 jwt
  • 校验 validator
  • 限流 ratelimit
  • 熔断 circuitbreaker
  • 链路跟踪 opentelemetry
  • 监控 prometheus, grafana
  • 服务注册与发现 etcd, consul, nacos
  • 性能分析 go profile
  • 代码规范检查 golangci-lint
  • 持续集成部署 CICD jenkins docker, kubernetes

代码目录结构遵循 project-layout,代码目录结构如下所示:

.
├── api            # proto文件和生成的*pb.go目录
├── assets         # 其他与资源库一起使用的资产(图片、logo等)目录
├── build          # 打包和持续集成目录
├── cmd            # 程序入口目录
├── configs        # 配置文件的目录
├── deployments    # IaaS、PaaS、系统和容器协调部署的配置和模板目录
├─ docs            # 设计文档和界面文档目录
├── internal       # 私有应用程序和库的代码目录
│ ├── cache        # 基于业务包装的缓存目录
│ ├── config       # Go结构的配置文件目录
│ ├── dao          # 数据访问目录
│ ├── ecode        # 自定义业务错误代码目录
│ ├── handler      # http的业务功能实现目录
│ ├── model        # 数据库模型目录
│ ├── routers      # http路由目录
│ ├── rpcclient    # 连接rpc服务的客户端目录
│ ├── server       # 服务入口,包括http、rpc等
│ ├── service      # rpc的业务功能实现目录
│ └── types        # http的请求和响应类型目录
├── pkg            # 外部应用程序可以使用的库目录
├── scripts        # 用于执行各种构建、安装、分析等操作的脚本目录
├── test           # 额外的外部测试程序和测试数据
└── third_party    # 外部帮助程序、分叉代码和其他第三方工具

web服务和rpc服务目录结构基本一致,其中有一些目录是web服务独有(internal目录下的routers、handler、types),有一些目录是rpc服务独有(internal目录下的service)。

生成项目代码界面

生成12种不同功能代码命令都已经做了UI界面,使用起来更加方便,在线生成代码demo: https://go-sponge.com/ui/,可以下载sponge在本地使用。

例如创建web服务完整项目如下图所示:

一个自动生成web和微服务项目代码工具sponge相关推荐

  1. 一个简单的微服务项目带你上手spring cloud 全家桶

    最近一个月,断断续续学习了spring cloud的主流微服务模块,然后实践了一个比较容易上手的微服务项目,现在做一个总结. 这个项目是在github上的一个比较经典的spring cloud易上手的 ...

  2. java版本号管理_微服务项目中如何管理依赖版本号?

    本文是微服务项目代码组织形式三部曲中的第三篇,也是最后一篇,通过这三篇文章,相信大家对于如果组织微服务中的代码已经有了一个基本认知,前面两篇分别是: 第三篇相对来说要简单一些,本来没打算写,但是上周有 ...

  3. 微服务项目中如何管理依赖版本号?

    本文是微服务项目代码组织形式三部曲中的第三篇,也是最后一篇,通过这三篇文章,相信大家对于如果组织微服务中的代码已经有了一个基本认知,前面两篇分别是: 微服务项目搭建,到底要不要聚合工程? 在微服务项目 ...

  4. 管理java版本号_微服务项目中如何管理依赖版本号?

    本文是微服务项目代码组织形式三部曲中的第三篇,也是最后一篇,通过这三篇文章,相信大家对于如果组织微服务中的代码已经有了一个基本认知,前面两篇分别是: 微服务项目搭建,到底要不要聚合工程? 在微服务项目 ...

  5. IDEA集成Docker插件实现一键自动打包部署微服务项目

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  6. 微服务项目后台技术栈

    微服务项目后台相关技术整理 主要技术 ORM框架-Mybatis Plus Mybatis Plus核心功能 MyBatis Plus与SpringBoot集成 MyBatis Plus集成Sprin ...

  7. 业界首个Apache顶级微服务项目ServiceComb毕业,由华为捐赠

    全球最大的开源软件基金会Apache软件基金会(以下简称Apache)于北京时间10月24日宣布Apache ServiceComb 毕业成为Apache 顶级项目. \\ ServiceComb 由 ...

  8. 微服务项目之认证服务

    微服务项目之认证服务 一.Java中的权限框架 1.1 RBAC RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为 ...

  9. 使用 Source Generator 自动生成 WEB API

    使用 Source Generator 自动生成 WEB API Intro 上次我们介绍了使用 Source Generator 的应用,有小伙伴留言说想要自动生成一套 ABP 相关的东西,我对 A ...

最新文章

  1. DivCo: Diverse Conditional Image Synthesis via Contrastive Generative Adversarial Network
  2. minicom HOWTO
  3. 常见的Java WEB服务器
  4. 怎么判断前轮左右的位置_汽车上主要传感器的安装位置,你知道多少?
  5. Django:视图和URL配置
  6. 使用腾讯bugly更新服务遇到的坑
  7. 围棋天才柯洁怒怼央视国际记者,用实力斩获清华大学免试资格
  8. 便携式不锈钢管道焊接机器人_304不锈钢管居然可以发黑?
  9. 编译安装mysql5.6.36_MySQL5.6.36编译安装
  10. jvm内存模型和java内存模型_JVM运行时内存模型综述
  11. [cocos2d]格式化获取当前layer的控件名
  12. python爬虫知识点总结(七)PyQuery详解
  13. 布比Code Review赏金计划正式启动 让区块链回归代码本身
  14. poj - problem 3070 Fibonacci 【矩阵 +快速幂】
  15. Serengeti Accomodation
  16. pytorch中的反卷积的output_padding参数
  17. 【语音合成】基于matlab两端音频合成【含Matlab源码 1490期】
  18. 原来,神文竟然是汉字
  19. debian7升级到debian9
  20. 计算机工资管理软件是,计件工资管理软件

热门文章

  1. CSS总结——导航栏
  2. modernizr_使用Modernizr和Yepnope进行递归增强
  3. 期货十三篇 第十二篇 技术篇
  4. 中国工商银行阿根廷分行用数据运营展现本地特色
  5. 适合学生党的移动电源有哪些?学生党移动电源推荐
  6. 【高数】微分中值定理有关的一道证明题
  7. 2345安全卫士与安全组件无法删除解决方案
  8. 移动端保存照片到手机相册
  9. 安装程序无法创建新的系统分区,也无法定位现有系统分区
  10. 亚马逊欧洲开店需要那些费用、资料及收款方式