TARS功能特性

多语言

TARS最早使用C++语言进行开发,随着业务的发展,逐步实现了C++/JAVA/PHP/NodeJS/Go的服务端和客户端。

也可以使用Python语言等作为客户端,进行服务的调用。

更多语言,包括C#等,也在逐步的开发中。

各语言均已支持基本的RPC能力,不同语言之间,使用统一的接口定义语言tars来约定协议。

同时,TARS会针对各种语言的不同特性, 开发相对差异化的功能。

高性能是各种语言开发时应该遵循的重要准则。使用目前支持的语言开发的服务, 均已经过大流量的线上验证, 符合业务的高并发与高可用要求。

敏捷研发

首先,使用TARS可以快速的构建微服务。

其次,由于TARS多语言的特性, 对团队技术栈的差异有很高的兼容性。

对于需要快速迭代开发的场景,开发者可以选择使用PHP搭建微服务;

而对于一些性能要求比较极致的场景, 开发者则可以搭建基于C++的微服务。

最后, TARS在各个语言的实现中, 都配备了服务端和客户端的自动代码生成工具。

通过这个工具:

  • 服务调用者可以非常方便的根据协议生成调用代码,并像调用本地函数一样调用远程服务。

  • 服务提供者可以很快的生成代码的骨架,并在其中进行快速的需求开发。

高可用

TARS本身提供了一系列的基础服务, 这些基础服务有效的保证了TARS的高可用。

这些基础服务包括:

  • Tars-Registry: 主控服务,中心化存储所有服务的可用地址,分布式部署,db存储。

  • Tars-Node: 节点服务,负责监控机器上所有的tars服务, 并在发现异常后及时恢复服务。

  • Tars-State: 监控服务,负责收集服务状态、机器状态、调用情况等监控信息, 通过设置不同的告警策略, 及时通知服务异常;

除此之外,各语言为了保证高可用,都会对服务可用列表进行一定时间的缓存,保证主控有问题的时候, 可以使用本地可用服务列表。

部分语言也已经实现了如果遇到某个服务ip不可用的情况, 自动标记并剔除的功能。

高效运营

TARS在发布的时候,也提供了无损的选项。通过使用无损发布,可以实现类似于nginx reload的功能。

由于各语言框架不同, 无损发布的实现的方式也各不相同。

服务分批无损重启,即在可用时再对外提供服务,已经成为了大部分高可用发布的标准选择。

同时, 由于TARS是自带运维管理后台的, 因此它天然比单纯的RPC框架更强大一些。

通过运维管理后台,使用者可以轻松完成如下工作:

  • 查看可用服务ip列表。

  • 对单台机器进行服务配置变更。

  • 服务发布和版本回退。

  • 查看调用上报的监控信息。

  • 查看机器和服务上报的监控信息。

  • 单个或批量进行服务配置。

Last updated