Tars微服务框架C++开发之Lua脚本(二)

【Tars】腾讯微服务框架Tars介绍 Tars是【基于名字服务】【使用Tars协议】的高性能【RPC】开发框架,同时配套一体化的【服务治理平台】,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。Tars在腾讯内部名为TAF,内部从08年开始使用,到现在将近10个年头了,今年终于开源 阅读详情

以下为授权转载的一盎司科技公众号文章


Tars是腾讯开源的基于名字服务的高性能RPC开发框架,也是一套开发模式,接下来我们将简单介绍C++开发服务中,引入Lua脚本语言来开发某些业务场景。关于框架的详细说明可参考官方文档(https://doc.tarsyun.com)。

以下继续完善上一个示例来作为参考,来说明具体的开发过程:

  • 应用名APP: GoodsApp

  • 服务名Server: GoodsServer,DataServer

  • 服务提供者Servant: GoodsTarsObj,DataTarsObj

示例代码地址:

GitHub地址:https://github.com/iounce/tars-demo

Gitee地址:https://gitee.com/iounce_admin/tars-demo

环境

  • Windows操作系统:Windows10(21H2,19044.1766)

  • Linux操作系统:Ubuntu 22.04 LTS

  • Docker Desktop:v4.10.1

  • Tars framework: 3.0.14

  • Python:3.10.4

  • Lua:5.4.6

上一篇我们初步实现了GoodsServer服务,调用了Lua脚本函数来组装请求,接下来我们继续完善整个处理流程。具体交互为,GoodsClient发请求到GoodsServer;GoodsServer调用Lua脚本组装数据,发送请求到DataServer;GoodsServer收到应答后调用Lua脚本处理应答,然后发送应答数据给GoodsClient。流程如下:

图片

新增DataServer

主要用于给GoodsServer提供数据,协议如下:

简单实现接口,返回应答数据:

图片

完善Lua组包解包

通过Lua解析yaml定义的分组和分组请求信息:

通过Lua组装请求数据:

图片

转发请求到DataServer

首先获取服务调用代理,调用地址直接设置obj即可,不用设置具体IP和端口:

图片

组装请求数据并发送,即设置DataReq的相关参数:

图片

结果正常则获取应答数据,设置结果集用于Lua组装下个请求的入参:

图片

测试客户端GoodsClient

这里客户端不在Tars框架注册,所以需要指定服务端的IP和端口,直接使用GoodsServer定义的GoodsTars.tars协议,实现简单的同步调用过程:

图片

其中调用信息可以直接在Tars框架的web管理页面获取到:

图片

测试结果:

  • GoodsServer端:

图片

  • DataServer端:

图片

  • GoodsClient端:

图片

说明:

1.测试过程中,出现Lua脚本引用同目录下其他脚本,无法找到的问题,添加绝对路径后解决,需要看看有没有更好的处理方式;

2.打包过程需要将将Lua脚本和协议yaml文件一并打包上传,还需要调整打包上传脚本进一步实现;

3.目前Lua脚本打包后的JSON数据和协议定义请求应答序列化的JSON并不完全一致,有待进一步完善Lua脚本。完全匹配后直接可以使用协议中的readFromJsonString()函数来反序列化请求应答结构;

4.目前的方案是一种实验性质,需要验证与C++实现的性能对比,譬如耗时,然后根据业务需要来选择是否采用Lua脚本实现业务逻辑。

TARS:基于iPad版协议的微信个人账号服务工具 TARS 基于iPad版协议的微信个人账号服务工具 立即下载

相关推荐

Innovus 安装全过程

【代码】Innovus 安装全过程。

lmyynlbcy的博客 5535

tars架构

这里只是简单介绍一下,引个路,具体介绍可以看官方文档。 先抄一段官方文档。 TARS 是 Linux 基金会的开源项目,它是基于名字服务使用 TARS 协议的高性能 RPC 开发框架,配套一体化的运营管理平台,并通过伸缩调度,实现运维半托管服务。该框架为用户提供了涉及到开发、运维、以及测试的一整套解决方案,帮助一个产品或者服务快速开发、部署、测试、上线。 它集可扩展协议编解码、高性能 RPC 通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过它可以快速用微服务的方式构建自己的稳定可靠的分布

m0_65931372的博客 2509

Python使用netmiko配置华为交换机

1.netmiko就是专门为网络设备做的模块,非常强大。1.更适合网络设备的自动化运维模块。2、批量配置变更、备份。1.安装netmiko。2. 创建SSH连接。一、netmiko介绍。

博然的宝藏库 2795

Tars 服务调服务

1,创建一个 tars 服务工程 2,把需要调用的服务的 客户端接口文件 拷贝到当前服务 3,构建通信器CommunicatorConfig 调用,如果是 springboot 开发客户端可以使用注解自动注入 4,项目结构(springboot 开发) 转载于:https://www.cnblogs.com/huanggy/p/9633083.html...

346

Pycharm环境配置完整教程

本文主要介绍python解释器安装、Pycharm环境配置以及运行第一个程序的零基础的教程,即使是python小白也能正确配置相应的python学习环境哦!

悠眠小虫的博客 2万+

876-基于STM32的毫米波雷达智能睡眠监测系统

基于STM32的毫米波雷达智能睡眠监测系统通过非接触式毫米波雷达检测人体呼吸频率和体动次数,结合WIFI数据传输和OLED显示,实现睡眠质量分析与远程监控。系统核心功能包括生理参数采集、阈值设置、数据可视化及远程交互。

m0_50083169的博客 1543

腾讯开源了高性能 RPC 框架,是要干DUBBO吗?

推荐阅读: 我总结了72份面试题,累计3170页,斩获了30+互联网公司offer(含BATJM) 2020首战告捷,这份Java面试神技Plus版,让我成功拿到了阿里、京东、字节跳动等大厂offer 膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了 Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。 Tars是将腾讯内部使用的微服务架构TAF(Total

资料免费分享,点击名片 437

WeDetect:基于视觉-语言检索的目标检测新范式

目标检测正从传统回归与分类耦合范式,向开放、灵活、可扩展的多模态检索范式演进。检索式检测(Retrieval-based Detection)将检测任务重构为视觉特征与文本语义的联合匹配过程,依托候选框索引库与双塔架构,天然支持开放词汇、零样本识别与小目标定位。其技术价值在于解耦空间感知与语义理解,消除NMS与anchor匹配等冗余计算,显著提升推理效率与跨场景泛化能力。典型应用场景包括工业质检中的缺陷新增识别、遥感图像小目标检测、低光照鲁棒视觉系统等。WeDetect正是这一范式的代表性实现,深度融合视觉

weixin_30878501的博客 361

高性能RPC框架:TARS简介、设计思想、架构、特性学习

TARS是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。

Rain的博客 3340

最新Docker GPU支持全解析:为什么nvidia-smi能用但PyTorch找不到CUDA?

本文深入解析了Docker容器中nvidia-smi命令可用但PyTorch无法调用CUDA的根本原因。关键在于默认配置仅暴露了GPU的utility管理能力,而CUDA计算所需的compute能力未被激活。通过正确设置NVIDIA_DRIVER_CAPABILITIES环境变量为compute,utility,并配合--gpus参数,即可解决此问题,确保AI训练等任务顺利进行。

convnet3designer的博客 239

避坑指南:SAP成本中心分割结构配置常见错误及解决(含KA06/KL01前置步骤)

本文深入解析了SAP成本中心会计中分割结构配置的关键步骤与常见错误。重点强调了配置前必须通过KA06创建次级成本要素(类别42)和通过KL01创建活动类型这两个核心前置步骤,并详细剖析了在OKES中定义分割规则及版本时的高频报错原因与解决方案,帮助顾问和运维人员有效规避配置陷阱,确保成本分摊的准确性。

pear55的博客 865

Tars微服务框架C++开发之Lua脚本

Tars微服务框架C++开发之Lua脚本

iounce 346

2025年CSP-J初赛真题及答案解析(完整版)

2025年CSP-J初赛真题及答案解析(完整版)

王老师青少年编程 1万+

Tars-Cpp 协程实现分析

本文介绍了协程的概念,并讨论了 Tars Cpp 协程的实现原理和源码分析。

vivo互联网技术 1079

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

腾讯,排行前10的开源项目

1、Tars Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架TAF(Total Application Framework),目前支持C++和Java两种语言。该框架为用户提供了涉及到开发、运维、以及测试的一整套解决方案,帮助一个产品或者服务快速开发、部署、测试、上线。 它集可扩展协议编解码、高性能RPC通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过它...

SurpassLi的专栏 74

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python 微服务框架_PHP微服务框架:腾讯高性能RPC开发框架Tars实现服务治理(微服务)...

1. 介绍Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。Tars这个名字来自星际穿越电影人机器人Tars,电影中Tars有着非常友好的交互方式,任何初次接...

weixin_39573136的博客 563

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

腾讯高性能RPC开发框架Tars实现服务治理(微服务)

Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。Tars这个名字来自星际穿越电影人机器人Tars,电影中Tars有着非常友好的交互方式,任何初次接触它的人都可以轻松的和它进行交流,同时能在外太空、外星等复杂地形上,超预期的高效率的完成托付的所有任务。拥有着类似设计理念

纸上得来终觉浅,绝知此事要躬行 1万+

Tars服务的搭建

Tars服务的搭建目的新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 目的 本教程将搭建一对Tars的服务端和客户端,并通过tars公共管理平台控制服务端的发布。(主要参考教程)#TODO 新的改变 我们对Markdown

woomay的博客 443

【TARS】理解RegistryServer

1.源码与可执行程序 /home/muten/module/TARS/TarsFramework/RegistryServer /usr/local/app/tars/tarsregistry/bin/tarsregistry

Edidaughter的博客 2489

动手实践Tars服务的搭建

一、关于Tars Tars是腾讯2017年开源出来的微服务开发框架,内部叫TAF框架,内部使用已经有十年,很多业务在用,部署了上万台机器,成熟度高。 Tars与业界其他同类或相识的应用框架相比: 一是Tars提供了支持多语言(C++/Java)的高性能(性能可达40w/s)RPC开发框架...

557

Tars微服务框架C++开发简介之Web平台

Tars是腾讯开源的基于名字服务的高性能RPC开发框架,也是一套开发模式,此处简单介绍C++开发服务的一些基本步骤

iounce 1421

TarsFramework:微服务架构的基础服务框架

TarsFramework:微服务架构的基础服务框架 1. 项目基础介绍及编程语言 TarsFramework 是 Tars 项目的基础服务,同时也是 Tars 项目中所有语言的基础运行框架。Tars 是一个高性能、低延迟的微服务框架,旨在帮助开发者快速构建和维护微服务架构。该项目主要使用 C++ 语言开发,同时包含了部分 Shell 脚本和其他辅助语言。 2. 项目的核心功能 协议定义:为每个...

gitblog_00082的博客 485

Tars开发框架

Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。 Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。Tars这个名字来自星际穿越电影人机器人Tars, 电影中Tars有着非常友好的交互方式,任何初次接触它...

小神仙的博客 6786
上一篇: Tars微服务框架C++开发之JSON
下一篇: Python使用Fire库自动生成命令行参数
iounce
博客等级 码龄18年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值