CN116610387A - 一种基于动态加载和bitmap实现渠道对接及数据分析方法 - Google Patents
一种基于动态加载和bitmap实现渠道对接及数据分析方法 Download PDFInfo
- Publication number
- CN116610387A CN116610387A CN202310870572.4A CN202310870572A CN116610387A CN 116610387 A CN116610387 A CN 116610387A CN 202310870572 A CN202310870572 A CN 202310870572A CN 116610387 A CN116610387 A CN 116610387A
- Authority
- CN
- China
- Prior art keywords
- touch
- plug
- channel
- sending
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 102
- 238000011068 loading method Methods 0.000 title claims abstract description 54
- 238000007405 data analysis Methods 0.000 title claims abstract description 19
- 238000003032 molecular docking Methods 0.000 title claims abstract description 17
- 230000007246 mechanism Effects 0.000 claims abstract description 22
- 238000004458 analytical method Methods 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 8
- 238000003672 processing method Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000002159 abnormal effect Effects 0.000 claims description 2
- 230000006835 compression Effects 0.000 abstract description 3
- 238000007906 compression Methods 0.000 abstract description 3
- 238000013499 data model Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 20
- 210000001503 joint Anatomy 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
Abstract
本发明公开了一种基于动态加载和bitmap实现渠道对接及数据分析方法,包括以下步骤:步骤S1,对接系统发起触达webhook类渠道触达;步骤S2,通过classloader动态加载机制加载特定触达渠道的插件;步骤S3,通过插件的send方法进行服务商api接口调用;步骤S4,将发送记录和触达回执存放到bitmap文件里;步骤S5,分析系统根据用户id,查找bitmap文件;步骤S6,分析系统根据步骤S5的状态,更新数据库里触达状态,并提供给上层应用查询状态。本方法能够实现对不同的渠达渠道进行触达。使得每个渠道触达行为都可以被记录,利用bitmap数据模型实现超高的压缩率。
Description
技术领域
本发明涉及计算机网络和软件开发技术领域,尤其是涉及一种基于动态加载和bitmap实现销售渠道对接及数据分析方法。
背景技术
营销自动化系统要实现消息触达需要有两个部分,确定需要触达的用户,以及使用何种方式进行触达。传统的方案,在使用何种方式进行触达时,通常通过两种方式来实现,第一种是在系统中内置可以触达的渠道,并且在系统中实现渠道触达接口的实现或者调用;第二种方式是定义外部的回调接口,然后通过代理网关来实现渠道触达接口的实现或者调用(即webhook方式)。
这两种实现方式对于私有化部署或者定制型的项目,存在缺陷,第一种方式不同的客户使用的触达渠道都不同,在产品中集成触达渠道,无法枚举所有的可能,且支持的渠道越多,系统越臃肿复杂,不利于维护。第二种方式,虽然使用代理网关减少了产品的复杂度,但是在每个客户现场都需要做对应的实施工作,每个客户现场的网关都是高度客制化的,不利于版本管理,另外,独立的网关需要独立的服务器资源来支持,整套系统的复杂度变大,不利于维护,安全方面,网关需要做认证,否则可能被攻击,这对于高并发下的性能影响比较大。
这两种方式还有一个最大的问题,触达调用和回执不好记录,如果是通过日志,不同触达渠道的日志可能不同,回执可能也不同,要收集这部分信息需要有单独的系统或者服务进行处理,且日志会因为大分群推送很快爆炸。
发明内容
针对现有技术存在的问题,本发明的目的在于提供一种基于动态加载和bitmap实现销售渠道对接及数据分析方法,通过动态加载插件的方式,实现不同触达渠道的全兼容,可通过动态加载插件的方式进行触达调用,同时,热加载的机制可以减轻运维压力,使得对接新的触达渠道可以无缝对接和使用,无需重新启动系统或进行系统/数据割接工作。另外,通过集中的触达行为记录和异步埋点发送模式,实现对整个触达过程的监控和分析。
为实现上述目的,本发明提供一种基于动态加载和bitmap实现渠道对接及数据分析方法,所述方法的包括以下步骤:
步骤S1,对接系统发起触达webhook类渠道触达;
步骤S2,通过classloader动态加载机制加载特定触达渠道的插件;
步骤S3,通过插件的send方法进行服务商api接口调用;
步骤S4,将上一步的发送记录和触达回执存放到bitmap文件里;
步骤S5,分析系统根据用户id,查找bitmap文件;
步骤S6,分析系统根据步骤S5的状态,更新数据库里触达状态,并提供给上层应用查询状态。
进一步,在步骤S1中,选择触达渠道,触达渠道使用服务商的api来完成触达调用,插件jar包应实现一个抽象类。
进一步,所述触达渠道为邮件触达,所述插件为邮箱触达插件。
进一步,所述触达渠道为短信触达,所述插件为短信插件。
进一步,所述触达渠道为公众号消息触达,所述插件为公众号消息推送插件。
进一步,步骤S1具体实现过程如下:
S1.1.定义插件抽象类,实现插件接口;
S1.2.提供一个消息处理抽象方法,在抽象方法内部实现业务逻辑从而实现触达渠道初始化以及接受触达调用的消息参数并做相应转换,用于将从营销系统传来的消息体解析为标准结构;
S1.3.定义发送函数,用于实现消息的发送,调用消息处理方法,将上一步构建好的触达消息标准结构作为HTTP请求的内容,发送HTTP请求,并根据HTTP请求返回的状态码,确定请求是否执行成功;
S1.4.定义重试函数,用于实现失败重试,重试函数的实现方法如下:重复调用发送函数,若返回的状态码为服务异常,则打印该状态下的响应内容,并且不进行重试,若重试次数已达到,则直接返回发生失败;
S1.5.提供一个返回处理抽象函数,抽象函数内实现逻辑如下:在每次调用发送方法后做返回结果记录,返回结果记录写入日志。
进一步,步骤S1.3中的发送方法就是触达发送的调用,邮件触达类的插件需要实现这个类,并在发送方法中实现邮件服务商api调用;其逻辑及流程如下:
S1.3.1.基于定义的抽象类,定义一个发送邮件插件类,邮件插件类用于继承和重写抽象类的方法;
S1.3.2.发送邮件插件类重写抽象类的发送方法,接收发送邮件所需的参数,所述参数包括目标邮箱地址、邮件标题和邮件正文;重写的发送方法在插件实例被加载后被触达程序调用,以实现触达消息的发送;
S1.3.3.使用Http客户端,向邮件服务商的API接口发送Http Post请求;
S1.3.4.若返回成功,记录为触达成功状态,失败记录为触达失败,超时记录为未知状态;
S1.3.5.通过异步的线程,刷新每个邮件触达调用的状态,如果返回有回执则记录回执状态。
进一步,在步骤S2中,使用类加载机制进行加载,具体实现方式如下:
S2.1.接收插件ID和触达消息对象作为参数;
S2.2.在方法中首先使用自定义类加载器动态加载插件的类,再调用插件加载方法获取插件类对象;
S2.3.然后使用反射,获取发送方法,过程中会返回插件实例和插件的发送方法对象,并将触达消息对象作为参数传入;
S2.4.插件获取方法中,首先尝试从缓存中获取对应的插件方法,缓存的插件方法是上一步使用反射机制获取的实例和方法对象。
进一步,在步骤S3中,通过httpclient调用服务商的api。
进一步,步骤S6,分析系统通过获取每次调用生成的BucketBitmap确认每个用户的推送执行情况,批量更新数据库中的状态。
本发明的有益效果如下:通过定义插件接口,提供应用层调用,同时,触点插件实现接口对应方法,在方法里完成触达渠道逻辑实现或接口调用,最后将插件打包成jar包,放在指定目录通过java的classloader动态加载机制进行插件jar包的加载。当需要对客户进行触达时,即可使用不同的jar包,实现对不同的渠达渠道进行触达。同时,基于热加载机制和统一的接口调用方法定义,使得每个渠道触达行为都可以被记录,利用bitmap数据模型,可以将每次触达的人群及触达的情况通过bitmap来存储,从而实现超高的压缩率,也便于统计分析触达情况,且整个流程都对插件的实现无感。
附图说明
图1示出了根据本发明实施例的基于动态加载和bitmap实现渠道对接及数据分析的方法流程图;
图2为相关类的框架示意图;
图3为分析查询流程图。
具体实施方式
下面将结合附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合图1、图2、图3对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本发明的发明构思在于提供一种基于动态加载和bitmap实现销售渠道对接及数据分析方法,通过定义插件接口,提供应用层调用,同时,触点插件实现接口对应方法,在方法里完成触达渠道逻辑实现或接口调用,最后将插件打包成jar包,放在指定目录通过java的classloader动态加载机制进行插件jar包的加载。当需要对客户进行触达时,即可使用不同的jar包,实现对不同的渠达渠道进行触达。同时,基于热加载机制和统一的接口调用方法定义,使得每个渠道触达行为都可以被记录,利用bitmap数据模型,可以将每次触达的人群及触达的情况通过bitmap来存储,从而实现超高的压缩率,也便于统计分析触达情况,且整个流程都对插件的实现无感。
如图1所示,根据一种基于动态加载和bitmap实现销售渠道对接及数据分析方法,基本流程为:
步骤S1,对接系统发起触达webhook类渠道触达;所述对接系统在本实施例中为营销系统;
步骤S2,通过classloader动态加载机制加载特定触达渠道的插件(比如邮箱触达插件);
步骤S3,通过插件的send方法进行邮件服务商api接口调用;
步骤S4,上一步的发送记录和触达回执存放到bitmap文件里,触达记录bitmap每一位1表示触达成功,0表示触达失败;触达回执bitmap文件里,每一位1表示收到回执,0表示未收到回执;
步骤S5,分析系统根据用户id,查找bitmap文件,例如用户id为1表示bitmap文件里第一位,根据这一位的值是0还是1,确定是否触达成功和是否收到回执;
步骤S6,分析系统根据步骤S5的状态,更新自己数据库里触达状态,并提供给上层应用查询状态。
具体地,在步骤S1中,选择邮件触达渠道,邮件触达渠道使用某个邮件服务商的api来完成邮件触达调用,插件jar包应实现一个抽象类,其实现逻辑如下:
S1.1.定义插件抽象类,实现插件接口;例如本实施例中定义抽象类AbstractPlugin,实现Plugin接口。
S1.2.提供一个消息处理抽象方法,在抽象方法内部实现业务逻辑从而实现触达渠道初始化以及接受触达调用的消息参数并做相应转换,例如使用邮件服务供应商实现触达,需要在方法内部实现初始化邮件服务供应商接口需要的认证信息等,接受从营销系统传来的入参消息,将消息结构体转换成标准结构,标准结构应包含触达对象信息、触达内容以及触达渠道特有的内容(例如邮件类渠道,会有邮件类相关的抄送人、邮件标题、是否密送等特定渠道信息),标准结构体通过映射公共属性触达对象、触达内容字段,非公共属性(如渠道特有内容)以map结构的方式存放,来实现入参消息解析为标准结构。
S1.3.定义发送函数,用于实现消息的发送,该发送函数在抽象类内部只做最基本的实现,调用消息处理方法,将上一步构建好的标准触达消息结构体作为HTTP请求的内容,发送HTTP请求,并根据HTTP请求返回的状态码,确定请求是否执行成功。这个发送函数在实际业务实现过程中,需要抽象类对应的实现类重写相应的发送函数,具体的逻辑S1.3.1~S1.3.5作了详细说明。
S1.4.定义重试函数,用于实现失败重试,该重试函数在抽象类内部只做最基本的实现,重试函数最基本的实现方法如下:重复调用发送函数,重试次数最大为3次。如果返回的状态码为服务异常,则打印该状态下的响应内容,并且不进行重试。如果重试次数已达到,则直接返回发生失败。
S1.5.提供一个返回处理抽象函数,抽象函数内实现逻辑如下:在每次调用发送方法后做返回结果记录(触达结果记录),返回结果记录写入日志;插件在实现时也可以重写该抽象函数,例如除日志外,需要将触达结果以埋点数据的方式上报给埋点系统这类的业务逻辑,可以放在该方法里处理。
其中,步骤S1.3中的发送方法就是触达发送的调用,邮件触达类的插件需要实现发送函数,并在发送方法中实现邮件服务商api调用。其逻辑及流程如下:
S1.3.1.基于S1.1定义的抽象类,定义一个发送邮件插件类,邮件插件类用于继承和重写抽象类的方法;
S1.3.2.发送邮件插件类重写抽象类的发送方法,接收发送邮件所需的参数,所述参数包括目标邮箱地址、邮件标题、邮件正文等;重写的发送方法在插件实例被加载后可以被触达程序调用,以实现触达消息的发送;
S1.3.3.使用Http客户端,向邮件服务商的API接口发送Http Post请求;该步骤实现了邮件触达消息推送给邮件服务商,以便于邮件服务商完成邮件的实际发送;
S1.3.4.若返回成功,记录为触达成功状态,失败记录为触达失败,超时记录为未知状态;该步骤最终记录了整个触达流程最后的结果,以保证触达记录可追溯;
S1.3.5.通过异步的线程,刷新每个邮件触达调用的状态,如果返回有回执则记录回执状态。由于邮件触达都是异步执行的,触达的结果需要通过邮件服务商提供的状态刷新接口来获取,所以需要设置一个异步刷新线程用于获取邮件的最终触达状态。
基于S1.3.1到S1.3.5,实现了邮件插件的定义,描述了邮件插件里重写的发送方法以及发送方法的实现逻辑,并描述了发送方法调用结果的记录和触达状态的异步刷新机制,实际插件在运行的时候,就是实例化后发送方法被营销系统调用,然后执行邮件发送,并记录整个执行结果,最终实现使用插件机制来完成不同触点的消息触达(上文中以邮件触点实现机制举例,也可以通过类似方式实现短信插件、公众号消息推送插件等等)。
相关类图如图2所示,具体地,在步骤S2中,使用类加载机制进行加载,具体实现方式如下:
S2.1.接收插件ID和触达消息对象作为参数;
S2.2.在方法中首先使用自定义类加载器动态加载插件的类,再调用插件加载方法获取插件类对象;
S2.3.然后使用反射,获取发送方法,过程中会返回插件实例和插件的发送方法对象,并将触达消息对象作为参数传入;
S2.4.插件获取方法中,首先尝试从缓存中获取对应的插件方法,缓存的插件方法是上一步使用反射机制获取的实例和方法对象。
通过以上步骤,插件类被热加载,同时在收到推送请求时可以被调用。
具体地,在步骤S3中,通过httpclient调用邮件服务商的api。在步骤S4中,由于插件是通过热加载进来的,且所有的插件实现都是继承自抽象类,可以在抽象类里对每个send操作的对象和执行情况(是否有异常等)进行记录,并按BucketBitmap进行保存。
最后,步骤S6,分析系统通过获取每次调用生成的BucketBitmap确认每个用户的推送执行情况,批量更新数据库中的状态。
步骤S4中,bitmap的使用过程中对于每次影响推送结果的存储过程如下:
S4.1.定义若干种推送状态维度;
S4.2.然后每种状态,对每个触达用户存在两种值:是或否;
S4.3.基于触达的情况,获得数据表格;其中SID表示状态维度,根据分析场景可以增加其他的维度;UID表示用户的编号从0开始,需要uid和用户id对应的mapping关系表;STATUS表示触达状态;
S4.4.用BucketBitMap存SID和用户集合的关系。
bitmap的使用原理和使用方式说明如下:
存储原理如下:
1、当需要存2个用户时,可以先对这两个用户做编号,比如2和4;
2、通过给定长度是10的BitMap,每个bit对应0~9的10个整数,如:
栏位 | ||||||||||
下标 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1. 将2和4这两个用户编号存到对应下标栏位
栏位 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
下标 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
在本实施例中,对于每次影响推送结果的存储,过程如下:
S4.1.定义若干种推送状态维度,本实施例中包括以下5种状态:触达成功、触达失败、回执确认、回执失败、未知;
分别依次取值:1到5;
S4.2.然后每种状态,对每个触达用户存在两种值:是或否;
取值:1或0;
S4.3.基于触达的情况,有类似下面表格的数据:
SID | UID | 状态 |
1 | 1 | 触达成功(1) |
1 | 2 | 触达成功(1) |
1 | 1 | 回执确认(3) |
1 | 2 | 回执失败(4) |
1 | 3 | 触达失败(2) |
以上数据中:SID表示状态维度,根据分析场景可以增加其他的维度,例如触达渠道,表格中的1表示的就是邮件触达渠道的编号;UID表示用户的编号从0开始,构建uid和用户id对应的mapping关系表,使得用户id有唯一的uid编号;STATUS表示触达状态,目前有5种取值上表的数据即某一次推送,每个用户的所有状态;
S4.4.用BucketBitMap存SID和用户集合的关系。
维度类型 | 维度值 | BucketBitMap |
触达状态 | 1 | (1->[1,2]) |
触达状态 | 2 | (2->[3]) |
触达状态 | 3 | (3->[1]) |
触达状态 | 4 | (4->[2]) |
其中,BucketBitMap采用Map<Short,BitMap>结构,其中map的key代表编号、value代表人的集合;
当需要分析哪些用户既触达成功,又回执确认时,将两个map做and操作进行获取:(1->[1,2])and(3->[1])=[1];
其中,用户uid是1的满足触达成功和回执确认,具体的分析查询流程如图3所示。
从存储方法上来说,通过使用bitmap存储用户的编号集合,可以极大的压缩存储成本,以存储一条正常的用户数据为例,如:用户ID是手机号,11位数字,正常是4个byte来存储,也就是32个bit,10个用户就是320个bit,而通过bitmap,这10个用户只需要10个bit就能存储,可以大大压缩存储成本。
以上即触达情况相关的信息记录和处理逻辑,步骤S4和步骤S5基于bitmap即可实现触达情况的记录。
通过jar包动态加载机制,可以无需重启系统动态加载新的触达渠道功能,同时,通过对jar包的管理,可以提升产品支持的触达渠道在项目上的复用,另外,基于动态加载机制实现的插件,可以统一进行触达记录的存储,通过bitmap可以将触达记录大量压缩,同时不影响分析能力。
营销系统在触达渠道对接上使用jar包动态加载机制来实现webhook回调,同时将触达记录使用bitmap方式保存和分析。
本发明的技术重点在于营销系统触达渠道使用插件方式继承,同时插件使用jar包动态加载的方式实现。以及营销系统触达记录通过bitmap的方式存储和分析使用。
本发明的方法通过动态加载插件的方式,实现不同触达渠道的全兼容,本文给出了邮件触达渠道的对接过程,使用类似的方式,可以实现短信触达渠道、Push触达渠道、公众号消息推送等。通过动态热加载插件的方式进行触达调用,可以减轻运维压力,使得对接新的触达渠道可以无缝对接和使用,无需重新启动系统或进行系统/数据割接工作。另外,通过集中的触达行为记录和异步埋点发送模式,实现对整个触达过程的监控和分析。
当需要实现短信触达渠道的时候,一种方式是实现插件抽象类,在发送方法里,调用短信服务商的API接口。此外,对于短信服务,本发明还设置另一种方式为短信服务通过Kafka消息进行触达消息推送,这类触达渠道,在实现发送方法时,可以通过实现一个kafka生产者来发送消息;同时消息回执的异步线程,也是通过实现一个kafka消费者来订阅触达状态回执。由此实现特殊情况下的短信触达流程。
将以上两种方式的插件部署到营销系统的指定目录,通过热加载机制即被扫描同时完成实例初始化,通过在营销系统里增加触达渠道配置并选择对应的触达实现,由此实现两种不同类型的短信触达渠道对接。这样可以实现对于特殊情况下短信触达情况下提供多种渠道选择,增加触达成功率。
本发明流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为表示包括一个或多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,可以实现在任何计算机刻度介质中,以供指令执行系统、装置或设备,所述计算机可读介质可以是任何包含存储、通信、传播或传输程序以供执行系统、装置或设备使用。包括只读存储器、磁盘或光盘等。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,本领域的技术人员可以在不产生矛盾的情况下,将本说明书中描述的不同实施例或示例以及其中的特征进行结合或组合。
上述内容虽然已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型等更新操作。
Claims (10)
1.一种基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,所述方法的包括以下步骤:
步骤S1,对接系统发起触达webhook类渠道触达;
步骤S2,通过classloader动态加载机制加载特定触达渠道的插件;
步骤S3,通过插件的send方法进行服务商api接口调用;
步骤S4,将发送记录和触达回执存放到bitmap文件里;
步骤S5,分析系统根据用户id,查找bitmap文件;
步骤S6,分析系统根据步骤S5的状态,更新数据库里触达状态,并提供给上层应用查询状态。
2.根据权利要求1所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,在步骤S1中,选择触达渠道,触达渠道使用服务商的api来完成触达调用,插件jar包应实现一个抽象类。
3.根据权利要求1或2任一项所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,所述触达渠道为邮件触达,所述插件为邮箱触达插件。
4.根据权利要求1或2任一项所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,所述触达渠道为短信触达,所述插件为短信插件。
5.根据权利要求1或2任一项所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,所述触达渠道为公众号消息触达,所述插件为公众号消息推送插件。
6.根据权利要求3-5任一项所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,步骤S1具体实现过程如下:
S1.1.定义插件抽象类,实现插件接口;
S1.2.提供一个消息处理抽象方法,在抽象方法内部实现业务逻辑从而实现触达渠道初始化以及接受触达调用的消息参数并做相应转换,用于将从营销系统传来的消息体解析为标准结构;
S1.3.定义发送函数,用于实现消息的发送,调用消息处理方法,将上一步构建好的触达消息标准结构作为HTTP请求的内容,发送HTTP请求,并根据HTTP请求返回的状态码,确定请求是否执行成功;
S1.4.定义重试函数,用于实现失败重试,重试函数的实现方法如下:重复调用发送函数,若返回的状态码为服务异常,则打印该状态下的响应内容,并且不进行重试,若重试次数已达到,则直接返回发生失败;
S1.5.提供一个返回处理抽象函数,抽象函数内实现逻辑如下:在每次调用发送方法后做返回结果记录,返回结果记录写入日志。
7.根据权利要求3所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,其中,步骤S1.3中的发送方法就是触达发送的调用,邮件触达类的插件需要实现这个类,并在发送方法中实现邮件服务商api调用;其逻辑及流程如下:
S1.3.1.基于定义的抽象类,定义一个发送邮件插件类,邮件插件类用于继承和重写抽象类的方法;
S1.3.2.发送邮件插件类重写抽象类的发送方法,接收发送邮件所需的参数,所述参数包括目标邮箱地址、邮件标题和邮件正文;重写的发送方法在插件实例被加载后被触达程序调用,以实现触达消息的发送;
S1.3.3.使用Http客户端,向邮件服务商的API接口发送Http Post请求;
S1.3.4.若返回成功,记录为触达成功状态,失败记录为触达失败,超时记录为未知状态;
S1.3.5.通过异步的线程,刷新每个邮件触达调用的状态,如果返回有回执则记录回执状态。
8.根据权利要求1所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,在步骤S2中,使用类加载机制进行加载,具体实现方式如下:
S2.1.接收插件ID和触达消息对象作为参数;
S2.2.在方法中首先使用自定义类加载器动态加载插件的类,再调用插件加载方法获取插件类对象;
S2.3.然后使用反射,获取发送方法,过程中会返回插件实例和插件的发送方法对象,并将触达消息对象作为参数传入;
S2.4.插件获取方法中,首先尝试从缓存中获取对应的插件方法,缓存的插件方法是上一步使用反射机制获取的实例和方法对象。
9.根据权利要求1所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,在步骤S3中,通过httpclient调用服务商的api。
10.根据权利要求1所述的基于动态加载和bitmap实现渠道对接及数据分析方法,其特征在于,步骤S6,分析系统通过获取每次调用生成的BucketBitmap确认每个用户的推送执行情况,批量更新数据库中的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310870572.4A CN116610387B (zh) | 2023-07-17 | 2023-07-17 | 一种基于动态加载和bitmap实现渠道对接及数据分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310870572.4A CN116610387B (zh) | 2023-07-17 | 2023-07-17 | 一种基于动态加载和bitmap实现渠道对接及数据分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116610387A true CN116610387A (zh) | 2023-08-18 |
CN116610387B CN116610387B (zh) | 2023-10-03 |
Family
ID=87683928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310870572.4A Active CN116610387B (zh) | 2023-07-17 | 2023-07-17 | 一种基于动态加载和bitmap实现渠道对接及数据分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116610387B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007052959A1 (en) * | 2005-11-03 | 2007-05-10 | Ktfreetel Co., Ltd. | Open mobile business supporting system and method |
CN104317624A (zh) * | 2014-11-04 | 2015-01-28 | 南京联创科技集团股份有限公司 | 基于插件处理的数据装配方法 |
CN110009463A (zh) * | 2018-11-20 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据通信处理系统及方法 |
CN110109660A (zh) * | 2019-05-07 | 2019-08-09 | 杭州艾塔科技有限公司 | 一种监测短信触达效果的系统及方法 |
CN110245178A (zh) * | 2019-07-15 | 2019-09-17 | 上海矩云信息技术有限公司 | 营销自动化管理平台系统及其管理方法 |
CN112311868A (zh) * | 2020-10-27 | 2021-02-02 | 上海淇馥信息技术有限公司 | 消息触达方法、装置和电子设备 |
CN113126987A (zh) * | 2021-04-13 | 2021-07-16 | 浪潮金融信息技术有限公司 | 一种改进h5应用与设备的交互方法及存储介质 |
CN113347226A (zh) * | 2021-04-25 | 2021-09-03 | 北京淇瑀信息科技有限公司 | 一种触达渠道路由方法、装置及电子设备 |
WO2021196597A1 (zh) * | 2020-04-02 | 2021-10-07 | 深圳创维-Rgb电子有限公司 | 业务插件加载实现方法、装置和终端设备 |
US20210382731A1 (en) * | 2020-06-07 | 2021-12-09 | Asaf Ben Natan | Method for componentization of enterprise applications using plugins |
CN114338793A (zh) * | 2021-12-29 | 2022-04-12 | 中电金信软件有限公司 | 消息推送方法、装置、电子设备及可读存储介质 |
CN115129348A (zh) * | 2022-07-04 | 2022-09-30 | 腾讯科技(深圳)有限公司 | 应用程序的资源更新方法、装置、设备及可读存储介质 |
CN115562658A (zh) * | 2022-10-26 | 2023-01-03 | 北京沃东天骏信息技术有限公司 | 多渠道的模块实例扩展方法、装置和电子设备 |
CN115964061A (zh) * | 2021-10-12 | 2023-04-14 | 腾讯科技(深圳)有限公司 | 插件更新方法、装置、电子设备和计算机可读存储介质 |
CN116016628A (zh) * | 2022-12-09 | 2023-04-25 | 中国电力科学研究院有限公司 | 一种api网关埋点分析方法及装置 |
CN116028321A (zh) * | 2022-12-26 | 2023-04-28 | 四川新网银行股份有限公司 | 一种埋点数据采集方法、系统及存储介质 |
-
2023
- 2023-07-17 CN CN202310870572.4A patent/CN116610387B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007052959A1 (en) * | 2005-11-03 | 2007-05-10 | Ktfreetel Co., Ltd. | Open mobile business supporting system and method |
CN104317624A (zh) * | 2014-11-04 | 2015-01-28 | 南京联创科技集团股份有限公司 | 基于插件处理的数据装配方法 |
CN110009463A (zh) * | 2018-11-20 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据通信处理系统及方法 |
CN110109660A (zh) * | 2019-05-07 | 2019-08-09 | 杭州艾塔科技有限公司 | 一种监测短信触达效果的系统及方法 |
CN110245178A (zh) * | 2019-07-15 | 2019-09-17 | 上海矩云信息技术有限公司 | 营销自动化管理平台系统及其管理方法 |
WO2021196597A1 (zh) * | 2020-04-02 | 2021-10-07 | 深圳创维-Rgb电子有限公司 | 业务插件加载实现方法、装置和终端设备 |
US20210382731A1 (en) * | 2020-06-07 | 2021-12-09 | Asaf Ben Natan | Method for componentization of enterprise applications using plugins |
CN112311868A (zh) * | 2020-10-27 | 2021-02-02 | 上海淇馥信息技术有限公司 | 消息触达方法、装置和电子设备 |
CN113126987A (zh) * | 2021-04-13 | 2021-07-16 | 浪潮金融信息技术有限公司 | 一种改进h5应用与设备的交互方法及存储介质 |
CN113347226A (zh) * | 2021-04-25 | 2021-09-03 | 北京淇瑀信息科技有限公司 | 一种触达渠道路由方法、装置及电子设备 |
CN115964061A (zh) * | 2021-10-12 | 2023-04-14 | 腾讯科技(深圳)有限公司 | 插件更新方法、装置、电子设备和计算机可读存储介质 |
CN114338793A (zh) * | 2021-12-29 | 2022-04-12 | 中电金信软件有限公司 | 消息推送方法、装置、电子设备及可读存储介质 |
CN115129348A (zh) * | 2022-07-04 | 2022-09-30 | 腾讯科技(深圳)有限公司 | 应用程序的资源更新方法、装置、设备及可读存储介质 |
CN115562658A (zh) * | 2022-10-26 | 2023-01-03 | 北京沃东天骏信息技术有限公司 | 多渠道的模块实例扩展方法、装置和电子设备 |
CN116016628A (zh) * | 2022-12-09 | 2023-04-25 | 中国电力科学研究院有限公司 | 一种api网关埋点分析方法及装置 |
CN116028321A (zh) * | 2022-12-26 | 2023-04-28 | 四川新网银行股份有限公司 | 一种埋点数据采集方法、系统及存储介质 |
Non-Patent Citations (4)
Title |
---|
MATTHEW LI: "Cluster Usage Policy Enforcement Using Slurm Plugins and an HTTP API", PEARC \'20: PRACTICE AND EXPERIENCE IN ADVANCED RESEARCH COMPUTING * |
王拓;杨立鹏;: "Java类动态加载机制在铁路互联网售票中的设计与实现", 铁路计算机应用, no. 11 * |
许宇华;黄倩云;: "远程电力服务渠道的统一运营管理研究", 自动化与仪器仪表, no. 01 * |
边延风;陈晔晖;: "移动互联网时代电子渠道建设及运营优化方案", 电信技术, no. 10 * |
Also Published As
Publication number | Publication date |
---|---|
CN116610387B (zh) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7920852B2 (en) | Compression of data transmitted between server and mobile device | |
US8977652B2 (en) | Client-side API framework for uniform resource identifier (URI) manipulations | |
CN102970284B (zh) | 用户信息处理方法和服务器 | |
CN106375458B (zh) | 服务调用系统、方法及装置 | |
US20030164850A1 (en) | Recording user interaction with an application | |
CN110032392B (zh) | 服务治理方法及装置、存储介质和电子设备 | |
CN101167327A (zh) | 通过移动应用程序访问多个数据源的系统和方法 | |
EP1025507A1 (en) | Combined internet and data access system | |
US20020174174A1 (en) | System and method for monitoring execution time of a transaction | |
CN113687974B (zh) | 客户端日志处理方法、装置及计算机设备 | |
CN105337787A (zh) | 一种多服务器监控方法、装置和系统 | |
CN109547524B (zh) | 基于物联网的用户行为存储方法、装置、设备及存储介质 | |
CN100512158C (zh) | 网络测量体系结构及其实现测量的方法 | |
US8326913B2 (en) | Method and system for service contract discovery | |
US20060259523A1 (en) | System and method of synchronization of internal data cache with wireless device application data repositories | |
CN105095367A (zh) | 一种客户端数据的采集方法和装置 | |
CN112615759A (zh) | 全链路压测组件、全链路压测方法及装置 | |
US8391845B2 (en) | System and method of presenting entities of standard applications in wireless devices | |
CN116610387B (zh) | 一种基于动态加载和bitmap实现渠道对接及数据分析方法 | |
CN115269228A (zh) | 一种数据适配传输方法、装置、设备和介质 | |
CN115426375A (zh) | 一种数据处理方法和数据处理系统 | |
CN109981738B (zh) | 一种适用于窄带物联网应用的云服务器 | |
CN112948393A (zh) | 一种Web应用程序业务数据处理方法、设备及介质 | |
CN104980329A (zh) | 通讯录管理方法及装置、移动代理服务器 | |
CN111124542A (zh) | 一种配置信息管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |