分类 Golang 中的文章

使用skywalking监控gin web服务

简介 SkyWalking是一个开源的 APM 系统,包括对 Cloud Native 架构中分布式系统的监控、跟踪、诊断能力。核心功能如下。 服务、服务实例、端点指标分析 根本原因分析。在运行时分析代码 服务拓扑图分析 服务、服务实例和端点依赖分析 检测到缓慢的服务和端点 性能优化 分布式跟踪和上下文传播 数据库访问指标。检测……

阅读全文

使用gin+websocket实现任务的实时日志

背景 由于工作需要,在web端执行相关的部署操作,能够在页面实时展示部署任务的实时日志信息,使用到websocket来实现。 websocket通信特点 全双工通信协议 允许服务端主动向客户端推送数据 浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输……

阅读全文

使用session保存用户信息

gin-contrib/session支持的存储引擎 cookie redis 安装session包 1go get github.com/gin-gonic/contrib/session 基于cookie的session 创建cookieStore并放到gin中间件中 1func cookieSession(r *gin.Engine) { 2 store := sessions.NewCookieStore([]byte("secret")) 3 r.Use(sessions.Sessions("SESSIONID", store)) 4} main.go函数调用cookieSession 1func main() { 2 r := gin.Default() 3 cookieSession(r) 4 r.GET("/login", func(ctx *gin.Context) { 5 user := ctx.Query("user") 6 if user == "" {……

阅读全文

使用casbin做基于RBAC的权限验证

概述 Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。 Casbin可以 支持自定义请求的格式,默认的请求格式为{subject, object, action}。 具有访问控制模型model和策略policy两个核心概念。 支持RBAC中的多层角色继承,不止主体可以……

阅读全文

使用viper读取配置文件并允许使用环境变量

viper简介 Viper是Go应用程序的完整配置解决方案,包括12-Factor应用程序。它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式。它支持: 设置默认值 从JSON、TOML、YAML、HCL、envfile和Java属性配置文件中读取 实时观看和重新读取配置文件(……

阅读全文

使用aws-sdk-go上传对象到s3服务器

1.环境准备 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。 MinIO是一个非常轻量的服务,……

阅读全文

Go爬虫开发

引入 在具体讲解爬虫知识之前,我们首先简单回顾下前面HTTP编程。一种是我们自己编写一个服务器,让浏览器请求我们的服务器。接受请求后分析协议,回发相应数据给浏览器。 另一种,我们可以编写程序充当客户端或者说是用程序模拟浏览器行为,向互联网上现有的服务器发送请求,获取服务器上的数据。例……

阅读全文

Go-micro学习笔记(2)gRPC使用

使用gRPC构建一个简易的商品服务注册到etcd中 创建models/protos目录,新建商品模型 1syntax = "proto3";2package models;34// 商品模型 5message ProdModel{6 // @inject_tag: json:"pid" 7 int32 ProdId = 1;8 // @inject_tag: json:"pname" 9 string ProdName = 2;10}使用protoc创建服务 1syntax = "proto3";2package models;34import "models.proto";56message ProdRequest{7 int32 size = 1;8}910message ProdListResponse{11 repeated ProdModel data = 1;12}1314service ProdService{15 rpc GetProdList(ProdRequest) returns (ProdListResponse);16}使用proto……

阅读全文

Go-micro学习笔记(1)http调用

1. go-micro体验 1package main 2 3import ( 4 "fmt" 5 "github.com/micro/go-micro/web" 6 "net/http" 7) 8 9func main(){ 10 service := web.NewService(web.Address("127.0.0.1:8000")) 11 // 使用http原生的handlefunc 12 service.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 13 w.Write([]byte("hello world")) 14 }) 15 err := service.Run() 16 if err != nil { 17 fmt.Println(err) 18 } 19} 测试结果 1curl http://127.0.0.1:8000 2hello world 2. 使用web框架gin 1package main 2 3import ( 4 "github.com/gin-gonic/gin" 5 "github.com/micro/go-micro/web" 6 "net/http" 7) 8 9func main() { 10 r := gin.Default() 11 r.Handle("GET", "/", func(c *gin.Context) { 12 c.JSON(http.StatusOK, gin.H{ 13 "code": http.StatusOK, 14 }) 15 }) 16 service := web.NewService( 17 web.Name("demo_service"), 18……

阅读全文

Go操作Gitlab

Go操作Gitlab 环境准备 需要有一个Gitlab环境,可以使用下面的命令快速运行一个Gitlab 1 sudo docker run --detach \ 2 --hostname gitlab.example.com \ 3 --publish 443:443 --publish 80:80 --publish 22:22 \ 4 --name gitlab \ 5 --restart always \ 6 --volume /srv/gitlab/config:/etc/gitlab \ 7 --volume /srv/gitlab/logs:/var/log/gitlab \ 8 --volume /srv/gitlab/data:/var/opt/gitlab \ 9 gitlab/gitlab-ce:latest go-gitlab简介 go-gitlab几乎包含了gitlab上全部的api功能,这也是我们选择它的其……

阅读全文