Tars
Tars is a high-performance RPC framework based on name service and Tars protocol, also integrated administration platform, and implemented hosting-service via flexible schedule.
TARS is a battle-tested microservices framework from Tencent that handles cross-language RPC, service discovery, monitoring, and configuration management for large distributed systems.
TARS is a framework for building distributed services, originally developed at Tencent under the name TAF (Total Application Framework). Tencent has used it internally since 2008, and services built on it have run across more than 16,000 machines. It is now hosted under the Linux Foundation as an open-source project.
At its core, TARS provides RPC (remote procedure call), which is a way to let one service on one machine call a function on another machine across a network as if it were a local call. The framework handles the low-level communication, encoding and decoding of messages, and service discovery (finding where services are running) through a built-in name service. It also bundles monitoring, statistics collection, and centralized configuration management so these do not need to be wired up separately.
TARS supports five programming languages: C++, Java, Go, Node.js, and PHP. Each language has its own client and server libraries that share the same wire protocol, so services written in different languages can talk to each other. The repository is organized as a collection of submodules, one per language plus shared infrastructure, a web-based administration console, and protocol tooling.
The administration platform gives operators a single place to deploy services, view metrics, and manage configuration across a fleet of machines. This covers the operational side of running many microservices without needing to jump between separate tooling for each concern.
TARS runs on Linux, macOS, and Windows. Installation can be done from source or via Docker images, with documentation at tarscloud.github.io. The license is BSD-3-Clause.
Where it fits
- Build a fleet of microservices in C++, Java, Go, Node.js, or PHP that call each other using RPC as if they were local functions.
- Deploy and monitor thousands of service instances through the built-in web administration console without separate tooling.
- Add centralized monitoring, statistics collection, and configuration management to a distributed system in one framework.