一种在SAAS系统上应用流式计算的方法和装置与流程

文档序号:18832842发布日期:2019-10-09 04:02阅读:150来源:国知局
一种在SAAS系统上应用流式计算的方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种在saas系统上应用流式计算的方法和装置。



背景技术:

在电子商务领域,saas化的web应用发展得日新月异,应用都采用多租户的方式来进行开发上线部署。流式计算是大数据量下实时分析、实时监控数据必不可少的手段。为了能实时查看到saas应用下各项数据报表、实时监控到各业务系统的运行情况,saas化的应用对接到流式计算平台的也迫在眉睫了。

流式计算,为了不和业务系统紧密耦合在一起,计算的任务都会单独设计、单独开发、单独部署。常见的业务模式为:业务系统操作业务数据库,采集程序实时监控业务数据库的binlog,将数据库的binlog按一定的格式上传到消息队列,流式计算框架批量读取并处理消息队列的内容,实时分析处理业务数据。

目前一般的saas方案中落地到数据库中的数据的隔离方式一般为:数据库库隔离、数据库表隔离、数据库表不隔离而按租户字段来隔离这3种。

在流式计算的框架下,为了使得同一个应用的不同租户的监控数据能够隔离开,目前一般采用的策略有两种:

1)方案1:同一种表业务的所有消息都往一个固定topic上去发,消费者按其业务规则从所有的消息中筛选出关心的业务数据来消费。

2)方案2:将同一个表业务下不同租户产生的业务数据按不同的消息主体从业务上区分开,也就是同一种表业务,对应到不同租户端,发送的消息主体(消息topic)是完全分开的。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

1)方案1的缺点在于数据的私密性太差,业务上不能接受。方案存在部分租户的业务数据在未授权、未允许却被消费端获得。此方案一般只应用在内部私有系统,对隐私性没有太多考虑的业务可以采用。

2)方案2,采用多个消息主体(消息topic)的实现方案虽然业务上是可行的,但是真正执行起来太重,实际落地的时候业务操作会比较麻烦。因为如果所有消息都采用统一配置,后续部分消息主体要扩容的话,要针对部分消息单独运营维护,因为消息topic的数量比较多,操作起来会相对比较麻烦;如果将消息配置按租户分开处理、特别对待,考虑到部分租户的业务会相对较多,但是在消息创建的时候,又很难做到精确预估不同租户的消息的量,此处就需要按租户的预估业务量做特殊逻辑,等于在流式计算发送消息的逻辑中,需要耦合上述的这些创建消息主体的流程,业务复杂度会比较高。

3)方案2的另外一个缺点是,消费端如果想要消费的数据条件不完全固定的时候,如用户想要消费租户id中包含有“中国”关键字的所有的租户的数据,程序实现上相当困难,基本不能实现。



技术实现要素:

有鉴于此,本发明实施例提供一种在saas系统上应用流式计算的方法和装置,能够应用在saas系统应用上的流式计算,且实现接入简单、使用方便、后期运营维护可靠安全的目的。

为实现上述目的,根据本发明实施例的一个方面,提供了一种在saas系统上应用流式计算的方法,包括监听数据库的从库,以解析所述从库的日志,获得数据库的变更信息,为所述变更信息添加对应的租户id标签;将包括有租户id标签的变更信息以预设的消息格式保存至消息服务器中;接收消费请求,对所述消费请求进行鉴权,以获得授权的租户id条件列表;下发所述租户id条件列表,以使用户根据所述租户id条件列表从消息服务器中获得相应的消息信息。

可选地,所述租户id标签为根据业务类型定义的字段或者勾选数据库中的任一字段作为所述租户id标签。

可选地,对所述消费请求进行鉴权,以获得授权的租户id条件列表,包括:

根据所述消费请求,获取请求消费的租户id;

确定访问所述租户的权限,获得授权的租户id条件列表;其中,所述租户id条件列表中存储有租户id与访问权限的映射关系。

可选地,使用户根据所述租户id条件列表从消息服务器中获得相应的消息信息,包括:

消息服务器接收用户的消费请求,获得消费的消息主体;

消息服务器根据接收的租户id条件列表,匹配符合所述消息主体的消费信息,以返回所述消费信息至所述用户。

可选地,所述的消息格式包括两段:第一段是消息头,包括:消息类型和消息的租户id,其中消息类型定义为带租户id的消息或不带租户id的消息;第二段是消息体。

另外,根据本发明实施例的一个方面,提供了一种在saas系统上应用流式计算的装置,包括:贴标签模块,用于监听数据库的从库,以解析所述从库的日志,获得数据库的变更信息;为所述变更信息添加对应的租户id标签;将包括有租户id标签的变更信息以预设的消息格式保存至消息服务器中;接收模块,用于接收消费请求;获取模块,用于对所述消费请求进行鉴权,以获得授权的租户id条件列表;发送模块,用于下发所述租户id条件列表,以使用户根据所述租户id条件列表从消息服务器中获得相应的消息信息。

可选地,所述租户id标签为根据业务类型定义的字段或者勾选数据库中的任一字段作为所述租户id标签。

可选地,所述获取模块对所述消费请求进行鉴权,以获得授权的租户id条件列表,包括:

根据所述消费请求,获取请求消费的租户id;

确定访问所述租户的权限,获得授权的租户id条件列表;其中,所述租户id条件列表中存储有租户id与访问权限的映射关系。

可选地,所述发送模块以使用户根据所述租户id条件列表从消息服务器中获得相应的消息信息,包括:

消息服务器接收用户的消费请求,获得消费的消息主体;

消息服务器根据接收的租户id条件列表,匹配符合所述消息主体的消费信息,以返回所述消费信息至所述用户。

可选地,所述的消息格式包括两段:第一段是消息头,包括:消息类型和消息的租户id,其中消息类型定义为带租户id的消息或不带租户id的消息;第二段是消息体。

根据本发明实施例的另一个方面,还提供了一种电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一在saas系统上应用流式计算的实施例所述的方法。

根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一在saas系统上应用流式计算的实施例所述的方法。

上述发明中的一个实施例具有如下优点或有益效果:在saas化的应用下,提出一种数据库层的标准设计,定义了一种saas化流式计算框架下消息保存的格式,提供了一种按租户标签发送消息、消费鉴权按租户信息和一定的业务规则精确或者模糊匹配消费数据的操作规范,此规范可以应用在流式计算领域,在满足流式计算监控业务的前提下,达到接入简单、使用方便、后期运营维护可靠安全的目的。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的在saas系统上应用流式计算的方法的主要流程的示意图;

图2是根据本发明实施例的在saas系统上应用流式计算的装置的主要模块的示意图;

图3是根据本发明可参考实施例的在saas系统上应用流式计算的装置的主要模块的示意图;

图4是本发明实施例可以应用于其中的示例性系统架构图;

图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明实施例的在saas系统上应用流式计算的方法,如图1所示,所述在saas系统上应用流式计算的方法包括:

步骤s101,接收消费请求。

在实施例中,本发明所述的在saas系统上应用流式计算的方法可以应用于saas系统上,而所述的saas是software-as-a-service(软件即服务)的简称。它是一种通过internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。

较佳地,用户在消费消息的时候,提交消费token类的数据到流式计算的服务端。

步骤s102,对所述消费请求进行鉴权,以获得授权的租户id条件列表。具体的实施过程包括:

根据所述消费请求,获取请求消费的租户id。然后,确定访问所述租户的权限,获得授权的租户id条件列表。其中,所述租户id条件列表中存储有租户id与访问权限的映射关系。

进一步地,用户在流式计算中申请某个应用的某个租户的数据的访问权限时,申请的类型可以定义为全部消费、单个租户的精确消费、租户列表的精确消费、单个租户模糊消费、租户列表模糊消费等等。例如:假设存在2个租户id,分别为:中国aaa公司、中国bbb公司,其中精确消费的业务含义为:假定用户期望访问租户id中完全匹配“中国aaa公司”的所有数据,即为精确消费;模糊消费的含义为:假定用户期望访问租户id中含有“中国”或者“aaa”字样的所有数据,即为模糊消费。另外,所述的全部消费是指需要消费所有数据。

步骤s103,下发所述租户id条件列表,以使用户根据所述租户id条件列表从消息服务器中获得相应的消息信息。

在实施例中,用户可以接收到所述租户id条件列表,然后向消息服务器发送消费请求,以获得相应的消息信息。进一步地,消息服务器接收用户的消费请求,获得消费的消息主体。然后消息服务器根据接收的租户id条件列表,匹配符合所述消息主体的消费信息,以返回所述消费信息至所述用户。更进一步地,根据接收的租户id条件列表,匹配符合所述消息主体的消费信息,具体的实施过程包括:

可以根据消息的租户id条件列表,如果消费类型为全部消费,则不过滤直接返回消息信息。如果消费类型为按租户id单个精确消费,则进行单个精确匹配,然后返回消息信息。如果消费类型为按租户id列表的精确消费,则逐一精确匹配。如果消费类型为单个租户模糊消费,则单个模糊匹配。如果消费类型为租户列表模糊消费,则逐一模糊匹配。优选地,模糊匹配还可以扩展为类似于正则表达式和条件表达式的情况,如and(‘aaa’,‘bbb’),含义为模糊匹配应该同时包含aaa和bbb的数据。

较佳地,用户将需要消费的消息主体、消息的租户id条件列表提交给消息的服务端,消息的服务端按消息主体、消息的租户id的条件列表等条件拉取消息返回给用户。其中,所述的消息主体为消息的具体内容。

优选地,用户消费成功或失败后可以通知消息的服务端。其中,所述的消费成功可以表现为消费过程中无异常,且业务数据正常。

作为本发明的另一个实施例,所述在saas系统上应用流式计算的方法还可以监听数据库的从库,以解析所述从库的日志,获得数据库的变更信息。其中,较佳地可以解析所述从库的binlog日志,而binlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个delete)的所有语句。

之后,为所述变更信息添加对应的租户id标签,以将包括有租户id标签的变更信息以预设的消息格式保存至消息服务器中。其中,较佳地消息格式分为两段:第一段是消息头,第二段是消息体。其中,消息头包含两部分:消息类型(msgtype)、消息的租户id,其中消息类型可以定义为2种:带租户id的消息、不带租户id的消息。

因此,可以通过上述过程将数据库表都新增一个租户id标签,即增加了一个租户id的字段,字段名各个业务表可以不一样,此处为了后续表达方便,统一命名为tenantid。业务新增、修改、删除、查询的时候,sql语句中均需要带上此租户id的信息。

还值得说明的是,所述租户id标签为根据业务类型定义的字段或者勾选数据库中的任一字段作为所述租户id标签。其中,针对部分业务的数据库可能设计的不太规范,可能存在字段名不是tenantid,是业务系统自定义的字段的情况,在接入的时候,可以让用户手动选择要接入的表的某一个字段,来作为实际的租户id的字段(字段名不严格要求是tenantid),接入系统内部识别、隐射用户勾选的数据库字段作为租户id。

图2是根据本发明实施例的在saas系统上应用流式计算的装置,如图2所示,所述在saas系统上应用流式计算的装置200包括接收模块201、获取模块202以及发送模块203。其中,接收模块201接收消费请求。之后,获取模块202对所述消费请求进行鉴权,以获得授权的租户id条件列表。而发送模块203下发所述租户id条件列表,以使用户根据所述租户id条件列表从消息服务器中获得相应的消息信息。

作为一个较佳地实施例,图3是根据本发明可参考实施例的在saas系统上应用流式计算的装置,如图3所示,所述在saas系统上应用流式计算的装置300包括接收模块301、获取模块302、发送模块303以及贴标签模块304。其中,接收模块301接收消费请求。之后,获取模块302对所述消费请求进行鉴权,以获得授权的租户id条件列表。而发送模块303下发所述租户id条件列表,以使用户根据所述租户id条件列表从消息服务器中获得相应的消息信息。另外,贴标签模块304可以监听数据库的从库,以解析所述从库的日志,获得数据库的变更信息;为所述变更信息添加对应的租户id标签;将包括有租户id标签的变更信息以预设的消息格式保存至消息服务器中。

需要说明的是,在本发明所述在saas系统上应用流式计算的装置的具体实施内容,在上面所述在saas系统上应用流式计算的方法中已经详细说明了,故在此重复内容不再说明。

图4示出了可以应用本发明实施例的在saas系统上应用流式计算的方法或在saas系统上应用流式计算的装置的示例性系统架构400。或者图4示出了可以应用本发明实施例的在saas系统上应用流式计算的方法或在saas系统上应用流式计算的装置的示例性系统架构400。

如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。

终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。

需要说明的是,本发明实施例所提供的在saas系统上应用流式计算的方法一般由服务器405执行,相应地,在saas系统上应用流式计算的装置一般设置于服务器405中。

应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram503中,还存储有系统500操作所需的各种程序和数据。cpu501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。

以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(cpu)501执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、获取模块和发送模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收消费请求,对所述消费请求进行鉴权,以获得授权的租户id条件列表;下发所述租户id条件列表,以使用户根据所述租户id条件列表从消息服务器中获得相应的消息信息。

根据本发明实施例的技术方案,能够应用在saas系统应用上的流式计算,且实现接入简单、使用方便、后期运营维护可靠安全的目的。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1