基于Gin框架的高并发网关SIP代理方法和装置与流程
基于gin框架的高并发网关sip代理方法和装置
技术领域
1.本技术涉及计算机技术领域,尤其涉及一种基于gin框架的高并发网关sip代理方法和装置。
背景技术:
2.随着计算机和通信技术的迅速发展,新一代基于ip的服务的sip(session initiation protocol,会话初始协议)应运而生。sip是适合各种媒体内容而实现多用户会话的协议,现已成为互联网工作任务组的规范。sip是一种基于文本的协议,用来创建、改变或者终止一个或多个参与者参加的会话的应用层控制信令协议。sip主要支持建立和终止多媒体通信功能。
3.对于连接sip域和非sip域的网关而言,其要承载所有的sip会话控制,接口访问量较大。传统的基于tcp(transmission control protocol,传输控制协议)的通讯方式对访问控制管理较弱,不能很好的实现高并发,而且数据格式通常采用xml(extensiblemarkuplanguage,可扩展的标识语言)格式,不够简洁,因此亟需解决这一技术问题。
技术实现要素:
4.鉴于上述问题,提出了本技术以便提供一种克服上述问题或者至少部分地解决上述问题的基于gin框架的高并发网关sip代理方法和装置。所述技术方案如下:
5.第一方面,提供了一种基于gin框架的高并发网关sip代理方法,包括:
6.将gin框架应用到网关服务中;其中gin框架是使用golang语言实现的http web框架,能够支持json;golang语言是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言;
7.在进行sip会话控制时向本域的功能实体提供http式访问接口;
8.功能实体通过指定请求方法携带json格式参数访问对应端口,并得到json格式的应答结果。
9.在一种可能的实现方式中,所述指定请求方法包括get、post、put、delete、option中的任意一种方法。
10.在一种可能的实现方式中,所述功能实体通过指定请求方法携带json格式参数访问对应端口,包括:
11.使用gin框架的default方法创建一个路由,通过http方法绑定路由规则和路由函数;
12.将请求request和应答response均封装到gin框架的context的上下文环境,并启动路由的run方法监听端口;其中请求request包含通过指定请求方法携带json格式参数访问对应端口。
13.在一种可能的实现方式中,所述方法还包括:
14.在进行sip会话控制时根据访问请求获取对应的业务控制逻辑;
15.获取所述访问请求的发起方的信息和所述访问请求中使用业务的业务方的信息;
16.在所述业务控制逻辑的控制下所述发起方和所述业务方进行交互,完成业务交付。
17.在一种可能的实现方式中,所述在进行sip会话控制时根据访问请求获取对应的业务控制逻辑,包括:
18.在进行sip会话控制时解析访问请求得到业务标识;
19.加载所述业务标识对应的json格式的业务过程描述信息;
20.对所述业务过程描述信息进行解析得到业务控制逻辑。
21.在一种可能的实现方式中,加载所述业务标识对应的json格式的业务过程描述信息,包括:
22.与业务过程描述数据库交互获得所述业务标识对应的json格式的业务过程描述信息。
23.第二方面,提供了一种基于gin框架的高并发网关sip代理装置,包括:
24.应用模块,用于将gin框架应用到网关服务中;其中gin框架是使用golang语言实现的http web框架,能够支持json;golang语言是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言;
25.提供模块,用于在进行sip会话控制时向本域的功能实体提供http式访问接口;
26.处理模块,用于功能实体通过指定请求方法携带json格式参数访问对应端口,并得到json格式的应答结果。
27.在一种可能的实现方式中,所述处理模块还用于:
28.使用gin框架的default方法创建一个路由,通过http方法绑定路由规则和路由函数;
29.将请求request和应答response均封装到gin框架的context的上下文环境,并启动路由的run方法监听端口;其中请求request包含通过指定请求方法携带json格式参数访问对应端口。
30.在一种可能的实现方式中,所述处理模块还用于:
31.在进行sip会话控制时根据访问请求获取对应的业务控制逻辑;
32.获取所述访问请求的发起方的信息和所述访问请求中使用业务的业务方的信息;
33.在所述业务控制逻辑的控制下所述发起方和所述业务方进行交互,完成业务交付。
34.在一种可能的实现方式中,所述处理模块还用于:
35.在进行sip会话控制时解析访问请求得到业务标识;
36.加载所述业务标识对应的json格式的业务过程描述信息;
37.对所述业务过程描述信息进行解析得到业务控制逻辑。
38.借由上述技术方案,本技术实施例提供的基于gin框架的高并发网关sip代理方法和装置,将gin框架应用到网关服务中;其中gin框架是使用golang语言实现的http web框架,能够支持json;golang语言是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言;在进行sip会话控制时向本域的功能实体提供http式访问接口;功能实体通过指定
请求方法携带json格式参数访问对应端口,并得到json格式的应答结果。可以看到,本技术实施例将gin框架应用到网关服务中,可以充分利用gin框架多协程高并发,高性能输入输出以及快速异常处理等优点,能够提高网关服务的响应效率和访问速度,并提升网关服务处理请求request的鲁棒性。
附图说明
39.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
40.图1示出了根据本技术实施例的基于gin框架的高并发网关sip代理方法的流程图;
41.图2示出了根据本技术另一实施例的基于gin框架的高并发网关sip代理方法的流程图;
42.图3示出了根据本技术实施例的基于gin框架的高并发网关sip代理装置的结构图。
具体实施方式
43.下面将参照附图更详细地描述本技术的示例性实施例。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
44.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。
45.golang语言,golang又称go,是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言。
46.http(hypertext transfer protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的www文件都必须遵守这个标准。http是为web浏览器与web服务器之间的通信而设计的,但也可以用于其他目的。http是一个基于tcp/ip通信协议来传递数据的,例如html(hypertext markup language,超文本标记语言)文件、图片文件、查询结果等。
47.gin框架是使用golang语言实现的http web框架,能够非常好的支持中间件和json。
48.本技术实施例提供了一种基于gin框架的高并发网关sip代理方法。如图1所示,该基于gin框架的高并发网关sip代理方法可以包括以下步骤s101至s103:
49.步骤s101,将gin框架应用到网关服务中;其中gin框架是使用golang语言实现的http web框架,能够支持json;golang语言是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言;
50.步骤s102,在进行sip会话控制时向本域的功能实体提供http式访问接口;
51.步骤s103,功能实体通过指定请求方法携带json格式参数访问对应端口,并得到json格式的应答结果。
52.本技术实施例将gin框架应用到网关服务中;其中gin框架是使用golang语言实现的http web框架,能够支持json;golang语言是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言;在进行sip会话控制时向本域的功能实体提供http式访问接口;功能实体通过指定请求方法携带json格式参数访问对应端口,并得到json格式的应答结果。可以看到,本技术实施例将gin框架应用到网关服务中,可以充分利用gin框架多协程高并发,高性能输入输出以及快速异常处理等优点,能够提高网关服务的响应效率和访问速度,并提升网关服务处理请求request的鲁棒性。
53.本技术实施例中提供了一种可能的实现方式,上文步骤s103中提及的指定请求方法可以包括get、post、put、delete、option中的任意一种方法。
54.本技术实施例中提供了一种可能的实现方式,上文步骤s103功能实体通过指定请求方法携带json格式参数访问对应端口,具体可以包括以下步骤s103-1和s103-2。
55.步骤s103-1,使用gin框架的default方法创建一个路由,通过http方法绑定路由规则和路由函数;
56.步骤s103-2,将请求request和应答response均封装到gin框架的context的上下文环境,并启动路由的run方法监听端口;其中请求request包含通过指定请求方法携带json格式参数访问对应端口。
57.本技术实施例使用gin框架的default方法创建一个路由,通过http方法绑定路由规则和路由函数,进而将请求request和应答response均封装到gin框架的context的上下文环境,并启动路由的run方法监听端口;其中请求request包含通过指定请求方法携带json格式参数访问对应端口,能够提高网关服务的响应效率和访问速度,并提升网关服务处理请求request的鲁棒性。
58.本技术实施例中提供了一种可能的实现方式,为了满足用户多样化的业务需求,还可以包括以下步骤a1至a3:
59.步骤a1,在进行sip会话控制时根据访问请求获取对应的业务控制逻辑;
60.步骤a2,获取访问请求的发起方的信息和访问请求中使用业务的业务方的信息;
61.步骤a3,在业务控制逻辑的控制下发起方和业务方进行交互,完成业务交付。
62.本技术实施例在进行sip会话控制时根据访问请求获取对应的业务控制逻辑,进而获取访问请求的发起方的信息和访问请求中使用业务的业务方的信息,随后在业务控制逻辑的控制下发起方和业务方进行交互,完成业务交付,从而通过执行不同的业务控制逻辑实现为用户提供多种业务,满足用户的对当前通信系统多样化业务的需求。
63.上文步骤a1在进行sip会话控制时根据访问请求获取对应的业务控制逻辑,具体可以包括以下步骤a1-1至a1-3:
64.步骤a1-1,在进行sip会话控制时解析访问请求得到业务标识;
65.步骤a1-2,加载业务标识对应的json格式的业务过程描述信息;
66.步骤a1-3,对业务过程描述信息进行解析得到业务控制逻辑。
67.本技术实施例在进行sip会话控制时解析访问请求得到业务标识,进而加载业务
标识对应的json格式的业务过程描述信息,随后对业务过程描述信息进行解析得到业务控制逻辑,从而能够提高网关服务的响应效率和访问速度。
68.本技术实施例中提供了一种可能的实现方式,步骤a1-2加载业务标识对应的json格式的业务过程描述信息,具体可以是与业务过程描述数据库交互获得业务标识对应的json格式的业务过程描述信息,这样能够保证数据的准确性和提高数据处理的效率。
69.以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍基于gin框架的高并发网关sip代理方法。
70.本技术另一实施例提供了一种基于gin框架的高并发网关sip代理方法,该方法可以通过golang语言编程实现。如图2所示,该基于gin框架的高并发网关sip代理方法可以包括以下步骤s201至s207。
71.步骤s201,将使用golang语言实现的gin框架应用到网关服务中。
72.该步骤中,gin框架是使用golang语言实现的http web框架,能够支持json;golang语言是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言,它专门针对多处理器系统应用程序的编程进行了优化,使用golang编译的程序可以媲美c或c++代码的速度,而且更加安全、支持并行进程。
73.步骤s202,在进行sip会话控制时向本域的功能实体提供http式访问接口。
74.步骤s203,使用gin框架的default方法创建一个路由,通过http方法绑定路由规则和路由函数。
75.步骤s204,将请求request和应答response均封装到gin框架的context的上下文环境,并启动路由的run方法监听端口;其中请求request包含通过指定请求方法携带json格式参数访问对应端口。
76.该步骤中,指定请求方法可以包括get、post、put、delete、option中的任意一种方法。
77.步骤s205,在进行sip会话控制时根据访问请求获取对应的业务控制逻辑。该步骤中,可以在进行sip会话控制时解析访问请求得到业务标识,进而加载业务标识对应的json格式的业务过程描述信息,随后对业务过程描述信息进行解析得到业务控制逻辑,从而能够提高网关服务的响应效率和访问速度。
78.步骤s206,获取访问请求的发起方的信息和访问请求中使用业务的业务方的信息。
79.步骤s207,在业务控制逻辑的控制下发起方和业务方进行交互,完成业务交付。
80.本技术实施例将gin框架应用到网关服务中,可以充分利用gin框架多协程高并发,高性能输入输出以及快速异常处理等优点,能够提高网关服务的响应效率和访问速度,并提升网关服务处理请求request的鲁棒性。并且,通过执行不同的业务控制逻辑实现为用户提供多种业务,满足用户的对当前通信系统多样化业务的需求。
81.需要说明的是,实际应用中,上述所有可能的实施方式可以采用结合的方式任意组合,形成本技术的可能的实施例,在此不再一一赘述。
82.基于上文各个实施例提供的基于gin框架的高并发网关sip代理方法,基于同一发明构思,本技术实施例还提供了一种基于gin框架的高并发网关sip代理装置。
83.图3示出了根据本技术实施例的基于gin框架的高并发网关sip代理装置的结构
图。如图3所示,该基于gin框架的高并发网关sip代理装置可以包括应用模块310、提供模块320以及处理模块330。
84.应用模块310,用于将gin框架应用到网关服务中;其中gin框架是使用golang语言实现的http web框架,能够支持json;golang语言是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言;
85.提供模块320,用于在进行sip会话控制时向本域的功能实体提供http式访问接口;
86.处理模块330,用于功能实体通过指定请求方法携带json格式参数访问对应端口,并得到json格式的应答结果。
87.本技术实施例中提供了一种可能的实现方式,指定请求方法包括get、post、put、delete、option中的任意一种方法。
88.本技术实施例中提供了一种可能的实现方式,上文图3展示的处理模块330还用于:
89.使用gin框架的default方法创建一个路由,通过http方法绑定路由规则和路由函数;
90.将请求request和应答response均封装到gin框架的context的上下文环境,并启动路由的run方法监听端口;其中请求request包含通过指定请求方法携带json格式参数访问对应端口。
91.本技术实施例中提供了一种可能的实现方式,上文图3展示的处理模块330还用于:
92.在进行sip会话控制时根据访问请求获取对应的业务控制逻辑;
93.获取访问请求的发起方的信息和访问请求中使用业务的业务方的信息;
94.在业务控制逻辑的控制下发起方和业务方进行交互,完成业务交付。
95.本技术实施例中提供了一种可能的实现方式,上文图3展示的处理模块330还用于:
96.在进行sip会话控制时解析访问请求得到业务标识;
97.加载业务标识对应的json格式的业务过程描述信息;
98.对业务过程描述信息进行解析得到业务控制逻辑。
99.本技术实施例提供的基于gin框架的高并发网关sip代理装置,将gin框架应用到网关服务中;其中gin框架是使用golang语言实现的http web框架,能够支持json;golang语言是一种静态强类型、编译型、并发型,具有垃圾回收功能的编程语言;在进行sip会话控制时向本域的功能实体提供http式访问接口;功能实体通过指定请求方法携带json格式参数访问对应端口,并得到json格式的应答结果。可以看到,本技术实施例将gin框架应用到网关服务中,可以充分利用gin框架多协程高并发,高性能输入输出以及快速异常处理等优点,能够提高网关服务的响应效率和访问速度,并提升网关服务处理请求request的鲁棒性。
100.本技术实施例中提供了一种可能的实现方式,上文图3展示的装置还可以包括接收模块、封装模块和发送模块(附图3中未示出)。
101.接收模块,用于接收来自云平台的以mqtt协议格式封装的mqtt待处理数据;
102.封装模块,用于对mqtt待处理数据进行解析,并按照modbus协议格式封装解析后的数据,以得到modbus封装数据;
103.发送模块,用于将modbus封装数据发送给对应的智能设备。
104.本技术实施例中提供了一种可能的实现方式,封装模块还用于:解析mqtt待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成modbus协议包以得到modbus封装数据;
105.发送模块还用于:根据智能设备地址,将modbus封装数据发送给对应的智能设备。
106.本技术实施例中提供了一种可能的实现方式,modbus转mqtt协议的云网关实现装置通过golang语言编程实现。
107.本技术实施例提供的modbus转mqtt协议的云网关实现装置,云网关负责modbus、mqtt两种通讯协议的转换,由云网关实时完成以上两种数据格式的转换,并实时上传云平台。在软件系统中不断循环执行通过串口基于modbus协议从传感器等智能设备读取相关实时数据,以及将实时数据以mqtt协议打包上传云平台。
108.相比于现有物联网网关,云网关依托golang语言的高可移植性,能较好的保证云网关的硬件稳定与可靠,同时能实现同时采集多路现场设备的实时数据,同时基于linux环境下的golang语言开发具有很高的开发效率,软件系统代码精炼,代码复用与迁移开发都比较容易,非常便于扩展应用到其他类似物联网数据采集项目开发中。
109.所属领域的技术人员可以清楚地了解到,上述描述的系统、装置、模块的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
110.本领域普通技术人员可以理解:本技术的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干程序指令,用以使得一电子设备(例如个人计算机,服务器,或者网络设备等)在运行所述程序指令时执行本技术各实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram)、磁碟或者光盘等各种可以存储程序代码的介质。
111.或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的电子设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被电子设备的处理器执行时,所述电子设备执行本技术各实施例所述方法的全部或部分步骤。
112.以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:在本技术的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本技术的保护范围。