Fig 1 Tars架构图(摘自GitHub tars项目)
Tars 是腾讯开源的一个RPC框架,现在RPC框架大概多,但是C++的RPC框架,是少之又少,我理解是百度的sofa-pbrpc,但是不支持多种措辞,Tars是其余一个C++ RPC 框架他的上风就在于它支持多种主流的编程措辞C++、java、go、php、python(内部利用中暂未开源)。Tars的主控做事包括:tarsregistry、tarsconfig、tarsadminregistry等。这些主控做事是利用c++措辞开拓,一样平常很少变更。业务开拓过程中也不须要太过于关心主控做事。专心开拓自己的业务逻辑即可。其余tars支持官方的tars协议、protobuf协议、http以及用户自定义协议,可以说已经知足了各种各样的需求。我之前就基于tars框架开拓了一个基于MQTT协议的做事端程序,虽然利用过程中难免会碰着很多坑,好在都是可以办理的。我开拓的程序目前已经投入利用,感谢tars、感谢腾讯的开源贡献。后续我会有专题先容利用tars过程中碰着的一些问题以及如何办理,帮助大家更加理解tars、利用Tars。
下图是tars github的star 情形:

Fig 2 Tars star 情形
下图是tars的做事交互数据流:
Fig 3
底下绿色部分都是一些赞助做事就config是必选的,其他的可以根据情形进行支配。
下图是做事的框架:
Fig 4
下面就大略先容下tars的其他一些特性以及一些问题:
1)有丰富的工具库:比如线程池的封装、线程安全的行列步队、字符串操作、单例、future/promis、tup、协程(不是libco)
2)有发布管理界面、发布超级大略但是管理界面体检欠佳,比如不支持批量重启、过滤检索、批量下线、批量修正、扩容时端口号不能继续、创建模板是文件名限定、不显示节点数量、翻页支持不友好
3)有日志采集、节点间调用统计数据、配置自动加载、在线push 配置、调度日志级别、日志染色等。
4)支持鉴权模块、支持TSL
5) 容灾高可用问题:客户端侧只有内存级别的cache、心跳机制有待优化
6)bug:tars 1.5版本存在句柄透露(大量close_wait的连接)(c++)
7)bug:当一个连接的某一个要求包涌现一个包是非法包时该链路上的其他包如果已经经由了完全性校验,那么后续的这些包都必须分发到业务线程然后才能被丧失落(包在行列步队中超时就另当别论)这个跟框架实现的办法有关系,采取的多线程异步的办法。(c++)
8)待改进:tars协议不支持自定的一些方法,比如定义一个类,但是你不能再里面添加一些自定义的方法。
9) 待改进:tars 的include 指令,支持不完善:tars2cpp 支持利用#include 一些tars协议文件,但是java不可以,tars2java 不支持--include 选项。
有关于tars个更详细的先容请参考github上开源项目:https://github.com/TarsCloud/Tars。
官方的先容文档:
https://github.com/TarsCloud/Tars/blob/master/Introduction.md
c++ 入门的示例文档:https://github.com/TarsCloud/TarsCpp/blob/master/docs/tars_cpp_user_guide.md
下一期将会先容:tars做事支配过程中碰着一些问题