开源推荐-C++开发的微服务框架Tars

作者&投稿:芝育 (若有异议请与网页底部的电邮联系)
~

Tars致力于建设微服务技术生态,在底层基础设施、服务框架、上层应用以及DevOps等方面,都做了较为深入的研发。

2020年3月10日,Linux基金会正式宣布旗下的TARS开源项目成立TARS子基金会。这是一个 专注于微服务领域 的开源基金会,致力于帮助企业拥抱微服务体系架构,解决在使用微服务方面可能出现的问题。这是首个 起源于中国开源项目 的国际开源基金会,也是Linux基金会下 唯一聚焦微服务技术生态 的子基金会。

Tars基金会里目前收录了9个项目,分为5部分:工具集(Tars Lab)、服务治理(Service Governance)、微服务开发框架(Development Framwork)、存储(DCache)和基础设施(Infrustructure)。

1、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基金会的子项目。性能测试工作不再依赖专业的测试人员。

| 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或者C++的小游戏代码或者推荐两个C或者C++ 的网站
以下是贪吃蛇源代码:#include<iostream.h>#include<windows.h>#include#include<stdlib.h>#include<conio.h>#define N 21void gotoxy(int x,int y)\/\/位置函数{COORD pos;pos.X=2*x;pos.Y=y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}void color(int a)\/\/颜色函数{SetConsoleText...

单片机C语言程序设计实训100例:基于PIC+Proteus仿真的编辑推荐
代码宝典或“代码手册”使用的书籍◆丰富的C语言源程序全部基于MPLAB IDE+H1—TECHPICC\/PICC 1 8\/MCC 1 8开发环境◆基于Proteus提供的实物电路案例仿真解决了实验条件欠缺的问题◆逐步递进的案例设计及难易适中的实训目标引领读者进入炉火纯青的程序设计境界◆基础设计类案例涵盖PIC单片机最基本的端口编程、...

C语言编程软件名字叫什么
Visual C++6.0。Microsoft Visual C++是微软公司的C++开发工具,具有集成开发环境(IDE,1998年后,集成到了Visual Studio开发环境),可提供编辑C语言,C++以及C++\/CLI等编程语言。VC++集成了便利的除错工具,特别是集成了微软Windows视窗操作系统应用程序接口、三维动画DirectX API,Microsoft .NET框架。它...

C语言程序设计该如何入门?
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个大学生,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,...

C语言是什么意思?
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上...

如何做一个C语言编程的汉诺塔游戏?要有源代码。
如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C 汉诺塔问题也是程序设计中的经典递归问题,下面我们将给出递归和非递归的不同实现源代码。 本回答由提问者推荐 举报| 答案纠错 | 评论(1) 25 5 牧天黑手 采纳率:35% 擅长: C\/C++ 安全软件 为...

C语言的发展及其特点
C 语言特点 C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。 1. ...

使用C\/C++语言,将DES\/AES加密算法,用代码实现
这个就要用专业的源代码加密软件去加密了。因为源代码涉及到的编译环境会相对复杂的。我目前了解到就是德人合科技的加密防泄密系统。德人合科技源代码加密系统在不改变研发人员原有工作习惯和工作流程的情况下,对EditPlus、Notepad++、ultraEdit、Eclipse、MyEclipse、 Keil、Visuslstudio等源代码开发工具,...

C++跨平台开发技术指南的编辑推荐
《C++跨平台开发技术指南》是开发可移植C\/C++应用程序的权威读物,它指导编写的代码可以无缝地运行在Windows、Macirltostl和Linux平台上而不需要牺牲任何功能、易用性或是产品的品质。Mozilla和Netscape的资深工程师Syd Logan系统地讲解了所有和软件移植性有关的技术和管理上的挑战。包括编码、测试以及部署上...

如何学习 Objective-C 语言,这方面最好的书有什么
1. 推荐Big Nerd Ranch出的《Objective-C编程》Objective-C编程 (豆瓣)这本书适合零基础的读者入门学习,每章的内容并不多,言简意赅,用简单的例子把OC的基本知识娓娓道来,循序渐进。应该是目前最好的零基础入门书。译者翻译也很用心。2. 《Objective-C 2.0程序设计》也不错,可惜出得比较早,...

渑池县18225215947: c++有什么mmorpg 服务端的开源框架 -
聊赖金莲: 框架我的理解就是用一套类库搭建出程序的方式.比较有名的当然就是mfc,是微软的.还有boland的vcl,不过好像已经卖给别的公司了.还有trolltech公司的qt,这个支持跨平台.有了基础还需要一个RAD(Rapid Application Development),比...

渑池县18225215947: 优秀的开源系统框架有哪些推荐 -
聊赖金莲: Yui-ext 基于Yahoo UI的扩展包yui-ext是具有cs风格的web用户界面组件,能实现复杂的Layou布局,界面效果可以和backbase比美,而且使用纯JavaScript代码开发.真正的可编辑的表格edit Grid,支持XML和Json数据类型.许多组件实现了对数...

渑池县18225215947: linux下c++的UI框架,有推荐的么 -
聊赖金莲: C++的话,现在用的比较多的是qt,它是跨平台的.另外还有Ultimate++,wxWidgets等,其中wxWidgets是基于GTK的,GTK是一个C的界面库,也是跨平台的.

渑池县18225215947: 有什么适合提高 C/C++ 网络编程能力的开源项目推荐? -
聊赖金莲: 如果楼主问的是网络编程,而不是网络框架.那么 redis是最适合学习的,一个简单的 tcp server,再加一个 reactor.如果想了解到更深入包括网络内核那么必须是nginx的网络模块.

渑池县18225215947: 主流的RPC框架有哪些? -
聊赖金莲: Thrift 是由 Facebook 开源的一个 RPC 框架,现在已经挂在 apache.org 下了.主要的几个好处: 1. 支持非常多语言,包括在 WEB 开发中很常用的 PHP,以及最重要的 C++/Python/Java 等 WEB后端常用语言,当然,还包括很 cool 的 Ruby、...

渑池县18225215947: C++的集成开发环境有哪些 -
聊赖金莲: 1) kDevelop Kdevelop 是 C/C++ 和其他语言的开源插件可扩展 IDE,是基于 KDevPlatform ,KDevPlatform 是个开源程序集,可以作为 IDE 的基础.2) Anjuta Anjuta Devstudio 是另一个卓越的开发环境,拥有很多超棒的功能,包括项目管理,应用...

渑池县18225215947: c++服务器端技术学哪些? -
聊赖金莲: 最好看看开源的服务端框架 C++服务端技术:1.较老的有Reactor模型的鼻祖ACE2.现在广泛使用的libev/libevent,这两个是C的3.理解服务端并发模型,特别是事件驱动模型4.看看Redis、Nginx的网络模块是怎样做的

渑池县18225215947: PHP 微型框架有什么好的推荐吗 -
聊赖金莲: 1. Cake PHP \ CakePHP是一个拥有极大灵活性的开发,维护和部署的快速开发框架.使用非常常见的MVC和ORM设计模式,及其配置规则帮助大家简化开发过程而无须开发过多的代码 和ZF类似,CakePHP不要求配置.使用简单.在IRC上拥...

渑池县18225215947: C/s 开发中用什么框架好? -
聊赖金莲: Apache java项目全介绍1 最近接触Jakarta-Common-BeanUtils这个东东比较多,于是对Apache Jakarta Project产生了兴趣,上他们的官方网站上看了下感觉有用的东西好多,眼花缭乱的,又没有中文网站,又上各大论坛搜了下,也没有发现一...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网