Skip to content

xiaokugua250/perch

Repository files navigation

perch

Golang Code And Others,k8s,colly,grpc,mysql,micro-service,docker,docker-compose

项目内容说明

   本项目为个人项目,项目以Golang为主,包括go-web、go-spider、grpc等基础语言编码内容以及kubernetes、etcd等高阶内容。主要涉及到的内容有:

  1. 基于Golang的微服务开发
  2. 基于docker,kubernetes的容器管理平台开发
  3. 基于colly的go语言爬虫开发
  4. 基于grpc的分布式服务调用和任务分发

  项目主要目的是对自己技能的总结和部分想法的实现。
  目前项目部署实例为 https://z-gour.com
  部署方式为minkube集群中以kubernete容器方式进行部署。采用到的kubernetes资源有

  • pod 运行底层前端服务和后端服务
  • service 集群内网络访问
  • ingress 允许外部网络访问
  • cert-manager 证书签发和续期

minikubekubernete集群中部署可以参考deploy目录中的k8s_deploy目录。

下面对项目中各目录对应信息进行说明:

  • api: 项目API
  • cmd: 部分项目入口程序和可执行程序
  • configs: 项目配置
  • database: 数据库相关代码
  • deploy: 项目部署文件,包括dockerfile、docker-compose.yaml等
  • docs: 项目文档
  • internal: 内部使用库
  • pkg: 项目内部库
  • scripts: 项目脚本
  • third_party: 第三方工具,如ETCD
  • tools: 项目通用工具包
  • web: 项目内嵌微服务集合
  • website: 项目前端文件
  • .gitignore: ignore文件
  • Makefile: Makefile文件
  • go.mod: go mod文件
  • version.sh: 生成go_version.go脚本

后端

本项目的后端采用Golang语言开发,涉及到的工具包有

前端

  本项目前端采用vue.js,具体框架采用vue-element-admin,对原作者PanJiaChen表示感谢.

  前端计划采用buefy或原生bulma进行调整优化

已完成

待完善

  • minikube集群部署(cert-manager 证书管理)
  • 利用ttyd提供容器内终端访问
  • 基于jwt-go的jwt 认证
  • 基于RBAC的用户管理
    • 采用casbin 进行混合rbac和restful权限管理
  • 基于Makefile和Dockerfile的服务构建
    • 编译golang项目时打包版本信息[采用build.sh 脚本生成api版本信息]
  • web 框架调整和优化
    • 基于mux的微服务框架
    • 日志功能
    • Error错误处理
    • 采用中间件模式添加服务prometheus 指标
    • web配置文件解析(yaml配置文件的解析)

TODO

  • golang 配置文件解析
  • Linux 监控服务API开发
  • 前端开发
  • 用户管理与RBAC
  • kubernetes集群管理
  • kubernetes YAML应用部署和访问
  • 熔断器和限流器
  • golang 代理服务
  • ssh /tcp 代理,多层代理
  • 基于NSQ的消息订阅发布模式
  • 采用go-guard 统一认证

项目布局参考:
https://github.com/golang-standards/project-layout

  • 去除src目录
  • 使用expvar包进行服务监控

参考资料

[1].http://www.hatlonely.com/2018/06/21/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E7%BB%84%E4%BB%B6%E4%B9%8B%E9%99%90%E6%B5%81%E5%99%A8%E4%B8%8E%E7%86%94%E6%96%AD%E5%99%A8/
[2].https://mojotv.cn/go/prometheus-client-for-go
[3].https://pkg.go.dev/golang.org/x/time/rate
[4].https://github.com/didip/tollbooth