腾讯微服务框架 Tars 的 Go 性能提升之路

前言

在 4 月 27 日举办的 Gopher China 2019 中,来自腾讯 Tars 团队的核心成员陈明杰进行了一场题为《Tars Go 性能提升之路》的演讲。陈明杰,负责腾讯容器云平台及机器学习平台的建设和运营,目前专注 Tars 开发框架的 Golang 版本开发。

以下为演讲实录。

No.0

前言

今天给大家带来微服务的解决方案 Tars 以及过程中的性能优化和容器解决方案里面的一些问题和经验。Tars 是将腾讯内部使用的微服务架构 TAF(Total Application Framework)多年的实践成果总结而成的开源项目,是基于名字服务使用 Tars 协议的高性能RPC开发框架,同时配套一体化的服务治理平台,在腾讯内部已经使用了十年有余。

今天的分享主要分为以下七个部分:

  • Tars 是什么

  • Tars 协议分析

  • Tars 架构体系

  • TarsGo 的由来

  • TarsGo 解决了那些性能问题

  • Tars 应用案例

  • 相关问题以及回答

No.1

Tars 是什么

Tars这个名字来自星际穿越电影机器人Tars,电影中Tars有着非常友好的交互方式,任何初次接触它的人都可以轻松的和它进行交流,同时能在外太空、外星等复杂地形上,超预期的高效率的完成托付的所有任务。拥有着类似设计理念的Tars也是一个兼顾易用性、高性能、服务治理的框架,目的是让开发更简单,聚焦业务逻辑,让运营更高效,一切尽在掌握。

在基础设施方面 Tars 是支持物理机,也支持虚拟机以及容器。在协议方面我们除了支持本身的 Tars 协议之外,还支持TUP、SSL、PB、Http1/2以及自定义协议。 Tars 协议是类似于 protocol buffers 的一个协议, Tars 已有将近10年的大规模应用经验,比谷歌的GRPC开发出来的还要早。

在调用方式上,现在是支持几种调用方式一个是同步,一个是异步,一个是单向。同步调用是比较常见的调用方法,第一个是我们同步调服务端返回我们做后续的处理。另外我调完之后写一个回调处理类,让服务端返回结果后会调我的回调处理类去处理后续要做的事情。还有单向调用,比如说监控上报,我不需要服务端给我反馈成功或者失败,因为我不想因为它拖垮我的服务,它会影响我整体的流程。所以说单向调过去不需要服务端给我返回。

在服务治理方面, Tars 除了支持常见的微服务的治理方案就是服务注册发现、负载均衡、熔断、服务配置,我们还支持日志的集合、自定义监控,还有分布式追踪这一系列的微服务的能力。我们还提供了一个OSS平台,OSS是tars的管理平台。在语言方面最早的版本是C++,C++程序用了很多年,从QQ第一个版本到现在内部基本上都是C++。现在慢慢的大家语言越来越多,像java,在之前大概也有四五年的历史是用java在做的,不过,最近这几年大家重心都转向了GO。C++或者java的程序员很多都转向了Go,还有一个DEVOPS平台,devops平台就是包括代码管理、代码编译、自动化测试、持续部署、推动发布的这些能力。

640?wx_fmt=png

No.2

Tars RPC协议分析

我们看一下 Tars 协议是什么样的协议,首先,我们也有一个struct,后面跟着struct的名字,前面第一列0和1是type,每个字段排一个type,type只能是增长的,比如说0、1下面可以定义9,但是不能反回去0。接下来字段就是require对应这个字段,必须要传过来。optional是可以传也可以不传。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值