当前位置: 首页 > news >正文

做外贸阿里巴巴有哪些网站滨州网站seo

做外贸阿里巴巴有哪些网站,滨州网站seo,新疆建设职业技术学院校园网站,海口网站建设方案go-moda golang 通用的 grpc http 基础开发框架仓库地址: https://github.com/webws/go-moda仓库一直在更新,欢迎大家吐槽和指点 特性 transport: 集成 http(echo、gin)和 grpc。tracing: openTelemetry 实现微务链路追踪pprof: 分析性能config: 通用…

go-moda

  • golang 通用的 grpc http 基础开发框架
  • 仓库地址: https://github.com/webws/go-moda
  • 仓库一直在更新,欢迎大家吐槽和指点

特性

  • transport: 集成 http(echo、gin)和 grpc。
  • tracing: openTelemetry 实现微务链路追踪
  • pprof: 分析性能
  • config: 通用的配置文件读取模块,支持 toml、yaml 和 json 格式。
  • logger: 日志系统模块,基于 Zap,并支持全局日志和模块日志。

快速使用

conf.toml

http_addr = ":8081"
grpc_addr = ":8082"

启用http(gin) 和 grpc服务

package mainimport ("context""net/http""github.com/gin-gonic/gin"app "github.com/webws/go-moda""github.com/webws/go-moda/config"pbexample "github.com/webws/go-moda/example/pb/example""github.com/webws/go-moda/logger"modagrpc "github.com/webws/go-moda/transport/grpc"modahttp "github.com/webws/go-moda/transport/http"
)var ServerName stringtype Config struct {HttpAddr string `json:"http_addr" toml:"http_addr"`GrpcAddr string `json:"grpc_addr" toml:"grpc_addr"`
}func main() {conf := &Config{}if err := config.NewConfigWithFile("./conf.toml").Load(conf); err != nil {logger.Fatalw("NewConfigWithFile fail", "err", err)}// http servergin, httpSrv := modahttp.NewGinHttpServer(modahttp.WithAddress(conf.HttpAddr),)registerHttp(gin)// grpc servergrpcSrv := modagrpc.NewServer(modagrpc.WithServerAddress(conf.GrpcAddr),)grecExample := &ExampleServer{}pbexample.RegisterExampleServiceServer(grpcSrv, grecExample)// app runa := app.New(app.Server(httpSrv, grpcSrv),app.Name(ServerName),)if err := a.Run(); err != nil {logger.Fatalw("app run error", "err", err)}
}func registerHttp(g *gin.Engine) {g.GET("/helloworld", func(c *gin.Context) {logger.Debugw("Hello World")c.JSON(http.StatusOK, http.StatusText(http.StatusOK))})
}type ExampleServer struct {pbexample.UnimplementedExampleServiceServer
}func (s *ExampleServer) SayHello(ctx context.Context, req *pbexample.HelloRequest) (*pbexample.HelloResponse, error) {return &pbexample.HelloResponse{Message: "Hello " + req.Name}, nil
}

运行

go run ./ -c ./conf.toml
  • 请求 http url http://localhost:8081/helloworld
  • grpc 服务 使用 gRPC 客户端调用 SayHello 方法

其他服务启用示例

  1. echo http :example_echo
  2. net http :example_echo
  3. grpc example_grpc

pprof 性能分析

启动服务默认开启 pprof 性能分析,浏览器打开 http://localhost:8081/debug/ 查看

可视化分析 gouroutine

go tool pprof http://localhost:8081/debug/pprof/goroutine
(pprof) web

可能提示 需要先安装 graphviz, mac 下可以使用 brew 安装

brew install graphviz

tracing 链路追踪

  • 使用 opentelemetry 实现微服务链路追踪,目前 exporter 支持 jaeger
  • 示例集成了docker 环境,支持 make deploy 同时启动 jaeger,api1,api2,api3,grpc 服务
  • 详细示例请看:tracing_example
  1. 初始化 jaeger tracing
import "github.com/webws/go-moda/tracing"
func main(){//...shutdown, err := tracing.InitJaegerProvider(conf.JaegerUrl, "grpc-server")if err != nil {panic(err)}defer shutdown(context.Background())//...
}
  1. 在代码主动tracing start
  ctx, span := tracing.Start(c.Request().Context(), "api1")defer span.End()
  1. 服务之间调用 产生的链路
  • server端: 增加 WithTracing 即可
    //...gin, httpSrv := modahttp.NewGinHttpServer(modahttp.WithAddress(conf.HttpAddr),modahttp.WithTracing(true),)
  • client端: 封装了 CallAPI 方法, 已将span ctx 信息注入到请求头
    // ..._, err := modahttp.CallAPI(ctx, url, "POST", nil)

http://www.ritt.cn/news/27698.html

相关文章:

  • qq发网站链接怎么做百度seo建议
  • 一个网站可以做多少弹窗广告企业邮箱如何申请注册
  • 莱芜吧贴吧最新消息运城seo
  • wordpress问答站模板湖南网站设计外包费用
  • 广东住房和城乡建设厅网站北京seo供应商
  • 整站优化 快速排名交易平台官网
  • 百度怎么推广网站产品如何推广市场
  • 网站建设新手年度关键词有哪些
  • 网站暂停怎么做网站推广模式
  • 深圳做网站建设网络营销策略存在的问题
  • wordpress注册用户上传权限首页关键词排名优化
  • 小说网站的网编具体做哪些工作百度电脑端网页版入口
  • 防水网站建设焊工培训ppt课件
  • 那个网站做兼职靠谱潍坊百度网站排名
  • 公司网站做二维码网址seo 网站推广
  • 顺德网站制作案例价位武汉seo霸屏
  • 做最最优秀的视频网站有哪些如何做好互联网营销
  • b2c 网站做seo优化360推广登陆入口
  • 苏州市网站建设服务网站编辑seo
  • 网站服务器有什么用seo百度快速排名
  • 网站开发后台需要什么技术网页关键词优化软件
  • 网站建设表格代码企业网站seo平台
  • 网站建设怎么搞国际外贸网络交易平台
  • 餐饮公司 网站建设百度怎么精准搜索
  • 凡科怎么建站教程上海网站seo招聘
  • 襄城县城乡建设管理局网站晋中网站seo
  • 网站开发平台的定义play商店
  • 病理学系列教材的建设与实践 教学成果奖申报网站东莞关键词排名快速优化
  • 怎么注册公司需要多少钱南宁网站seo外包
  • 网站手机版怎么做的google搜索