All Projects → pzhen → gogrpcgin

pzhen / gogrpcgin

Licence: other
golang grpc gin

Programming Languages

go
31211 projects - #10 most used programming language

Labels

Projects that are alternatives of or similar to gogrpcgin

Go Project Sample
Introduce the best practice experience of Go project with a complete project example.通过一个完整的项目示例介绍Go语言项目的最佳实践经验.
Stars: ✭ 344 (+942.42%)
Mutual labels:  grpc, gin
Asgard
Asgarde Framework
Stars: ✭ 138 (+318.18%)
Mutual labels:  grpc, gin
Gowebsocket
golang基于websocket单台机器支持百万连接分布式聊天(IM)系统
Stars: ✭ 937 (+2739.39%)
Mutual labels:  grpc, gin
Ginrpc
gin auto binding,grpc, and annotated route,gin 注解路由, grpc,自动参数绑定工具
Stars: ✭ 157 (+375.76%)
Mutual labels:  grpc, gin
Ultimate Go
This repo contains my notes on working with Go and computer systems.
Stars: ✭ 1,530 (+4536.36%)
Mutual labels:  grpc, gin
Book
《Go 语言编程之旅:一起用 Go 做项目》本书涵盖细分为 5 + 1 板块,分别是命令行、HTTP、RPC、Websocket 应用、进程内缓存以及 Go 语言中的大杀器。
Stars: ✭ 167 (+406.06%)
Mutual labels:  grpc, gin
grpcman
A grpc testing tool based on Electron & Vue.js & Element-UI
Stars: ✭ 22 (-33.33%)
Mutual labels:  grpc
gin-sample
gin sample
Stars: ✭ 32 (-3.03%)
Mutual labels:  gin
kubernetes-go-grpc
Microservices using Go, gRPC and Kubernates
Stars: ✭ 35 (+6.06%)
Mutual labels:  grpc
pool
Connection pool for Go's grpc client with supports connection reuse.
Stars: ✭ 105 (+218.18%)
Mutual labels:  grpc
ContosoLending
An ASP.NET Core 3.1 app showcasing gRPC, server-side Blazor, SignalR, and C# 8.
Stars: ✭ 15 (-54.55%)
Mutual labels:  grpc
docker-protobuf
An all-inclusive protoc Docker image
Stars: ✭ 105 (+218.18%)
Mutual labels:  grpc
xrgrpc
gRPC library for Cisco IOS XR
Stars: ✭ 40 (+21.21%)
Mutual labels:  grpc
druid-prometheus-exporter
Service to collect Apache Druid metrics and export them to Prometheus
Stars: ✭ 14 (-57.58%)
Mutual labels:  gin
dalal-street-client
Frontend client for Dalal Street
Stars: ✭ 13 (-60.61%)
Mutual labels:  grpc
grpc-fullstack-demo
GRPC full stack application demo ( Backend/ Cli / Android / iOS / Web )
Stars: ✭ 23 (-30.3%)
Mutual labels:  grpc
egoshop
An e-shop is written by Go
Stars: ✭ 86 (+160.61%)
Mutual labels:  gin
grpc-go-kit-example
go-kit and gRPC
Stars: ✭ 30 (-9.09%)
Mutual labels:  grpc
goft-gin
基于gin的开发脚手架
Stars: ✭ 108 (+227.27%)
Mutual labels:  gin
gin-swagger
DRY templates for go-swagger
Stars: ✭ 79 (+139.39%)
Mutual labels:  gin

golang-grpc-gin

简介

本程序是一个 简陋的 demo ,没有业务就只是为了打通rpc与gin 数据库操作,用来学习grpc,gin 框架所写。

grpc 提供服务,gin调用服务从而提供 RESTfull Api, demo还非常简陋,后面继续完善。

特性

  • 1.rpc : 采用 grpc 框架 实现 rpc 服务调用

  • 2.api : 采用 gin 框架 实现RESTfull api

  • 3.db : 采用 xorm 操作 mysql 实现分库,主从

  • 4.package : 采用 glide 实现包管理

  • 5.全文检索引擎 : 采用es 实现es的配置以及相关操作

目录结构

.
├── README.md
├── api                   Api 应用
│   ├── api.go            应用入口
│   ├── caches
│   ├── client
│   ├── controllers
│   ├── logs
│   ├── models
│   └── routers
├── conf                  配置
│   ├── conf.go
│   ├── conf_dev.toml
│   └── conf_pro.toml
├── core                  module
│   └── model.go
├── glide.lock
├── glide.yaml
├── pb                    protobuf 描述文件目录
│   ├── srvcomic.pb.go
│   ├── srvcomic.proto
│   └── srvnews.proto
├── rpc.go                RPC应用入口
├── service               服务
│   ├── register.go       服务注册
│   ├── srv-comic         
│   └── srv-news
├── utils                 工具函数
│   ├── utils_log.go
│   └── utils_string.go
└── vendor                第三方包

封装的内容

grpc部分

  • 1.拦截器

    服务端: 可以理解成gin中的 middleware ,其他语言中的 hook。实现 异常的捕获,恢复防止程序意外退出。以及函数栈执行时间。

    客户端: 拦截器 执行时间, 连接池(虽然http2已经足够快保持长链接,这里也手动实现下)

  • 2.trace

    利用golang 标准库 trace 来实现 服务调用的跟踪,如果想更详细的trace可以结合 zipkin。

  • 3.mysql

    采用了xorm 实现通过主从可以操作多个数据库。

  • 4.配置加载

    采用 toml 来对配置的解码,针对 开发环境 生产环境 加载不同配置

  • 5.es

    es主从配置的封装等

api部分

  • 1.middleware

    jwt 验证,recover 异常的捕获与恢复,防止程序退出。

    MVC 目录划分

    路由分组规划(私有以及公开路由)

数据表

只是简单的几个字段。


DROP TABLE IF EXISTS `comic_info`;

CREATE TABLE `comic_info` (
  `comic_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `comic_name` varchar(32) NOT NULL DEFAULT '' COMMENT '名字',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1:正常2:关闭',
  `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '时间',
  PRIMARY KEY (`comic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='漫画';

LOCK TABLES `comic_info` WRITE;
/*!40000 ALTER TABLE `comic_info` DISABLE KEYS */;

INSERT INTO `comic_info` (`comic_id`, `comic_name`, `status`, `create_time`)
VALUES
	(1,'啊 啊啊啊',1,12121212),
	(2,'分水电费水电费',1,111110),
	(3,'吞吞吐吐',2,9999);

使用

前提是 对golang有所熟悉, 比如环境搭,工具链的使用。

1.git clone https://github.com/pzhen/golang-grpc-gin.git ./gogrpcgin 执行 glide up 将类包更新下来(需要vpn,你懂得)

2.将数据表导入mysql

3.然后修改配置文件中的数据库信息。

4.分别运行 go run rpc.go | go run api.go

5.访问 http://localhost:8080/rpc/comic/test 可以看到数据,命令行查看调用栈时间

可以手动抛出 panic ,来验证拦截器。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].