基于golang的多源多语言信息处理方法及系统与流程



1.本发明涉及信息处理技术领域,尤其涉及一种基于golang的多源多语言信息处理方法及系统。


背景技术:

2.近年来,人们的投资意识觉醒,股票、期货和期权成为投资者的主要的投资渠道,投资的关键是先要了解投资行情,因此出现了行情系统,行情系统运用信息处理技术将各种行情信息进行处理展示给投资者。信息处理是对信息进行接收、存储、转化、传送和发布,信息处理技术是指用计算机技术处理信息,计算机的运行速度极高,能自动处理大量信息,极大地提高了信息的价值。
3.公开号为 202110381171.3的专利公开了一种数据处理方法,该数据处理方法包括基于多通道并行处理技术处理单通道多券行情源得到单券行情信息队列,并将单券行情信息队列中的行情信息进行过滤得到待处理的行情列表,基于预设顺序读取行情列表中的行情信息得到最新的行情信息,并对其对应的基准价格进行计算得到策略报价信息,若策略报价信息符合更新条件及风控条件,使客户端将接收到的策略报价信息进行更新策略报价信息。
4.但是,现有技术中的数据处理方法所处理的行情源数据虽然是基于多券行情源数据,但是该多券行情源数据采用的是同一种语言格式的行情源数据,使得现有技术中对于行情数据信息源的处理存在局限性。


技术实现要素:

5.为此,本发明提供的基于golang的多源多语言信息处理方法及系统,可以解决不能处理多源多语言的行情数据信息的问题。
6.为实现上述目的,一方面本发明提供一种基于golang的多源多语言信息处理方法,该方法包括:接收若干源数据,所述源数据为待处理行情数据;将所述源数据转化为同一语言格式的第一行情数据;对第一行情数据进行存储至第一数据库内;将所述第一行情数据进行合成后,形成第二行情数据,并将第二行情数据存储至第二数据库;当接收到用户端的访问请求时,根据用户端的访问请求从第一数据库或第二数据库内获取第一行情数据或第二行情数据,以使用户端获取到第一行情数据或第二行情数据。
7.进一步地,当转化语言格式时,第一交易平台内的源数据所采用的语言格式为c++,服务端内设置有grpc协议,当第一交易平台与服务端建立数据传输时,服务端通过grpc协议将第一交易平台发送的语言格式c++的源数据进行转化,形成供所述服务端进行数据
处理的第一行情数据,第一行情数据的语言格式为golang语言格式。
8.进一步地,服务端从包括第一交易平台的交易平台组接收源数据时,所述交易平台组包括第一交易平台a和第二交易平台b,在相同时刻t时,第一交易平台a和第二交易平台b分别向服务端传输源数据a和b,当源数据a与源数据b相同时,判定第一交易平台a和第二交易平台b发送的源数据相同,则筛选源数据a或源数据b传输至服务端,当源数据a和源数据b不同时,判定第一交易平台a和第二交易平台b发送的源数据不同,则源数据a和b均传输至服务端。
9.进一步地,将第一行情数据存储到mongodb数据库中,所述第一行情数据为tick数据。
10.进一步地,当对第一行情数据进行合成形成第二行情数据时,所述第一行情数据包含名称、时间、起始价、最高价、最低价、结束价和成交量,所述第二行情数据为bar数据,将合成后的bar数据根据其访问频率存储到mysql数据库或redis数据库中,所述bar数据包含名称、频率、起始价、最高价、最低价、结束价、成交量和时间戳,所述频率为预设合成周期t,所述时间戳为bar数据合成的开始时间,时间戳为第一行情数据中的任意时间,将第一行情数据从开始时刻经过预设合成周期t时间内的所有第一行情数据进行合成,合成后的bar数据存储到mysql数据库或redis数据库中。
11.进一步地,当用户端向服务端发送访问请求时,在服务端内设置有网关,网关接收用户端的访问请求,访问请求为订阅信息请求或查询信息请求,当访问请求为订阅信息请求时,所述订阅信息包含订阅名称,服务端将第一行情数据的名称与订阅信息请求的订阅名称进行匹配,当匹配成功后将第一行情信息推送给用户端;当访问请求为查询信息请求时,服务端接收查询信息请求并从第一数据库或第二数据库中取出第一行情数据或第二行情数据发送至用户端,当用户端发出查询信息请求时,查询信息包含待查询名称,服务端将查询信息请求的待查询名称与第一数据库中的第一行情数据的名称和第二数据库中的第二行情数据的名称进行匹配,当匹配成功后将第一行情数据或第二行情数据从第一数据库或第二数据库中取出并发送至用户端,当匹配不成功时,服务端请求交易平台组发送对应的源数据。
12.进一步地,用户端在发出访问请求前要进行注册,当用户端增加时,服务端启动相应数量的网关,并响应用户端发出的订阅信息请求,当服务端根据订阅信息请求向用户端进行推送时,通过流推送将用户端订阅的第一行情数据推送给用户端,所述流推送是将不同用户端订阅的相同的第一行情数据进行打包同时发送给用户端。
13.进一步地,当存在多个用户端同时发出查询信息请求时,查询信息包含待查询名称和目标交易标的;服务端根据目标交易标的与基准目标交易金额的差值对发出查询信息请求的用户端进行优先等级排序,目标交易标的与基准目标交易金额的差值

s,根据差值

s由大到小的顺序顺次执行对应的用户端的查询信息请求。
14.另一方面本发明提供的基于golang的多源多语言信息处理系统,该系统包括:服务端、若干用户端和交易平台组,服务端设置在用户端和交易平台组之间;所述服务端包括:接收模块,用以接收若干源数据,所述源数据为待处理行情数据;
转化模块,将所述源数据转化为同一语言格式的第一行情数据;第一存储模块,对第一行情数据进行存储至第一数据库内;第二存储模块,将所述第一行情数据进行合成后,形成第二行情数据,并将第二行情数据存储至第二数据库;获取模块,当接收到用户端的访问请求时,根据用户端的访问请求从第一数据库或第二数据库内获取第一行情数据或第二行情数据,以使用户端获取到第一行情数据或第二行情数据。
15.进一步地,本发明提供基于golang的多源多语言信息处理系统的服务端还包括:在用户端的发送访问请求之前,需要在服务端进行注册,本发明实施例通过设置服务端内设置注册模块,用以用户端在服务端进行注册;用户端进行注册之后,服务端获取到用户端的设备标识,在服务端内设置有网关,网关用以接收用户端的访问请求,并将接收到的行情数据与用户端进行匹配,根据用户端的访问请求进行查询信息请求或订阅信息请求的处理,以使用户端获取到第一行情数据或第二行情数据;查询模块,用以根据网关路由的用户端的访问请求中的查询信息请求,查询模块通过查询信息请求与第一数据库或第二数据库内的第一行情数据或第二行情数据进行匹配并将匹配成功的第一行情数据或第二行情数据在第一数据库或第二数据库中取出发送给用户端。
16.与现有技术相比,本发明的有益效果在于,通过接收若干源数据,再将不同平台的不同语言的源数据转化为同一语言格式的第一行情数据,最后将第一行情数据进行处理,让用户端获取到第一行情数据或第二行情数据,实现了对多源多语言行情源数据的处理,提高了源数据的丰富性,从而提高服务端的源数据处理效率。
17.尤其,服务端通过grpc协议将第一交易平台发送的语言格式c++的源数据进行转化,形成供所述服务端进行数据处理的第一行情数据,在本发明实施例中,待处理行情数据的语言格式为golang语言格式,以实现接入服务端的若干交易平台内的源数据语言格式与服务端的语言格式的统一,使得各交易平台内的源数据可以被服务端进行利用,并进行处理,提高了源数据的丰富性,从而提高服务端的源数据处理效率。
18.尤其,通过对源数据进行筛选,把重复的源数据进行筛选传输至服务端,避免了源数据的数据量过大,增加传输负担,通过筛选减小了源数据的数据量,提高了传输效率。
19.尤其,通过将第一行情数据存储到mongodb数据库中,由于mongodb数据库适合实时存储大量数据,增大了存储空间,此外,mongobd数据库可以进行及时查询,提高了查询信息的效率。
20.尤其,通过将第一行情数据进行合成,可以在第一行情数据中提取有价值的信息,并将合成的bar数据存储到mysql数据库和redis数据库中,mysql数据库可以持久化的存储数据,功能强大,redis数据库存储使用频繁的数据,提高了读取速度。
21.尤其,通过用户端发送访问请求,当访问请求是订阅信息请求时,服务端向用户端推送相关订阅信息,当访问请求是查询信息请求时,通过查询信息名称从第一数据库或第二数据库中数据库取出第一行情数据或第二行情数据发送至用户端,实现了快速响应查询信息请求。
22.尤其,通过用户端注册,服务端随着用户端的增多启动相应数量的网关,网关接收用户端的访问请求,并响应用户端发出的订阅信息请求,当服务端根据订阅信息请求向用户端进行推送时,通过流推送将用户端订阅的第一行情数据推送给用户端,实现了负载均衡。
23.尤其,服务端根据目标交易标的与基准目标交易金额的差值对发出请求的用户端进行优先等级排序,避免了用户端同时发出查询请求过多造成服务端处理不及时,提高了服务端的处理效率。
24.尤其,通过服务端的接收模块接收若干源数据,转化模块将所述源数据转化为同一语言格式的第一行情数据,然后第一存储模块对第一行情数据进行存储,第二存储模块将第一行情数据进行合成,最后获取模块接收用户端的访问请求,以使用户端获取到第一行情数据或第二行情数据,实现了服务端对多源多语言信息的处理和无感传输,提高了源数据的丰富性,从而提高服务端的源数据处理效率。
25.尤其,用户端通过服务端的注册模块进行注册,用户端进行注册之后,服务端获取到用户端的设备标识,在服务端内设置有网关,网关用以接收用户端的访问请求,并将接收到的行情数据与用户端进行匹配,查询模块根据用户端的访问请求进行查询信息请求或订阅信息请求的处理,以使用户端获取到第一行情数据或第二行情数据,实现了服务端对用户端的快速请求并响应。
附图说明
26.图1为本发明实施例提供的基于golang的多源多语言信息处理方法流程示意图;图2为本发明实施例提供的基于golang的多源多语言信息处理系统结构示意图。
具体实施方式
27.为了使本发明的目的和优点更加清楚明白,下面结合实施例对本发明作进一步描述;应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
28.下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非在限制本发明的保护范围。
29.需要说明的是,在本发明的描述中,术语“上”、“下”、“左”、“右”、“内”、“外”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示所述装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
30.此外,还需要说明的是,在本发明的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可根据具体情况理解上述术语在本发明中的具体含义。
31.请参阅图1所示,本发明实施例提供的基于golang的多源多语言信息处理方法包括:步骤s110:接收若干源数据,所述源数据为待处理行情数据;
步骤s120:将所述源数据转化为同一语言格式的第一行情数据;步骤s130:对第一行情数据进行存储至第一数据库内;将所述第一行情数据进行合成后,形成第二行情数据,并将第二行情数据存储至第二数据库;步骤s140:当接收到用户端的访问请求时,根据用户端的访问请求从第一数据库或第二数据库内获取第一行情数据或第二行情数据,以使用户端获取到第一行情数据或第二行情数据。
32.具体而言,本发明实施例通过接收若干源数据,再将不同平台的不同语言的源数据转化为同一语言格式的第一行情数据,最后将第一行情数据进行处理,让用户端获取到第一行情数据或第二行情数据,实现了对多源多语言行情源数据的处理,提高了源数据的丰富性,从而提高服务端的源数据处理效率。
33.具体而言,当转化语言格式时,第一交易平台内的源数据所采用的语言格式为c++,服务端内设置有grpc协议,当第一交易平台与服务端建立数据传输时,服务端通过grpc协议将第一交易平台发送的语言格式c++的源数据进行转化,形成供所述服务端进行数据处理的第一行情数据,第一行情数据的语言格式为golang语言格式。
34.具体而言,服务端通过grpc协议将第一交易平台发送的语言格式c++的源数据进行转化,形成供所述服务端进行数据处理的第一行情数据,在本发明实施例中,待处理行情数据的语言格式为golang语言格式,以实现接入服务端的若干交易平台内的源数据语言格式与服务端的语言格式的统一,使得各交易平台内的源数据可以被服务端进行利用,并进行处理,提高了源数据的丰富性,从而提高服务端的源数据处理效率。
35.具体而言,服务端从包括第一交易平台的交易平台组接收源数据时,所述交易平台组包括第一交易平台a和第二交易平台b,在相同时刻t时,第一交易平台a和第二交易平台b分别向服务端传输源数据a和b,当源数据a与源数据b相同时,判定第一交易平台a和第二交易平台b发送的源数据相同,则筛选源数据a或源数据b传输至服务端,当源数据a和源数据b不同时,判定第一交易平台a和第二交易平台b发送的源数据不同,则源数据a和b均传输至服务端。
36.具体而言,本发明实施例通过对源数据进行筛选,把重复的源数据进行筛选传输至服务端,避免了源数据的数据量过大,增加传输负担,通过筛选减小了源数据的数据量,提高了传输效率。
37.具体而言,将第一行情数据存储到mongodb数据库中,所述第一行情数据为tick数据。
38.具体而言,本发明实施例通过将第一行情数据存储到mongodb数据库中,由于mongodb数据库适合实时存储大量数据,增大了存储空间,此外,mongobd数据库可以进行及时查询,提高了查询信息的效率。
39.具体而言,当对第一行情数据进行合成形成第二行情数据时,所述第一行情数据包含名称、时间、起始价、最高价、最低价、结束价和成交量,所述第二行情数据为bar数据,将合成后的bar数据根据其访问频率存储到mysql数据库或redis数据库中,所述bar数据包含名称、频率、起始价、最高价、最低价、结束价、成交量和时间戳,所述频率为预设合成周期t,所述时间戳为bar数据合成的开始时间,时间戳为第一行情数据中的任意时间,将第一行
情数据从开始时刻经过预设合成周期t时间内的所有第一行情数据进行合成,合成后的bar数据存储到mysql数据库或redis数据库中。
40.具体而言,t=1min,时间戳为11:34:00,那么bar数据是由开始时间11:34:00到结束时间11:35:00内的所有第一行情数据合成的。
41.具体而言,本发明实施例通过将第一行情数据进行合成,可以在第一行情数据中提取有价值的信息,并将合成的bar数据存储到mysql数据库和redis数据库中,mysql数据库可以持久化的存储数据,功能强大,redis数据库存储使用频繁的数据,提高了读取速度。
42.具体而言,当用户端向服务端发送访问请求时,在服务端内设置有网关,网关接收用户端的访问请求,访问请求为订阅信息请求或查询信息请求,当访问请求为订阅信息请求时,所述订阅信息包含订阅名称,服务端将第一行情数据的名称与订阅信息请求的订阅名称进行匹配,当匹配成功后将第一行情信息推送给用户端;当访问请求为查询信息请求时,服务端接收查询信息请求并从第一数据库或第二数据库中取出第一行情数据或第二行情数据发送至用户端,当用户端发出查询信息请求时,查询信息包含待查询名称,服务端将查询信息请求的待查询名称与第一数据库中的第一行情数据的名称和第二数据库中的第二行情数据的名称进行匹配,当匹配成功后将第一行情数据或第二行情数据从第一数据库或第二数据库中取出并发送至用户端,当匹配不成功时,服务端请求交易平台组发送对应的源数据。
43.具体而言,本发明实施例通过用户端发送访问请求,当访问请求是订阅信息请求时,服务端向用户端推送相关订阅信息,当访问请求是查询信息请求时,通过查询信息名称从第一数据库或第二数据库中数据库取出第一行情数据或第二行情数据发送至用户端,实现了快速响应查询信息请求。
44.具体而言,用户端在发出访问请求前要进行注册,当用户端增加时,服务端启动相应数量的网关,并响应用户端发出的订阅信息请求,当服务端根据订阅信息请求向用户端进行推送时,通过流推送将用户端订阅的第一行情数据推送给用户端,所述流推送是将不同用户端订阅的相同的第一行情数据进行打包同时发送给用户端。
45.具体而言,两个用户端都订阅了第一行情数据m,那么将第一行情数据m进行打包同时发送给两个用户端。
46.具体而言,本发明实施例通过用户端注册,服务端随着用户端的增多启动相应数量的网关,网关接收用户端的访问请求,并响应用户端发出的订阅信息请求,当服务端根据订阅信息请求向用户端进行推送时,通过流推送将用户端订阅的第一行情数据推送给用户端,实现了负载均衡。
47.具体而言,当存在多个用户端同时发出查询信息请求时,查询信息包含待查询名称和目标交易标的;服务端根据目标交易标的与基准目标交易金额的差值对发出查询信息请求的用户端进行优先等级排序,目标交易标的与基准目标交易金额的差值

s,根据差值

s由大到小的顺序顺次执行对应的用户端的查询信息请求。
48.例如:三个用户端c、d和f同时发出查询信息请求,查询信息的目标交易标的分别为3500、4100和4500,基准目标交易金额为4000,那么目标交易标的与基准目标交易金额的差值分别为-500、+100和+500,由于-500<+100<+500,所以用户端的优先等级为先
执行用户端f的查询信息请求,再执行用户端d的查询信息请求,最后执行用户端c的查询信息请求。
49.具体而言,本发明实施例中服务端根据目标交易标的与基准目标交易金额的差值对发出请求的用户端进行优先等级排序,避免了用户端同时发出查询请求过多造成服务端处理不及时,提高了服务端的处理效率。
50.请参阅图2所示,本发明实施例提供的基于golang的多源多语言信息处理系统包括:服务端、若干用户端和交易平台组,服务端设置在用户端和交易平台组之间;所述服务端包括:接收模块210,用以接收若干源数据,所述源数据为待处理行情数据;转化模块220,将所述源数据转化为同一语言格式的第一行情数据;第一存储模块230,对第一行情数据进行存储至第一数据库内;第二存储模块240,将所述第一行情数据进行合成后,形成第二行情数据,并将第二行情数据存储至第二数据库;获取模块250,当接收到用户端的访问请求时,根据用户端的访问请求从第一数据库或第二数据库内获取第一行情数据或第二行情数据,以使用户端获取到第一行情数据或第二行情数据。
51.在用户端的发送访问请求之前,需要在服务端进行注册,本发明实施例通过设置服务端内设置注册模块260,用以用户端在服务端进行注册;用户端进行注册之后,服务端获取到用户端的设备标识,在服务端内设置有网关270,网关用以接收用户端的访问请求,并将接收到的行情数据与用户端进行匹配,根据用户端的访问请求进行查询信息请求或订阅信息请求的处理,以使用户端获取到第一行情数据或第二行情数据;查询模块280,用以根据网关路由的用户端的访问请求中的查询信息请求,查询模块通过查询信息请求与第一数据库或第二数据库内的第一行情数据或第二行情数据进行匹配并将匹配成功的第一行情数据或第二行情数据在第一数据库或第二数据库中取出发送给用户端。
52.具体而言,本发明实施例通过接收模块接收若干源数据,转化模块将所述源数据转化为同一语言格式的第一行情数据,然后处理模块将第一行情数据分别进行存储、合成和推送,合成后形成第二行情数据,以使用户端获取到第一行情数据或第二行情数据,用户端通过注册模块注册,向服务端发送访问请求,网关接收访问请求中的查询信息请求并将查询信息请求路由至查询模块,查询模块通过与第一数据库或第二数据库进行匹配,将匹配的第一行情数据或第二行情信息发送至用户端,实现了服务端对多源多语言信息的处理和无感传输,提高了源数据的丰富性,从而提高服务端的源数据处理效率,实现了服务端对用户端的快速请求并响应。
53.具体而言,本发明实施例提供的基于golang的多源多语言信息处理系统在进行部署时,通过容器技术,把整体的基于golang的多源多语言信息处理系统打包进容器镜像,实现了跨平台的开箱即用,快速部署的效果。
54.至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本
发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
55.以上所述仅为本发明的优选实施例,并不用于限制本发明;对于本领域的技术人员来说,本发明可以有各种更改和变化。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。