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