首页 / 专利分类库 / 电通信技术 / 一种基于Dubbo-go服务端的启动器及启动方法

一种基于Dubbo-go服务端的启动器及启动方法

申请号 CN202410313828.6 申请日 2024-03-19 公开(公告)号 CN118018586A 公开(公告)日 2024-05-10
申请人 全通金信控股(广东)有限公司; 发明人 李宝君; 何玉华;
摘要 本 发明 公开了一种基于Dubbo‑go服务端的启动器及启动方法,涉及Dubbo‑go服务技术领域,包括:配置读取器,用于分别读取key‑value配置文件和读取yaml配置文件,并标定为键值对表key‑value;键值对表key‑value,用于存储键值数据;DubboConfig结构体,用于适配yaml配置文件的结构体;代码配置api,用于接入配置中心提供自定义配置结构体服务。本发明支持yaml配置文件和代码配置同步使用,而且支持yaml配置文件带占位符,同时支持自定义的配置中心,适配性更高。
权利要求

1.一种基于Dubbo‑go服务端的启动器,其特征在于,包括:
配置读取器(1),用于分别读取key‑value配置文件和读取yaml配置文件,并标定为键值对表key‑value;
键值对表key‑value(2),用于存储键值数据;
DubboConfig结构体(3),用于适配yaml配置文件的结构体;
代码配置api(4),用于接入配置中心提供自定义配置结构体服务。
2.根据权利要求1所述的基于Dubbo‑go服务端的启动器,其特征在于,所述配置读取器(1),包括:存储预先设定key‑value配置文件路径和yaml配置文件路径。
3.一种基于Dubbo‑go服务端的启动方法,其特征在于,用于权利要求1‑2中的任意一项所述的基于Dubbo‑go服务端的启动器的启动方法,包括以下步骤:
配置读取器预先读取key‑value配置文件,并标定为键值对表key‑value;
配置读取器读取yaml配置文件;
进行将yaml配置文件的占位符,用键值对表key‑value的配置替换,其中,key字符为占位符的标识,value字符为替换成的值;
将替换后的yaml配置文件,标定为DubboConfig结构体;
将DubboConfig结构体转成yaml配置文件的格式内容;
将格式内容转入Dubbo‑go服务端的加载配置中,并启动Dubbo‑go服务。
4.根据权利要求3所述的基于Dubbo‑go服务端的启动方法,其特征在于,步骤所述配置读取器预先读取key‑value配置文件,包括以下步骤:
预先分别设定key‑value配置文件路径和yaml配置文件路径,并存储于配置读取器内。
5.根据权利要求3所述的基于Dubbo‑go服务端的启动方法,其特征在于,步骤所述标定为键值对表key‑value,包括以下步骤:
查看ConfigGetApi接口是否有实现ConfigSetApi接口的结构体,其中,包括以下步骤:
若ConfigGetApi接口有实现ConfigSetApi接口的结构体,则调用ConfigGetApi接口,获取该结构体,并将该结构体与键值对表key‑value合并;
若ConfigGetApi接口无实现ConfigSetApi接口的结构体,则配置读取器读取yaml配置文件。
6.根据权利要求5所述的基于Dubbo‑go服务端的启动方法,其特征在于,步骤所述标定为DubboConfig结构体,包括以下步骤:
查看ConfigSetApi接口是否有实现ConfigSetApi接口的结构体,其中,包括以下步骤:
若ConfigSetApi接口有实现ConfigSetApi接口的结构体,则调用ConfigSetApi接口,获取该结构体与DubboConfig结构体合并,形成新的DubboConfig结构体;
若ConfigSetApi接口无实现ConfigSetApi接口的结构体,则将DubboConfig结构体转成yaml配置文件的格式内容。
7.根据权利要求6所述的基于Dubbo‑go服务端的启动方法,其特征在于,步骤所述形成新的DubboConfig结构体,包括以下步骤:
将新的DubboConfig结构体转成yaml配置文件的格式内容;
将格式内容转入Dubbo‑go服务端的加载配置中,并启动Dubbo‑go服务。

说明书全文

一种基于Dubbo‑go服务端的启动器及启动方法

技术领域

[0001] 本发明涉及Dubbo‑go服务技术领域,具体来说,涉及一种基于Dubbo‑go服务端的启动器及启动方法。

背景技术

[0002] Dubbo是阿里巴巴开源的基于Java的高性能RPC(远程调用)分布式服务框架,致于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。用户可以基于该框架轻松的实现微服务。目前该开源项目也提供了go语言版本的实现,但go语言没有像java语言那么富丰的生态,对比java版,在使用上会有一些问题。首先,dubbogo对配置的支持yaml文件配置和代码配置只能二选一,不能同时两种配置混合使用(一般文件配是项目中直接使用的,代码配置一般是架构师统一加的配置)。java版因为有spring框架的存在,所以java版的配置文件可以有占位符(这样有些值,可以从其它配置中取),但go版的yaml文件配置不支持占位符(就是所有配置)。
[0003] 目前,如图1中的“address:127.0.0.1:2181”,其中“127.0.0.1:2181”这个值往往是在项目启动时才确定。所以更好的作法如图2所示,address和port的值写对应的占位符,然后在项目启动时再从启动环境中读取dubbo.address和dubbo.port的值作为address和port的值。最后dubbogo支持配置中心,但它只支持nacos作为它的配置中心,而且nacos中放的也是yaml文件格式的配置(如图1)。这样带来的问题是,在多个项目中有些配置的值是相同的,比如图1中的“address:127.0.0.1:2181”,如果采用dubbogo的配置中心方案,那每个项目的address的值都要重复写一次,后期如果要改变这个值时,就要同时改所有的yaml文件。
[0004] 因此,亟需一种基于Dubbo‑go服务端的启动器及启动方法。
[0005] 针对相关技术中的问题,目前尚未提出有效的解决方案。

发明内容

[0006] 针对相关技术中的问题,本发明提出一种基于Dubbo‑go服务端的启动器及启动方法,以克服现有相关技术所存在的上述技术问题。
[0007] 本发明的技术方案是这样实现的:
[0008] 本发明一方面:
[0009] 一种基于Dubbo‑go服务端的启动器,包括:
[0010] 配置读取器,用于分别读取key‑value配置文件和读取yaml配置文件,并标定为键值对表key‑value;
[0011] 键值对表key‑value,用于存储键值数据;
[0012] DubboConfig结构体,用于适配yaml配置文件的结构体;
[0013] 代码配置api,用于接入配置中心提供自定义配置结构体服务。
[0014] 进一步的,所述配置读取器,包括:存储预先设定key‑value配置文件路径和yaml配置文件路径。
[0015] 本发明另一方面:
[0016] 一种基于Dubbo‑go服务端的启动方法,包括以下步骤:
[0017] 步骤S1,配置读取器预先读取key‑value配置文件,并标定为键值对表key‑value;
[0018] 步骤S2,配置读取器读取yaml配置文件;
[0019] 步骤S3,进行将yaml配置文件的占位符,用键值对表key‑value的配置替换,其中,key字符为占位符的标识,value字符为替换成的值;
[0020] 步骤S4,将替换后的yaml配置文件,标定为DubboConfig结构体;
[0021] 步骤S5,将DubboConfig结构体转成yaml配置文件的格式内容;
[0022] 步骤S6,将格式内容转入Dubbo‑go服务端的加载配置中,并启动Dubbo‑go服务。
[0023] 其中,步骤所述配置读取器预先读取key‑value配置文件,包括以下步骤:
[0024] 步骤S101,预先分别设定key‑value配置文件路径和yaml配置文件路径,并存储于配置读取器内。
[0025] 其中,步骤所述标定为键值对表key‑value,包括以下步骤:
[0026] 步骤S102,查看ConfigGetApi接口是否有实现ConfigSetApi接口的结构体,其中,包括以下步骤:
[0027] 步骤S103,若ConfigGetApi接口有实现ConfigSetApi接口的结构体,则调用ConfigGetApi接口,获取该结构体,并将该结构体与键值对表key‑value合并;
[0028] 步骤S104,若ConfigGetApi接口无实现ConfigSetApi接口的结构体,则配置读取器读取yaml配置文件。
[0029] 其中,步骤所述标定为DubboConfig结构体,包括以下步骤:
[0030] 步骤S401,查看ConfigSetApi接口是否有实现ConfigSetApi接口的结构体,其中,包括以下步骤:
[0031] 步骤S402,若ConfigSetApi接口有实现ConfigSetApi接口的结构体,则调用ConfigSetApi接口,获取该结构体与DubboConfig结构体合并,形成新的DubboConfig结构体;
[0032] 步骤S403,若ConfigSetApi接口无实现ConfigSetApi接口的结构体,则将DubboConfig结构体转成yaml配置文件的格式内容。
[0033] 其中,步骤所述形成新的DubboConfig结构体,包括以下步骤:
[0034] 将新的DubboConfig结构体转成yaml配置文件的格式内容;
[0035] 将格式内容转入Dubbo‑go服务端的加载配置中,并启动Dubbo‑go服务。
[0036] 本发明的有益效果:
[0037] 本发明基于Dubbo‑go服务端的启动器和启动方法,通过配置读取器预先读取key‑value配置文件,并标定为键值对表key‑value,将配置读取器读取yaml配置文件,并进行将yaml配置文件的占位符,用键值对表key‑value的配置替换,同时将替换后的yaml配置文件,标定为DubboConfig结构体,并将DubboConfig结构体转成yaml配置文件的格式内容,在将格式内容转入Dubbo‑go服务端的加载配置中,并启动Dubbo‑go服务,该启动器不仅支持yaml配置文件和代码配置同步使用,而且支持yaml配置文件带占位符,同时支持自定义的配置中心,适配性更高。附图说明
[0038] 为了更清楚地说明本发明实施例现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039] 图1是现有yaml配置文件场景示意图一;
[0040] 图2是现有yaml配置文件场景示意图二;
[0041] 图3是根据本发明实施例的一种基于Dubbo‑go服务端的启动器的原理示意图一;
[0042] 图4是根据本发明实施例的一种基于Dubbo‑go服务端的启动器的原理示意图二;
[0043] 图5是根据本发明实施例的一种基于Dubbo‑go服务端的启动方法的流程示意图。
[0044] 图中:
[0045] 1、配置读取器;2、键值对表key‑value;3、DubboConfig结构体;4、代码配置api。

具体实施方式

[0047] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0048] 实施例一
[0049] 根据本发明的实施例,提供了一种基于Dubbo‑go服务端的启动器。
[0050] 如图3所示,根据本发明实施例的基于Dubbo‑go服务端的启动器,包括:
[0051] 配置读取器1,用于分别读取key‑value配置文件和读取yaml配置文件,并标定为键值对表key‑value;
[0052] 键值对表key‑value2,用于存储键值数据;
[0053] DubboConfig结构体3,用于适配yaml配置文件的结构体;
[0054] 代码配置api4,用于接入配置中心提供自定义配置结构体服务。
[0055] 另外,所述配置读取器1,包括:存储预先设定key‑value配置文件路径和yaml配置文件路径。
[0056] 借助于上述方案,在使用时,用户要对启动器设置key‑value配置文件的路径和yaml配置文件的路径,路径的设置将保存到配置读取器1中。
[0057] 另外,如果用户有用到配置中心,则需要实现ConfigGetApi接口,将传入从key‑value配置文件中读取的配置。用户要实现如何根据所传的配置从配置中心取配置,然后将配置转成map[string]string数据类型返回给启动器的配置读取器1。
[0058] 此外,如果用户需要进行代码配置,则需要实现ConfigSetApi接口,将传入一个已填充好的DubboConfig类型的结构体,用户可以对此结构进行代码设置。
[0059] 另外,对于上述DubboConfig结构体3来说,如图4所示,DubboConfig中所有的叶子属性,如图4中的Organization、Name、Filter和Register属性的值均为字符串。
[0060] 实施例二
[0061] 根据本发明的实施例,提供了一种基于Dubbo‑go服务端的启动方法。
[0062] 如图5所示,根据本发明实施例的基于Dubbo‑go服务端的启动方法,包括以下步骤:
[0063] 步骤S101,预先分别设定key‑value配置文件路径和yaml配置文件路径,并存储于配置读取器内。
[0064] 步骤S1,配置读取器预先读取key‑value配置文件,并标定为键值对表key‑value;
[0065] 步骤S102,查看ConfigGetApi接口是否有实现ConfigSetApi接口的结构体,其中,包括以下步骤:
[0066] 步骤S103,若ConfigGetApi接口有实现ConfigSetApi接口的结构体,则调用ConfigGetApi接口,获取该结构体,并将该结构体与键值对表key‑value合并;
[0067] 步骤S104,若ConfigGetApi接口无实现ConfigSetApi接口的结构体,则配置读取器读取yaml配置文件。
[0068] 本技术方案,key‑value配置文件,可以是properties、json、yaml文件。同时读取key‑value配置文件,可采用第三方开源工具viper。
[0069] 另外,如果用户有配置中心,就是自己实现这个接口去配置中心取配置。最后,汇总所有的key‑value配置文件,得到键值对表key‑value。
[0070] 步骤S2,配置读取器读取yaml配置文件;
[0071] 步骤S3,进行将yaml配置文件的占位符,用键值对表key‑value的配置替换,其中,key字符为占位符的标识,value字符为替换成的值;
[0072] 步骤S4,将替换后的yaml配置文件,标定为DubboConfig结构体;
[0073] 其中,步骤所述标定为DubboConfig结构体,包括以下步骤:
[0074] 步骤S401,查看ConfigSetApi接口是否有实现ConfigSetApi接口的结构体,其中,包括以下步骤:
[0075] 步骤S402,若ConfigSetApi接口有实现ConfigSetApi接口的结构体,则调用ConfigSetApi接口,获取该结构体与DubboConfig结构体合并,形成新的DubboConfig结构体;
[0076] 借助于上述方案,其中,步骤所述形成新的DubboConfig结构体,包括以下步骤:
[0077] 将新的DubboConfig结构体转成yaml配置文件的格式内容;
[0078] 将格式内容转入Dubbo‑go服务端的加载配置中,并启动Dubbo‑go服务。
[0079] 步骤S403,若ConfigSetApi接口无实现ConfigSetApi接口的结构体,则将DubboConfig结构体转成yaml配置文件的格式内容。
[0080] 步骤S5,将DubboConfig结构体转成yaml配置文件的格式内容;
[0081] 步骤S6,将格式内容转入Dubbo‑go服务端的加载配置中,并启动Dubbo‑go服务。
[0082] 此外,启动器将内容转成本发明提供的DubboConfig结构体,可采用第三方开源工具koanf来转化,然后启动器将查看ConfigSetApi接口是否有设置,如果有将调用该接口对DubboConfig结构体作进一步的设置。用户可以实现该接口作代码配置。
[0083] 最后,启动器用koanf将DubboConfig结构体,再转成yaml配置文件格式的内容,传到Dubbo‑go服务端的加载配置中,启动Dubbo‑go服务。
[0084] 综上所述,借助于本发明的上述技术方案,通过配置读取器预先读取key‑value配置文件,并标定为键值对表key‑value,将配置读取器读取yaml配置文件,并进行将yaml配置文件的占位符,用键值对表key‑value的配置替换,同时将替换后的yaml配置文件,标定为DubboConfig结构体,并将DubboConfig结构体转成yaml配置文件的格式内容,在将格式内容转入Dubbo‑go服务端的加载配置中,并启动Dubbo‑go服务,该启动器不仅支持yaml配置文件和代码配置同步使用,而且支持yaml配置文件带占位符,同时支持自定义的配置中心,适配性更高。
[0085] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,本领域技术人员在考虑说明书及实施例处的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
[0086] 应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
QQ群二维码
意见反馈