IP音频广播系统使用Apache Thrift作为RPC的前期试验代码

前言

    IP音频广播系统目前的现状是由之前的单机服务器(最早的是用WinXP,再到Win2000), 进化到现在的基于中心数据库(比如MySQL)和Linux Server的分布式实时系统. 

    比如该行业的老大ITC的框架就是Ubuntu Server(带桌面), 维护界面是基于WEB浏览器的. 但不一定是分布式架构, 可能只是典型的B/S架购. 

    由于我是用Qt来统一开发所有的"服务"和"前端"的程序:

  • 服务器端的"服务"和"前端界面"(该前端界面可以布署在服务器上,也可布署在局域网内的任一Windows/Linux桌面电脑上.
  • 客户端程序(广播中继, 网络话筒, 手机端会话 等等)

    多个进程(可能是远程进程)之间的通信, 我用Qt自带的QtRemoteObjects做过前期试验, 能实现远程RPC功能, 但由于只局限在Qt,架构的扩展性不好,万一将来有熟悉java/python的程序员加入,要求他重新学习C++和使用Qt来进行开发,不现实, 在多方调研后, 发现Apache Thrift是一个支持多平台,多语言,完整的轻量级RPC服务框架. 决定对Thrift作一个前期可行性试验. 下面是在ubuntu server18.04环境下, Qt5.12.2+Thrift-0.12.0的一个放入生产代码前的前期单元测试用例: 

代码远程仓库地址

 https://gitee.com/xingsharp/thrift_test  随生产代码而不断更新中.

项目说明

有两个项目,分别为thrift_server and thrift_client, 用CMake构建(没有使用.pro是因为我在研究zephyr rtos,而zephyr是用CMake构建的, 而且发现CMake的构建速度比.pro快)

thrift_server 

    thrift_server VERSION 0.1使用TSimpleServer, 如果该服务端要同时支持多并发,可用TNonblockingServer.   

    服务器端使用一个线程代表当前正在运行的主线程, 一个线程包装Thrift Server功能. 

thrift_client  

    Thrift Client使用阻塞模式(这是作为客户端的最常用模式), 为了更友好的解耦和用户接口的友好,我把thrift Client的功能实现放入一个名为ThriftClientWrap的包装类中. 

项目摘图

Apache Thrift知识分享

Offical Docs https://thrift.apache.org/docs/  Building From Source ; Language and Feature Matrix ; 

Apache Thrift - 可伸缩的跨语言服务开发框架 https://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/ 

Apache Thrift使用简介 https://www.cnblogs.com/TianFang/p/4355280.html

Apache Thrift极简入门 https://www.jianshu.com/p/89a4ba971a48

Apache Thrift概念以及快速入门(5STAR) https://www.cnblogs.com/lawlietfans/p/6309061.html 

Thrift RPC详解(5STAR) https://www.jianshu.com/p/15dbc8665648?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 

和 Thrift 的一场美丽邂逅 https://www.cnblogs.com/cyfonly/p/6059374.html 

thrift之TTransport层的堵塞的套接字I/O传输类TSocket https://blog.csdn.net/qiangweiloveforever/article/details/9474941 

原创文章 46 获赞 8 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u012915636/article/details/89358306