当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

gmsec

Golang 微服务集成框架
授权协议 Apache
开发语言 Google Go
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 谭泳
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

gmsec 是一款 Golang 微服务集成框架。

特点

  • 打通grpc + gin,同时支持grpc 跟 restful 模式
  • grpc , gin 公用端口
  • gorm 嵌入,自动数据库代码生成

golang 微服务集成框架

安装

  • install

  • proto环境安装

 make install 
  • 本地环境搭建(gmsec为例)
make gen
  • 新建一个服务
make new service=[服务名]

proto定义

syntax = "proto3"; // 指定proto版本
package proto;     // 指定包名
option go_package = ".;proto"; // 指定路径

// 定义Hello服务
service Hello {
    // 定义SayHello方法
    rpc SayHello(HelloRequest) returns (HelloReply) {}
}
// HelloRequest 请求结构
message HelloRequest {
    string name = 1; // 名字
}
// HelloReply 响应结构
message HelloReply {
    string message = 1; // 消息
}

服务端代码示例

package main

import (
	"context"
	"fmt"
	proto "gmsec/rpc/gmsec"

	"github.com/gmsec/goplugins/api"
	"github.com/gin-gonic/gin"
	"github.com/gmsec/goplugins/plugin"
	"github.com/gmsec/micro"
	"github.com/xxjwxc/ginrpc"
)

func main() {
	// grpc 相关 初始化服务
	service := micro.NewService(
		micro.WithName("lp.srv.eg1"),
	)
	h := new(hello)
	proto.RegisterHelloServer(service.Server(), h) // 服务注册
	// ----------- end

	// gin 相关
	base := ginrpc.New(ginrpc.WithCtx(api.NewAPIFunc), ginrpc.WithDebug(dev.IsDev()))
	router := gin.Default()
	v1 := router.Group("/xxjwxc/api/v1")
	base.Register(v1, h) // 对象注册
	// ------ end

	plg, _ := plugin.Run(plugin.WithMicro(service),// grpc 入口
		plugin.WithGin(router), // http 入口
        plugin.WithAddr(":8080")) // 开始服务(公用端口)
    
	plg.Wait() // 等待结束(ctrl+c)
    
	fmt.Println("done")
}

// Ctx gin.Context 到 context.Context 的转换
func Ctx(c *gin.Context) interface{} {
	return context.Background()
}

客户端代码:

package main

import (
	"context"
	"fmt"
	proto "gmsec/rpc/gmsec"

	"github.com/gmsec/micro"
)

func main() {
    // reg := registry.NewDNSNamingRegistry()
	// grpc 相关 注册服务发现等
	micro.NewService(
        micro.WithName("lp.srv.eg1"),
        // micro.WithRegisterTTL(time.Second*30),      //指定服务注册时间
        // micro.WithRegisterInterval(time.Second*15), //让服务在指定时间内重新注册
        // micro.WithRegistryNaming(reg),
	)
	// ----------- end

	say := proto.GetHelloClient()
	ctx := context.Background()
	resp, _ := say.SayHello(ctx, &proto.HelloRequest{Name:"xxjwxc"})
	fmt.Println("result:", resp)
}

更多示例 => 传送门

正在做

  • etcdv3

传送门

  • gmsec 特点 打通grpc + gin,同时支持grpc 跟 restful 模式 grpc , gin 公用端口 gorm 嵌入,自动数据库代码生成 golang 微服务集成框架 grpc gorm 自动构建(gormt) gin 参数自动绑定工具(ginrpc) dns 注册发现(mdns) markdown/mindoc 文档自动导出 安装 install proto环境安装 make

 相关资料
  • 本文向大家介绍微服务哪些框架相关面试题,主要包含被问及微服务哪些框架时的应答技巧和注意事项,需要的朋友参考一下 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm 捐赠给 Apache 并加入 Apache 基金会等,为中国互联网人争足了面子,使得阿里巴巴在国人眼里已经从电商升级为一

  • ketchup 是一个基于 dotnet core 的微服务框架。网关:兼容 kong,rpc:grpc支持远程调用。

  • Adnc 是一个轻量级的 .Net Core 微服务开发框架,同时也适用于单体架构系统的开发。支持经典三层与DDD架构开发模式、集成了一系列主流稳定的微服务配套技术栈。

  • Seata 的事务上下文由 RootContext 来管理。 应用开启一个全局事务后,RootContext 会自动绑定该事务的 XID,事务结束(提交或回滚完成),RootContext 会自动解绑 XID。 // 绑定 XID RootContext.bind(xid); // 解绑 XID String xid = RootContext.unbind(); 应用可以通过 RootCon

  • 我有两个Spring Boot应用程序,它们最终调用外部REST API。其结构大致如下:

  • 背景说明 https://redhat.slides.com/ksoong/06_operational_intelligence 有关于此实践案例的详细说明。 总的来说,本部分通过示例(Step by Step) 的方式演示红帽的产品如何应用在微服务架构下。三个纬度去说明红帽微服务多产品集成背景。 单体(Monolith) → 微服务(Microservices) 这种架构的变迁有一定的必然性,

  • 该文档为服务端2.0接口文档,如果您第一次服务器端集成,我们强烈建议您直接使用服务端2.0接口,相较于服务端1.0的接口,服务端2.0接口上传数据更加稳定,并且提供了更丰富的接口。如设备信息、环境信息等。 对于无法在App客户端中布点的情况,您可以通过本文提供的接口,在应用服务器端或合适的位置时机上传用户及事件数据。 1. 接口地址 https://u.zhugeapi.com/open/v2/e

  • 我已经从github下载了CodeIgniter Rest服务器源代码https://github.com/chriskacerguis/codeigniter-restserver. 我已经根据自述文件集成,但我得到了一个错误的"无效的API密钥"与403禁止错误,当我调用像htttp://www.sitename.com:81/api/key/index生成第一次新的密钥并存储到数据库。 屏幕