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

帮别人设计网站的网站吗成都大型广告公司有哪些

帮别人设计网站的网站吗,成都大型广告公司有哪些,哈尔滨建设工程信息网官方网站,一起做网站女装夏季1. 背景 新业务线带来新项目启动#xff0c;需要改进原有项目的基础框架和组件能力#xff0c;以提升后续开发和维护效率。项目搭建主要包括技术选型、框架搭建、基础服务搭建等。这其中就涉及到链路追踪的内容#xff0c;结合其中的踩坑情况#xff0c;用一篇文章来说明完…1. 背景 新业务线带来新项目启动需要改进原有项目的基础框架和组件能力以提升后续开发和维护效率。项目搭建主要包括技术选型、框架搭建、基础服务搭建等。这其中就涉及到链路追踪的内容结合其中的踩坑情况用一篇文章来说明完整的链路搭建过程。 2. 技术选型 2.1 方案对比 图【1】来自网络请自行对比验证 图 1 2.2 选型 本项目基于golang和gin框架以及链路中间件对比选择jaeger作为工具进行集成。 3. 核心实现 3.1 jaeger服务搭建 这里就借助网上的all-in-one的docker方式搭建即可无需多费力。 docker run --rm --name jaeger \-e COLLECTOR_ZIPKIN_HOST_PORT:9411 \-p 6831:6831/udp \-p 6832:6832/udp \-p 5778:5778 \-p 16686:16686 \-p 4317:4317 \-p 4318:4318 \-p 14250:14250 \-p 14268:14268 \-p 14269:14269 \-p 9411:9411 \jaegertracing/all-in-one:1.60 这里启动了很多端口详细的自查即可这里两个比较重要的端口如下 16686服务前端端口ip:port 可访问UI 6831项目中连接端口 jaeger界面图【2】所示。 图 2 3.2 protoc编译器及语言插件安装 protobuf协议是一种跨语言、跨平台的数据结构序列化和反序列化框架类似于thrift协议 1 编写 .proto ⽂件⽬的是为了定义结构对象message及属性内容。 2 使⽤ protoc 编译器编译 .proto ⽂件⽣成⼀系列接⼝代码存放在新⽣成头⽂件和源⽂件中。 3 依赖⽣成的接⼝将编译⽣成的头⽂件包含进我们的代码中实现对 .proto ⽂件中定义的字段进行设置和获取和对 message 对象进行序列化和反序列化 安装 go install google.golang.org/protobuf/cmd/protoc-gen-golatest go install google.golang.org/grpc/cmd/protoc-gen-go-grpclatest编写proto文件 syntax proto3;option go_package ./proto; package helloworld;service Greeter {rpc SayHello (HelloReq) returns (HelloResp); }message HelloReq {string name 1; }message HelloResp {string message 1; }编译proto protoc --go_out ../ helloword.proto3.2 项目实现 项目架构是上层服务http下层服务rpc选用protobuf协议跨语言、跨平台的数据结构序列化和反序列化框架类似于thrift协议作为就以简单的helloword为例实现。 核心插件jaeger、opentracing和otgrpc 在上层增加中间件并注册到engine上。 package middlewareimport (github.com/gin-gonic/gingithub.com/opentracing/opentracing-gogithub.com/uber/jaeger-client-gojaegercfg github.com/uber/jaeger-client-go/config )func Trace() gin.HandlerFunc {return func(ctx *gin.Context) {cfg : jaegercfg.Configuration{ServiceName: demo, //服务名称Sampler: jaegercfg.SamplerConfig{Type: jaeger.SamplerTypeConst,Param: 1,},Reporter: jaegercfg.ReporterConfig{LogSpans: true,LocalAgentHostPort: xxxx:6831, //jaeger 服务器ip},}tracer, closer, err : cfg.NewTracer()if err ! nil {panic(err)}opentracing.SetGlobalTracer(tracer)defer closer.Close()startSpan : tracer.StartSpan(ctx.Request.URL.Path)defer startSpan.Finish()ctx.Set(tracer, tracer)ctx.Set(parentSpan, startSpan)ctx.Next()} }// rpc调用设置globaltracer consul : ServerConfig.Consul conn, err : grpc.Dial(fmt.Sprintf(consul://%s:%s/%s?wait14s, consul.Host, consul.Port, ServerName),grpc.WithTransportCredentials(insecure.NewCredentials()),grpc.WithDefaultServiceConfig({loadBalancingPolicy: round_robin}),grpc.WithUnaryInterceptor(otgrpc.OpenTracingClientInterceptor(opentracing.GlobalTracer())), //这里把全局tracer传下去 )// 注册路由中间件 engine.Use(middleware.Trace())启动项目访问就可以在jaeger上看到链路信息。 图 3 点击进入详情页查看信息这时候大家发现一个问题这里只有http层的调用信息没有rpc层这也是网上所有介绍的文档里没有说明白的一点。 图 4 真正原因是中间件代码里的tracer和parentSpan没有传递下去。 startSpan : tracer.StartSpan(ctx.Request.URL.Path) defer startSpan.Finish() ctx.Set(tracer, tracer) ctx.Set(parentSpan, startSpan) // 虽然设置了没有跟随rpc传下去 ctx.Next()怎么传递呢这里是关键 首先是在rpc服务发现时传递全局tracer #引入传递tracer的包 go get github.com/lisw358/tts_otgrpc源码里有一个地方别人做了改动来实现tracer传递改动如下 //自己改源码部分开始 //获取到父span和trace //此处需要在ctx上有这个key来向下传递tracer和parentSpan ginConetext : ctx.Value(ginContext) switch ginConetext.(type) { case *gin.Context://获取traceif itrace, ok : ginConetext.(*gin.Context).Get(tracer); ok {tracer itrace.(opentracing.Tracer)}//获取父spanif parentSpan, ok : ginConetext.(*gin.Context).Get(parentSpan); ok {parentCtx parentSpan.(*jaeger.Span).Context()} } //自己改源码部分结束因此全局定义一个ContextWapper来增加ginContext的设置 func ContextWrapper(c *gin.Context) context.Context {return context.WithValue(context.Background(), GinContext, c) }然后在调用时处理一下context即可 req : proto.HelloReq{} req.Name c.DefaultQuery(name, guest)//这里包装了一下context来保证otgrpc包里能正常判断ginContext变量来生成子span res, _ : services.SayHello(global.ContextWrapper(c), req) c.JSON(0, res.Message) jaeger链路追踪结果如图【5】所示 图 5 本文完 参考文档 jaeger tracing documenthttps://chenquan.me/posts/tracing-system-analysis/https://github.com/lisw358/tts_otgrpchttps://blog.51cto.com/u_15481067/11749036 如有侵权烦请联系删除
http://www.hkea.cn/news/14409638/

相关文章:

  • 做个企业网网站怎么做网站seo监测
  • 双语网站系统影视网站cpa 如何做
  • 重庆网站空间键词排名企业资质查询
  • 深圳网站 商城制作网站正能量视频不懂我意思吧
  • 网站几个数据库简单的html网页制作
  • 微云做网站广州模板建站系统
  • 河南省住房和城乡建设网站分类信息网站建设系统
  • 自主建站网站app下载软件免费下载
  • 淘宝网站建设类别报价表
  • 南宁中小企业网站制作自建网站如何盈利
  • 常州建设工程监理员挂证网站做服务网站要多少钱
  • 网站怎么做二级页面莆田有哪些网站建设公司
  • 厦门网站建设技术支持菜鸟式网站建设图书
  • 欧洲网站设计网站建设与运营课程
  • 物流网站做代理我想自己建立一个网站
  • 国内大型php网站建设母版页做网站例子
  • 洋气的设计公司名字浙江网站建设方案优化
  • 网站建设需求登记表 免费下载建网站流程 知乎
  • 考研门户网站的建设网络运维基础知识
  • 四川建设网网站首页营销型网站开发公司
  • 电子商务网站建设步骤上海建网站公司排名
  • 常州网站建设公司哪个好优化师培训
  • h5手机网站怎么做网站怎么建设可以发图评论
  • h5做的网站贵州省职业技能学历双提升工程app
  • 大连网站建设方案维护cms可以做多少个网站
  • 纳税服务网站建设情况什么网站教你做美食
  • 微信分销网站建设网站建设的软文怎么写
  • 怎么进入网站空间台州市建设施工图审图网站
  • p2p视频网站建设网站广告链接怎么做
  • 网站内怎么做搜索tk免费域名注册网站