admin 管理员组文章数量: 1086019
2024年2月5日发(作者:php网站根目录意思)
2019年8月
计算机工程与设计
COMPUTER
ENGINEERING
AND
DESIGN
Aug.
2019第
40
卷
第
8
期
Vl
40
No.
8轻量级C++微服务框架的设计唐稳,刘艳辉(华北计算技术研究所
应用支撑技术研发部,北京100083)摘 要:为满足高实时、低延迟软件系统的上云要求!设计轻量级C++微服务框架。基于插件技术!设计服务治理插件
堆栈、运行支撑中间件插件集、微服务插件动态组装等技术机制!设计C++微服务之间的RPC交互接口!支持微服务治
理能力的灵活裁剪和增加!支持运行支撑中间件的动态接入。从RPC吞吐率、响应时间等方面!与业界主流微服务框架进
行性能对比测试与分析!该方法表现出明显的性能优势。关键词:微服务框架;PaaS云平台;远程过程调用;插件;服务治理;运行支撑中间件中图法分类号:TP311.1
文献标识号:A
文章编号:1000-7024
(2019)
08239606doi:
10.
16208/j.
issnl000-7024.
2019.
08.
049Design
of
lightweight
C++
microservices
frameworkTANG
Wen,
LIU
Yan-hui(Research
and
Development
Department
of
Applied
Support
Technology,
North
ChinaInstitute
of
Computing
Technology,
Beijing
100083,
China)Abstract:
To
meet
the
requirements
of
cloud
computing
in
high
real-time
and
low
latency
software
systems,
lightweight
C+
+
nplug-intechnology&Cervicemanagementplug-inCtack&runningCupportmiddle-
ware
plug-in
set,
microservices
plug-in
dynamic
assembly
and
other
technical
mechanism
were
designed,
and
RPC
interaction
interface
between
C+
+
microservices
was
also
designed.
Flexible
cutting
and increasing
of
micro
service
governance
capability
was
supported.
Dynamic
accession
of
runtime
support middleware
was
supported.
The
performance
comparison
test
and
analysis
were
carriedou@wih@hemains@ream
microservicesframeworkof@heindus@ryfrom@heperspecivesofRPC@hroughpu@
response
time
&
and
so
on.
The
results
show
obvious
performance
words:
microservices
framework;
PaaS
cloud
platform;
RPC;
plug-in;
service
management;
running
support
middleware6引言作为微服务的支撑平台,微服务框架主要解决微服务
它组件集成的机制和方法,目前对此类框架没有明确定义,
在本文中我们称之为轻量级微服务框架。上述轻量级微服务框架主要面向互联网应用和企业应
开发与测试、微服务RPC交互、微服务治理及微服务运行
支撑等方面的问题,可极大降低微服务应用的开发、设计、
测试和运维管理成本,例如Spring
Cloud[1]就是一个完整的
用,一般不适合用在仿真训练等领域。在这些领域,业界
大多采用C+
+语言进行开发,这是因为作为一种编译型
语言,C+
+比Java、Scala等解释型语言具有更好的运行
效率,可以提供更高的性能,从而满足高实时、低延迟等
特性。目前业界尚无支持C+
+语言的轻量级微服务框架,
微服务框架。由于微服务架构的复杂性,很多微服务框架并没有提
供完整的支撑平台。例如阿里的Dubbo也和华为的CSE
(cloud
service
engine)3。此外,还有一些微服务框架仅提
供了微服务在一个进程内的开发与集成框架,一般只支持
所以,为了支持此类系统的微服务集成,本文提出了一种
基于C++语言的轻量级微服务框架设计方案。一种开发语言,例如NutzBoot、RedKale等开源项目支持
Java语言,Lmkerd开源项目支持Scala语言这类框架
1研究背景1.1微服务架构旨在降低微服务的开发成本,并提供了与PaaS云平台的其
收稿日期:20180814;修订日期:2018-0917微服务架构是相对于单块(Monolithic"架构提出的
作者简介:唐稳(974-),男,湖南长沙人,硕士,高级工程师,研究方向为云平台、软件中间件;刘艳辉(1972
-),女,河北秦皇岛
人,硕士,高级工程师,研究方向为软件中间件’E-mail:
wentang9880@
第40卷第8期唐稳,刘艳辉:轻量级C++微月艮务框架的设计、
、
分布
・2397・服务的能力
。
C++微服
j务插件|新架构模式。其定义请参照Martin Fowler的文献[6)。微
服务架构能够解决单体式应用维护升级困难、设计开发成
本高、软件耦合度高等一系列问题,是分解复杂应用的一
C++微服
务插件种全新架构。1.
2
平台即服务(platform-as-a-service,
PaaS)PuS指的是将软件研发和运行的平台作为一种基础服
轻量级C++微服务框架RPC
API接
口服务治理插件堆栈运行支撑中间件API接口插件集成API接口务提交用户,可以看成是组件和中间件层面的服务封装。
运行支撑中间件插件集其优势在文献中有详细介绍。1.3微服务框架与PaaS云平台为了支持微服务架构,PuS云平台通常集成了微服务
框架,例如CloudwareHub()。总的来看,在PaaS云平
台中,微服务框架具有如下能力。(1)
持续集成和持续交付支撑,实现自动构建、部署、
配置、测试和运行微服务,通常需要提供自动化运行的脚
本,并与终端集成开发环境结合。(2)
远程过程调用(remote
procedure
call,
RPC)支
持(0),包含同步、异步的RPC调用与提供,包括HTTP、
TCP等多种传输协议的支持。(3)
服务治理,包含服务注册发现、服务负载均衡、
服务弹性伸缩、服务故障切换、服务路由、服务流程编排、
服务安全、服务监控、服务调用链跟踪等方面*(
1)。(4)
运行支撑,包含日志中间件、消息中间件、分布
式缓存中间件、关系型数据库/NoSQL数据库访问中间件服务。1.4轻量级C++微服务框架本文设计的轻量级C++微服务框架是一个功能可扩
展、可裁剪的微服务运行本地进程容器,可被很多PaS云
成,
要
括
能力
。(1)
为微服务之间的交互提供适配多种传输协议的、
多种请求模式共存的一体化C++RPC调用框架。(2)
在进行RPC交互时,可以按需动态接入PaaS云
平台中服务治理的相关服务,尽量以透明的方式提供给上C++
服务。3)
以
需
态
PaaS
的
撑,
以
C++API
的方 服务调用。(4)可以按需在一个进程内集成一个或多个C++微
服务,实现C++微服务的动态柔性组装。2框架设计如图】所示,轻量级C++微服务框架采用了基于插
件技术的设计方法,由4个部分组成。其中插件框架提供
了
C++插件集成基础环境。服务治理代理堆栈包括一组
代理插件,当微服务之间进行RPC交互时,代理堆栈可透
明
访
PaaS
的服务
理
服务的能力
。
行支撑中间件插件集包括一系列代理插件,以C++
API的方
为
C+
+
服务
了
访
PaaS
的插件框架服务注册
加解密调用链消息收发
/发现/访问控制/运行状态/缓存处理
.SZ..................PaaS7苹台爻撞服务
XZ/数据访问治理服务.......汀...葛亍爰撑中间件服务图1
轻量级C++微服务框架设计2.1插件框架设计插件技术的核心在于对程序的框架不进行改变,却能
实现对其功能的增加与删除。使用公开的插件接口规范,
无论是企业还是个人都能实现所需的功能插件进行事务处
理和管理,即能提供真正意义上的开放式和简易式
使用(2) 3。C++微服务框架完全基于插件技术进行设计,将服务
治理、微服务RPC调用、运行支撑中间件等方面的能力,
以及业务微服务均以插件的方式进行封装,从而支持整个
微服务程序的动态灵活组装。插件框架是微服务框架的核心模块,其设计参照了
OSGi规范,对插件的概念模型进行了规定,对插件集成
API接口、插件生命周期模型、插件描述文件格式以及插
件目录结构进行了规范。插件框架完全基于C++语言实
,
并
了
C++API
。(1)
插
概
模
。
2
,
插
定
了个3层概念模型来描述一个插件对外可见的部分:插件、
服务
,
其
插
插
模 ,C++动态连接库或者可执行程序。服务表示了插件在运行
过程中动态产生的一个C++对象,同一个插件可以创建
多
服务。
了其
插
访
服务
的
,
常一个C++抽象类指针,一个服务可以提供多个接口。在
插件框架下,服务提供者通常基于名称注册自己的服务接
口,服务消费者发现某个名称的服务接口,并调用该接口
访
服务。(2)
插件API接口。包括两个部分,插件需要实现的
通用C++
API接口,包括了插件初始化和结束化接口。
插件框架实现的插件集成C+
+
API接口,包括了插件查
找、插件解析、插件状态获取、服务注册、服务查找、服
务注销、内存申请、内存释放等接口。(3)
插件生命周期模型。包括了插件安装、解析、加
・2398・计算机工程与设计(5)插件目录
。插
2019
年规定,一个插
常包、插含了
bin、log、res、config、manifest
子文件夹,分别存放
插件二进制
其
库、插
、插件配置
以及插
述
。2.2服务治理插件堆栈设计微服务治理能力包括了服务注册发现、服务负载均衡、
服务路由、服务安全、服务监控等功能。
RPC交互时&这些功能中的
服务
进分需要被调用,以
:图2插件框架设计的治理行为。为了降低C++微服务的开发成本&这
些功能由
自动调用,
服务透明。不同微服务对治有的微服务可能需要
载、激活、运行、关闭、卸载等阶段,插件框架基于该生
期模型对插
精
理能力的需要可能不同,
私有
対管理。协议的
&需要
。服务配置
析能力,(4)插件描述文件格式。基于键值对模型,对插件的
有的微服务需要
据加解密能力等,框架需要支持治名称、厂商、版本、
插
述,便于插件析。见表I-理能力的灵活裁剪
框架对插
管理,对插
设计了服务治理插件堆栈,由一系列治理插件和
据
插
组成,每
理插件均
方面的
理能力,
服务发
插
、
均衡插
、
服务监表1插件描述文件示意Manifest-Version:
1.
0Bundle-Name:
xxService控插件、数据 密插件、
调度插
。为了以
:的方式管理,所有治理插件均实现RPCC
+ +
API接口,
Bundie-SymbolicName
:
xx. xx.
xxServiceBundle-Version
1.0.0以在不修改的前
,根据配置灵活地增加或
-理能力,
据
插
了整
良好的可扩展性
有协
维护性。插Bundle-Vendor
xxBundle-Copyright
:版权所有(c)
20182019,
xx
公司
BundleActivator
:
xx_Bundle_Activator
;
library
=xxSo
由一组数据
插件组成,包括HT-TP
插
、
TCP
插
、
UDP
插
以
Bund:e-RunLeve:
5Bund:e-LazyStart
fa:se应用可以根据
质量、
性能、服务间互操作性等方面的要求确定需使用的
插件。Require-Bundle
:
yy.
yy.
yyService,
zz.
zz.
zzService如图3所示&以两个微服务之间的RPC交互为例,说
明微服务治理插件堆栈的工作原理。服务调用者实例A1服务提供者实例BlC++微服务插件ARPC
C++
API接
口服务发现插件负载均衡插件C++微服务插件B[PC
6++
API接
口
上I
访问肃y插件HE服务治理插件堆栈数据加解密插件服务监控插件传输调度插件HTTP插件数据传输插件集TCP数据传输插件集插件HTTP插件TCP插件服务发吗]状态上报、服务事币*0服务注册犬态上报服务事件彳PaaS云平台支撑服务治理服务图3服务治理插件堆栈工作原理
第40卷第8期唐稳,刘艳辉:轻量级C+
+微服务框架的设计2. 3
RPC
C+
+
API
接
口设计RPCC++API
插
堆栈
•
2399
-(I)
在服务调用方,C++微服务实例A1的插件A通
过RPC接口发起一次向微服务B的基于TCP协议的RPC
服务
RPC调用,发出调用请求R。(D)
A1的服务发现插件拦截到请求R,插件与PaaS
访问的API接口,为了保证服务治理插件栈的动态组装,
要求所有的治理插件都需要实现该接口。RPC
C+ +
API
接口在设计时遵循了两个原则。(1
)支持多种RPC请求模式。包括同步、异步、投递
云平台支撑服务的注册发现服务联系,获取到微服务B集
群的所有实例信息以及负载均衡策略信息,将这些信息补
充到请求R中。3种模式,分别提供请求的高可靠、实时和高实时Qos
(传
(3)
A1的负载均衡插件拦截到请求R,根据微服务集
群B注册的实例信息以及策略,选择了服务实例B1作为请
输服务质量)。其中同步模式意味着RPC请求方在发送完
请求后阻塞,直到接收到处理结果。异步模式意味着RPC
求的接收处理方,将微服务实例B1的连接方式补充到请求
R中。(4)
A1的数据加密插件拦截到请求R,对RPC请求
进行加密,并将加密的密文替换掉R中的原始RPC请求
明文。(5)
A1的服务监控插件拦截到请求R,在R中添加相
应的服务调用链信息,同时将调用链信息上报PaaS云平台
调用链监控服务。(6
)
A1的传输调度插件拦截到请求R,从中获取到B1
的连接方式,选择数据传输插件集中的TCP插件进行请求
R的发送。(7
)
A1的TCP插件与B1的TCP插件取得联系,将
请求R发送到服务提供者B1。(8)
B1的TCP插件接收到请求R,并交给传输调度
插件。(9
)
B1的传输调度插件确认接收到了一个完整的RPC
请求。(10
B1
的服务监控插
拦
到请求
R,
R应的服务调用
,
同
调用
PaaS台调用链监控服务。(II)
B1的数据加解密插件拦截到请求R,对RPC请
求进行解密,并将解密的明文替换掉R中的RPC请求
密文。(12
)
B1的访问控制插件拦截到请求R,基于发起调用
的用户名、服务A的名称以及RPC调用的信息进行权限判
定,确认该请求R是合法的请求。(13
)
B1的微服务插件B最终接收到请求R,并进行
处理。(14
)
B1对R的处理结果以相同的方式通过服务治理
插件堆栈,最终到达实例A1的微服务插件A。可见,调用请求和应答在微服务框架的服务治理插件
堆栈中穿行,完成了服务发现、负载均衡、数据加解密、
服务监控、访问控制等一系列治理任务,这些治理任务由
微服务框架自动调用相关的插件完成。在整个过程中,微
服务插件仅调用RPC
C+ +
API即可,实现了治理服务对
上层微服务的透明化支持。请求方在发送完请求后阻塞,一旦对方确认收到该请求即
解除阻塞,后面处理结果到达时会以回调的方式通知RPC
请求方。投递模式意味着RPC请求方在将请求发送到本地
缓冲区后继续执行,后面处理结果到达时会以回调的方式
通知RPC请求方。可见,从并发请求支持方面,投递优于
异步,异步优于同步。从开发难度方面,同步比异步简单,
异步比投递简单。实际开发过程中采用何种模式需要根据
开发人员水平和软件运行技术要求综合考虑。(2
)采用字典类参数传递个性化信息。在RPC所有
C++API接口函数中均设计一个字典类参数,由一组键值
对组成,并且可以嵌套,键值都可以灵活定义,便于框架
向治理插件传递个性化信息。例如框架需要将找到的服务
集群信息传递到负载均衡插件,需要将调用链信息传递到
传输调度插件等。字典类参数可以用相同的数据结构描述
不同类型的信息,特别适合于类型不确定的接口定义,同
时还具备很强的可扩展性,确保了框架能以一致的接口集
成所有的治理插件。以异步RPC请求为例,其接口定义见表2。表D异步RPC请求接口定义〃异步RPC请求C接口virtual
int
_cdecl AsynCall
(char
'
serviceName&
//微服务名称IMemBufReader
*
req,
//请求报文,含内容和长度Dictionary'
callCtxt,一
//字典类参数,表示请求上下文int
timeout
=
1
//超时,单位为毫秒
NntproLevel=
LEVEL_EXCHANGE_GENERAL
//请
求优先级)=0;24运行支撑中间件插件集设计运行支撑中间件包括了日志记录、状态缓存、消息交
换、NoSQL数据库访问等服务,其特点是提供C+ +
API
接口,微服务按需调用。不同的微服务对运行支撑中间件的需求并不完全相同,
有的需要
状态
,
有的需要志记录。而且同一类中间件可能存在多个实现,例如消息
・2400・计算机工程与设计务实例基于C++语言编写。2019
年中间件就有Kafka.
RocketMQ、ZeroMQ等项目,其API
不一定相同。如图4所示&
C++微服务框架不同种类、不同
RPC同步请求的过程是:RPC同步请求微服务将
的中间件代理程
C++插
」一个1KB字节的字符串传递给RPC请求处理微服务,RPC
请求处理微服务
封装
&为不同的微服务
了一组恰能满足其个性字符串作为处理
发回给RPC同步需要的
撑
插
。服务调用者实例请求微服务,RPC同步请求微服务继续
服务均在单线程场景
请求。3组&经过多轮测试,统计吞吐率(每秒RPC处理次数)和请求处理响应时间
C++微服务插件A
HE运行支撑中间件API接口日志API
状态缓存API
……运行支撑中间件插件集日志代理插件状态缓存代理插件日志信息状态信息在线消息'・
NoSQL数据」PaaS云平台支撑服务运行支撑中间件服务日志服务状态缓存服务图4运行支撑插件集设计为了支持中间件代理的插件化封装与接入,需要将代
理程序与插件框架进行适配。为了支持代理插件的自动启
动,需要动态获取中间件代理的初始化运行参数,避免手
工配置这些参数,提高运维自动化水平。(】)与插件框架适配。需要基于中间件代理程序已有
API接口,按插
要求
插
用API接口的支持。此外,插件的描述
、生
期、目录
满足插件框架的集成要求。(2)初始
态获取。参数可能包括中间件代理配置文件以及中间件初始化函数的参数。在代理插件前,微服务系统需要
注册发现服务注册这些参数-理插
&
以直接获取到初始化参数了。3性能实验为了说明轻量级C++微服务框架在性能上优于业界
主流微服务框架&并且满足特定领域的高实时、低延迟交
互与处理需求,本文基于同步模式与业界主流微服务框架
的RPC调用性能进行了对比。本文搭建了性能测试环境,安装了
Dubbo微服务框架、
SpringCloud微服务框架、轻量级C++微服务框架及相关
的模 服务。为了保证测试结果的公平性,3个框架及微服务均部署在同样配置计算机的Docker容器中。针对每个框架均设计一组功能相同的模拟测试微服务&
每组微服务均包含RPC同步请求和RPC请求处理两个微
服务实仮-其中Dubbo和SpringCloud框架对应的微服务
实例基于Java语言编写&而C++微服务框架对应的微服
(每次RPC处理所消耗的时间),取平均值,结果见表3。表3单线程测试微服务框架服务
吞吐率请求处理
开发语言/tps响应时间/msDubboJava14560.6%7SpringCloudJava5061.976轻量级C++微服务模)C++2%49(同步0.351见&基于同
&
量
C++
服务
请求吞吐率和响应时间指标两个方面均优于另外两个框架,
主要原因在于作为编译型语言,C+
+比基于JVM虚拟机
的解释型语言Java的运行效率更高。请求处理响应
步分析,由于RPC请求处理微服务仅仅将请求作为
了返回,请求处理 为0&
以
以
为
的请求处理响应仅仅包括了数据传输和路由分派的时间。训练、
控制系统所能
的请求响应时
间在几毫秒到几十毫
&而导弹模拟、军事预警系统能
的
更短。基于
的
&假设
请求需要由6
服务进行处理,每
服务对请求处理时间约为1
ms。预计Dubbo的请求处理响应时间约为6
*
(1
+
0.687)
=
10.12
ms/次,单个服务吞吐率约为1000/
10.
12
=
99次/s。预计SpringCloud的请求处理响应时间约
为6
*
(1
+1.976)
=
17.
86
ms/次,单个服务吞吐率约为
1000/17.
86
=
56次/s。预计C++微服务框架的请求处理
响应时间约为6
*
(1
+
0.
351)
=8.
11
ms/次,单个服务吞
吐率约为1000/8.11=123次/s。可见,轻量级C++微服
务
另外两
更
于高
、
应用'4结束语本文设计了基于C++语言的轻量级微服务框架&提
岀了服务治理插件堆栈、
撑
插
、微服务插件动态组装等设计思想,对微服务框架的C+
+
API接
设
了讨论&为C++微服务的开发与集成提供了完整的插
方案,可以应 服务系统在服务治理、撑等方面的
需求。对性能的
明,在RPC处理的吞吐率、响应时间等方面性能良好,明显优于
业
的微服务
。可以为基于C++语言的模
'
真、指挥控制等领域应用的高实时、低延迟等交互与处理
需求提供支撑,具有较好的实用价值与应用前景。后续可
[7)
ZHANGJian,
XIETianjun7Researchofplatformasaservice
architecturebasedontheDocker
[J)7InformationTechnology
以对微服务组播交互支持、C++微服务云开发与测试环境
等方面进一步展开研究。andInformatization,
2014
(10):
131-132
(inChinese)7
[张
建,谢天钧.基于Docker的平台即服务架构研究[J).信息,
2014
(10):
131-1327)参考文献:[1)
Pivotal
Software
Inc.
Spring
cloud
[EB/OL).
https:
//
,2018.[8)
ZHANG
Jing,
HUANG
Xiaofeng7
Application
frameworkbasedonmicroservice
[J)7Computer
Systems
f
Applications,
2016,
25
9):
266-267
(inChinese)7
[张
,
7[2)
The Apache
Software
Foundation.
Apache
Dubbo
[EB/OL).
htp"///,2018.基于微服务的应用框架计算机系统应用,2016,
25
9):
266-2677)[9)
GUO
Dong,
WANG
Wei,
ZENG
Guosun.
A
new
cloudware
[3)
HUAWEI.
Software Technology
Co.
Ltd.
Cloud
container
engine
[
EB/OL
).
htp"///product/
PaaSplatformbasedonmicroservicesarchitecture
[J)7Netinfo
Security,
2015
(11):
15-20
(in Chinese).[郭栋,王伟,曾
cce. html,
2018
(in
Chinese).[华为软件技术有限公司.云
国
基于
服务
的
PaaS
[J)容器引
擎[EB/OL).
http:
//www.
huaweicloud.
com/pro-
duct/,2018.
)网络安全,2015
11):
15-20..[10)
LIChunyang,
LIU
Di
Unifiedapplicationdevelopmentplat-
formbasedon
micro-servicearchitecture
[J)
ComputerSys[4)
ervicesframeworkopensourcesoftware
library
[
EB/OL
).
h
tps"//www.
oschina.
net/project/tag/
tems
f
Applications,
2017,
26
(4):
44-45
(in
Chinese)
461/microservice,
2018
(in
Chinese).[开源中国.微服务框
[李春阳,刘迪.基于微服务架构的统一应用开发平台算
系统应用,
2017,
26
(4):
44-45
)架开源软件库[EB/OL).
https:
//www.
oschina.
net/pro-
ject/tag/461/microservice,2018.
)[11)
TAN
Yimin
Designanddevelopmentofplatformizationser-
viceframeworkbasedon
microservicearchitecture
[D)
Bei-
jing:
BeijingJiaotongUniversity,
2017:
32-35
(inChinese)
[5)
ZHANG
Jing,
WANGYanjie,
HUANG Xiaofeng.
The
imple-
mentof
application
framework
based
on
microservice
[J)7
ComputerSystems
f Applications&2017&26
(4):
82-86
(in
[谭一鸣.基于微服务架构的平台化服务框架的设计与实现
Chimse).[张晶,王琰洁,黄小锋.一种微服务框架的实现[D).北京:北京交通大学,2017:
3235..[12)
WANG Meisu.
Research
and
implementation
of
snmp
fetue
计算机系统应用,2017,
26
(4):
82-86..[6)
WANG
Lei.
Archtecture
and
practise
of
microservice
[M).
Beijing:
Publishing
HouseofElectronicsIndustry,
2016:
14plug-in
[D).Beijing:
Beijing
UniversityoMPostsand
Tele-
communications&
2016:
25-26
(in
Chinese).
[王美苏.功能
15
(in
Chinese).[王磊.微服务架构与实践[M).北京:电
插件化的研究与实现[D).北京:北京邮电大学,2016:
25-267)子工业出版社,2016:
1415.(上接第2311页)[10)
YANG
Jiahui,
LIUFang'ai.
Collaborative
filtering
algorithm
basedonpapcoeficientandJaccardcoeficient
[J)7Computer
跟踪算法上海交通大学学报&
2018,
52
(7):
801-
80T.)Application,
2016,
36
(7):
20162010
(in
Chinese).[杨家
[12)
ZHANG
Mingjie,
clefiltertracking
methodbasedongraphmodel
[J)
.ComputerApplicationRe慧,刘方爱.基于巴氏系数和Jaccard系数的协同过滤算法
[J).
算
应用,
2016,
36
7):
2006-2010.)[11)
SUN
Yiqi,
WU
Aiguo,
DONG
Na,
et
al.
Human
hand
tracking
algorithm
based
on
particlefilterandimproved
search,
2016,
33
(2):
591-593
(in Chinese).[张明杰&
康
宝生.一种基于图模型的粒子滤波跟踪方法计算机应
用研究,
2016,
33
2):
591-5937)[13)
Weidong
Min,
Yu
Zhang,
Jing
Li.
Recognition
of
pedestrian
GVFSnake
[J)
.JournalofShanghaiJiaotong
University,
2018
,
52
(7):
801-807
(in
Chinese).[孙一奇,吴
爱国&董娜,等.基于粒子滤波与改进GVF
Snake的人手
activitybasedondropped-objectdetection
[J)7SignalProces-
sing&2017&9
(2):
238-2527
版权声明:本文标题:轻量级C++微服务框架的设计 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1707106766a509314.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论