开源推荐-C++开发的微服务框架Tars
Tars项目于2017年4月开源,BSD3协议,至今已有5年。在软件层面,社区的版本保持稳定的迭代,支持了多语言微服务的开发和治理;在硬件层面,也移植到Arm生态上。Tars可以帮助开发人员和企业,以微服务的方式快速构建自己稳定可靠的分布式应用,从而令开发人员只关注业务逻辑,提高开发和运营效率。
项目背景介绍
Tars微服务生态
Tars致力于建设微服务技术生态,在底层基础设施、服务框架、上层应用以及DevOps等方面,都做了较为深入的研发。
- 服务可以部署在物理机、虚拟机、容器、K8S 上,兼容Windows、Linux和MacOS;数据可以选择存储在 Cache、数据库或者文件系统上
- 支持丰富的协议,如自研的TARS协议、TUP协议,也支持业界常用的 SSL、HTTP、PB 等。此外还可以自定义协议。在RPC调用上可以进行同步、异步和单向多种方式
- 框架原生集成了丰富的服务治理功能,包括但不限于服务注册/发现、负载均衡、自定义监控、日志、过载保护、熔断机制、IDC/SET部署,等等能力。
- 在应用层面,社区计划支持各种业务应用,如深度学习、边缘计算与API网关等等。
- 在生态支撑方面,Tars框架支持多种编程语言,包括 C++、Go、Java、Node.js、PHP 等。同时还可以结合各种DevOps工具实现持续集成和持续发布。
Tars子基金会
2020年3月10日,Linux基金会正式宣布旗下的TARS开源项目成立TARS子基金会。这是一个专注于微服务领域的开源基金会,致力于帮助企业拥抱微服务体系架构,解决在使用微服务方面可能出现的问题。这是首个起源于中国开源项目的国际开源基金会,也是Linux基金会下唯一聚焦微服务技术生态的子基金会。
Tars基金会里目前收录了9个项目,分为5部分:工具集(Tars Lab)、服务治理(Service Governance)、微服务开发框架(Development Framwork)、存储(DCache)和基础设施(Infrustructure)。
1、Tars Lab
Tars Lab
Tars Lab项目提供了压力测试TarsJMeter,基准测试集TarsBenchmark和一些开发工具包。TarsJavaStart,可以生成服务端和客户端的TarsJava脚手架,快速开始Tars服务的开发。TarsTools,是一款支持多种IDE的JetBrains插件,为实现编辑Jce/Tars文件使用的(支持Intellij IDEA、Android Studio、PhpStorm、WebStorm、GoLand、CLion等)。
2、服务治理
服务治理项目
服务治理包含了2个项目:TSeer专注于处理服务注册与发现;TarsGateway是基于Tars框架开发的微服务网关,除具备网关的基础功能外,还可以自动将HTTP转换成Tars-RPC协议。
3、微服务开发框架
开发框架
这部分只包含Tars一个项目,核心模块由C++开发,提供了多语言开发框架,默认rpc调用,是Tars基金会的核心项目。其他项目都是围绕这个项目研发的。
4、微服务存储
微服务存储
这部分只包含DCache一个项目,它是基于Tars框架开发的分布式共享内存存储系统,支持常用的kv数据结构、支持二级索引、支持在线扩缩容、支持自动持久化到后端db等特性。DCache依赖Tars框架的运行,但也得益于Tars,使得存储服务的运维成本几乎为0。
5、微服务基础设施
微服务基础设施
这是一个将Tars与K8S融合使用的项目,致力于将Tars融入到K8S生态中。
在这方面还有一个更优秀的项目K8SFramework,致力于将Tars与K8S深度融合,相信未来会纳入到基金会中。
Tars的前世今生
Tars的前身是腾讯内部的TAF框架,已经经过了10年的验证,稳定运行与1.6w+服务器,100多个业务线中。
友商评价
据统计,Tars已在超过120家公司、261200台服务器上稳定运行。
使用体验
在分布式环境下,所有的微服务(包括DCache的服务)都可以通过框架自带的控制台-TarsWeb进行管理,可以做到所有服务状态可监控,可以在控制台上进行启停、修改配置、执行运维指令等操作。
白屏化运维
在分布式部署的情况下,可以通过Web控制台实现一键升级、回退。
海量节点一键升级/回退
Tars自带配置中心,分级配置,可以统一修改配置,做到“一点修改,全局生效”。
一点修改配置
在服务部署时,可以在界面上填写要发布的节点,一键部署、扩容。
一键扩容
框架提供了状态监控的能力,可以监控服务的调用质量,如流量情况,平均耗时、超时率和异常率。
状态监控
框架状态可以在控制台上一键核查。
框架状态
Tars提供配套的性能测试工具,这也是Tars基金会的子项目。性能测试工作不再依赖专业的测试人员。
集成性能测试工具
与SpringCloud对比
Tars优势
1、原生RPC调用
Tars使用自研的RPC协议通信,服务之间建立长连接,在通信频繁的场景下具备显著的性能优势。
2、多语言支持
除C++和Java外,Tars还支持NodeJs,PHP,Go等语言,提供了相应的SDK。当团队技术栈多样化时,可以多语言协同开发,无缝对接,开发者可以选择自己熟悉的语言进行开发,提升团队整体效率。
在这方面,Spring Cloud想要支持异构语言,需要借助SideCar构建Service Mesh。业界现在有一些比较流行的服务网格解决方案,但是并没有形成统一的标准,可移植性不高。比较常见的像Istio,由于是代理模式,而且非长连接,会存在更大的延迟。另一方面,Istio的部署和运维都非常复杂,需要更多的学习成本和运维成本。
3、内置服务治理功能
Tars框架内嵌了丰富的服务治理功能,包括熔断、限流、负载均衡、认证、加密等。同时,在服务监控、数据采集,以及灰度部署、跨机房部署等方面,都原生支持,集成度高。
Spring Cloud要支持这些功能,要么需要集成其他组件,要么需要设计开发来实现。都需要付出额外的学习成本和研发成本。
4、运维监控
Tars为使用者提供了一体化的运维管理控制台,我们可以在Web上进行一键部署、扩容、升级、回退等运维操作。
Spring Cloud并没有配套的工具。要实现Web管控, 需要借助K8S和容器,同样需要付出额外的成本。
5、国产化
Tars是国内公司主导的开源项目,这一点就不多说什么了。
6、“套装”优势
Tars框架提供了微服务相关的一体化解决方案,常规情况下不需要再去集成其他组件,不存在兼容性问题。这就好比MacBook和兼容机的区别,兼容机你可能需要付出更多的试错成本才能达到想要的效果。
劣势
1、项目热度
Tars开源较晚,到目前只有5年多时间,项目热度不如Spring Cloud,应用也没Spring Cloud广泛。
2、Tars的云原生之路
Tars和K8s的深度融合也开源不久(2020年7月,K8SFramework),还有待落地验证。这个项目现在的更新频率较高,不建议在生产中使用。但是从这一点也可以看到社区工作者对Tars与K8S融合的高涨热情,相信未来这个项目一定会大放异彩!
写在最后
Tars在微服务开发、运维、监控等方面提供了一体化的解决方案,可以帮助我们低成本构建企业级微服务。适用于各种规模的团队,各种规模的系统。
在做技术选型时,如果团队中有C++开发人员,或者有多语言开发的情况,而且团队规模、资源有限的情况下,建议选择Tars。它在运维、监控、测试等方面会为我们节约大量成本。
未来,随着 K8SFramework 项目的日渐成熟,相信Tars生态会被更多的团队熟知和使用。
开源推荐-C++开发的微服务框架Tars相关推荐
- golang微服务框架对比_Go语言开发的微服务框架,你了解多少?
Go语言开发的微服务框架 1.项目名称:Istio 项目简介:Istio是由Google.IBM和Lyft开源的微服务管理.保护和监控框架.使用istio可以很简单的创建具有负载均衡.服务间认证.监控 ...
- 腾讯微服务框架 Tars 的 Go 性能提升之路
前言 在 4 月 27 日举办的 Gopher China 2019 中,来自腾讯 Tars 团队的核心成员陈明杰进行了一场题为<Tars Go 性能提升之路>的演讲.陈明杰,负责腾讯容器 ...
- 阅文集团 php,腾讯开源|腾讯与阅文技术合作 微服务框架Tars再添PHP
• Tars-PHP的服务端 除了建设Tars-PHP作为客户端的能力之外,服务端的能力同样是必不可少的.为了能够满足不同业务场景下的需求,Tars-PHP在服务端主要会关注两类服务. 第一类是HTT ...
- 运维与微服务结合?深度解析微服务框架Tars整体解决方案
内容导航 什么是Tars? Tars框架源码部署 Tars服务部署管理 Tars配置中心 Tars服务发现 Tars远程日志 Tars状态监控 什么是Tars Tars是一个支持多语言内嵌服务治理功能 ...
- PHP微服务框架Tars
什么是Tars? 腾讯 Tars 是腾讯内部使用的 TAF(Tencent Application Framework)的对外开源版,去掉了许多冗杂多余的部分.该框架集开发.运维.微服务.RPC 等为 ...
- 腾讯微服务框架Tars的初体验
最近研究了一下腾讯的微服务体系开发框架. 搭建过程:https://github.com/TarsCloud/Tars/blob/master/Install.zh.md 写一个HelloWorld: ...
- 【Tars】腾讯微服务框架Tars介绍
目录 1.介绍 2.设计思路 3.整体架构 4.平台特性 1. 介绍 Tars是[基于名字服务][使用Tars协议]的高性能[RPC]开发框架,同时配套一体化的[服务治理平台],帮助个人或者企业快速的 ...
- 腾讯与阅文技术合作 微服务框架Tars再添PHP
引言 TARS作为由腾讯公司开源的优秀RPC框架与服务部署运维解决方案,被阅文集团引入了实际实践中,同时阅文集团对TARS在PHP语言层面进行了能力的补全,令TARS如虎添翼.TARS-PHP的解决方 ...
- Java 微服务框架选型(Dubbo 和 Spring Cloud?),大厂 HR 如何面试
写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 微服 ...
最新文章
- asp.net core中IHttpContextAccessor和HttpContextAccessor的妙用
- windows系统中创建线程常用哪几个函数,有什么区别?
- 前端学习(2668):删除功能
- python如何设计工具类_Python面向对象 --- 类的设计和常见的内置方法
- 从△走进OO,走进策略模式
- matlab 固态 机械_新手熟知固态硬盘和机械硬盘的区别
- masm编译.asm文件报错fatal errorA1000: cannot open file
- lisp 焊缝标注_钢结构深化设计实施方案.doc
- 手持式网络性能测试仪
- Hive on spark 执行加载不了spark的jars
- 关于思科无线网络无法连接解决
- python日本 老龄化分析_即将读研,求问前辈有什么研究生安利的软件 APP 或者阅读文献用的等一系列提高效率的东西吗!?...
- oracle orclpdb是什么,oracle cdb、pdb参考
- php ean13,php生成EAN
- python的opencv库使用gpu加速_Python跳一跳:使用Cython加速opencv像素级访问
- RSA分段加密/解密 nodejs 和java联调
- swoole http请求出现1004 1005报错
- Mac安装软件时提示“文件已损坏,您应该将它移到废纸篓”解决办法
- JMeter学习-005-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置
- python软件是干嘛的-Python到底能做什么?