用于管理应用的服务的方法、装置、设备和介质与流程
未命名
08-15
阅读:111
评论:0
1.本公开的示例性实现方式总体涉及应用管理,特别地涉及用于管理应用的服务的方法、装置、设备和计算机可读存储介质。
背景技术:
2.随着互联网技术的快速发展,越来越多的应用采用微服务技术。应用中的多个服务之间可能会涉及复杂的通信,在应用开发和/或测试过程中可以由不同人员来开发不同的微服务。为了提高应用开发和/或测试的效率,可以在多环境场景下开发应用。此时,不同人员可以分别在不同环境中开发和/或测试各自的微服务。当不同环境涉及共享数据库时,则可能会丢失不同环境的环境信息。此时,期望以更为有效的方式保持环境信息以便提高管理应用中的服务的效率,进而以更为有效的方式完成应用开发和测试。
技术实现要素:
3.在本公开的第一方面,提供了一种用于管理应用的服务的方法。在此,应用至少包括第一服务和第一服务下游的第二服务,第一服务和第二服务在相同的环境下被执行。在该方法中,响应于接收到来自第一服务的、用于修改数据库系统中的数据项的第一访问请求,获取第一服务的环境信息,环境信息描述第一服务的执行环境。基于环境信息和第一访问请求,生成第二访问请求。在数据库系统的日志中存储第二访问请求,以用于由第二服务从日志中提取环境信息。
4.在本公开的第二方面,提供了一种用于管理应用的服务的装置。在此,应用至少包括第一服务和第一服务下游的第二服务,第一服务和第二服务在相同的环境下被执行。该装置包括:获取模块,被配置用于响应于接收到来自第一服务的用于修改数据库系统中的数据项的访问请求,获取第一服务的环境信息,环境信息描述第一服务的执行环境;生成模块,被配置用于基于环境信息和第一访问请求,生成第二访问请求;以及存储模块,被配置用于在数据库系统的日志中存储第二访问请求,以用于由第二服务从日志中提取环境信息。
5.在本公开的第三方面,提供了一种电子设备。该电子设备包括:至少一个处理单元;以及至少一个存储器,至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令,指令在由至少一个处理单元执行时使电子设备执行根据本公开第一方面的方法。
6.在本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时使处理器实现根据本公开第一方面的方法。
7.应当理解,本内容部分中所描述的内容并非旨在限定本公开的实现方式的关键特征或重要特征,也不用于限制本公开的范围。本公开的其他特征将通过以下的描述而变得容易理解。
附图说明
8.在下文中,结合附图并参考以下详细说明,本公开各实现方式的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
9.图1示出了其中可以应用根据本公开的一个示例性实现方式的环境的框图;
10.图2示出了根据本公开的一些实现方式的用于管理应用的服务的框图;
11.图3示出了根据本公开的一些实现方式的不同类型的访问请求的框图;
12.图4示出了根据本公开的一些实现方式的向以结构化查询语言表示的语句中插入环境信息的框图;
13.图5示出了根据本公开的一些实现方式的利用数据库系统的日志消息来向第二服务通知环境信息的框图;
14.图6示出了根据本公开的一些实现方式的提取并利用环境信息的框图;
15.图7示出了根据本公开的一些实现方式的在多环境场景下管理应用中的服务的框图;
16.图8示出了根据本公开的一些实现方式的用于管理应用的服务的方法的流程图;
17.图9示出了根据本公开的一些实现方式的用于管理应用的服务的装置的框图;以及
18.图10示出了能够实施本公开的多个实现方式的设备的框图。
具体实施方式
19.下面将参照附图更详细地描述本公开的实现方式。虽然附图中示出了本公开的某些实现方式,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实现方式,相反,提供这些实现方式是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实现方式仅用于示例性作用,并非用于限制本公开的保护范围。
20.在本公开的实现方式的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实现方式”或“该实现方式”应当理解为“至少一个实现方式”。术语“一些实现方式”应当理解为“至少一些实现方式”。下文还可能包括其他明确的和隐含的定义。如本文中所使用的,术语“模型”可以表示各个数据之间的关联关系。例如,可以基于目前已知的和/或将在未来开发的多种技术方案来获取上述关联关系。
21.可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。
22.可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当根据相关法律法规通过适当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
23.例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存
储介质等软件或硬件提供个人信息。
24.作为一种可选的但非限制性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式,例如可以是弹出窗口的方式,弹出窗口中可以以文字的方式呈现提示信息。此外,弹出窗口中还可以承载供用户选择“同意”或“不同意”向电子设备提供个人信息的选择控件。
25.可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其他满足相关法律法规的方式也可应用于本公开的实现方式中。
26.在此使用的术语“响应于”表示相应的事件发生或者条件得以满足的状态。将会理解,响应于该事件或者条件而被执行的后续动作的执行时机,与该事件发生或者条件成立的时间,二者之间未必是强关联的。例如,在某些情况下,后续动作可在事件发生或者条件成立时立即被执行;而在另一些情况下,后续动作可在事件发生或者条件成立后经过一段时间才被执行。
27.示例环境
28.随着互联网技术的快速发展,越来越多地基于微服务技术来开发应用。微服务之间的通信通常较为非常复杂,如果单个微服务存在并行开发需求而进行频繁发版,会影响所有相关服务的调用。因此为了提高依赖服务的稳定性和协作式开发和/或测试的效率,目前越来越多的应用系系统支持多环境的能力。
29.为了提高应用开发和/或测试的效率,可以在多环境场景下开发应用。参见图1描述多环境场景的概要,该图1示出了其中可以应用根据本公开的一个示例性实现方式的环境的框图100。如图1所示,可以在多环境场景下开发应用,此时可以存在基础环境110,进一步可以存在不同于基础环境110的其他环境,例如,泳道环境120和130。在应用实际使用多环境的过程中,多个环境中的各种配置和数据并不具备完全隔离的能力,而是可能会存在泳道环境120和130与基准环境110共享数据库系统的情况。
30.通常,各个服务可以通过订阅数据库系统的日志消息来确保数据一致性的能力。例如,应用的上游服务可能会修改数据库系统中的数据项,此时应用的下游服务可以订阅数据库系统的日志消息(例如,binlog消息),由此确保可以获得数据库系统中的最新数据。在多环境场景下,上游服务和下游服务应当处于相同的环境,然而在共享数据库系统的情况下,订阅过程可能会丢失上游服务的环境信息。
31.如图1所示,应用可以包括第一服务150和第二服务160。基础数据库114可以在泳道环境120和基础环境110之间共享。例如,泳道环境120中的参与者122可以访问并修改基础数据库114,并且基础环境110中的参与者112也可以访问并修改基础数据库114。此时,可以在日志116中记录基础数据库114中的变化。如框118所示,在相关技术方案中根据数据库系统来区分环境,并且发送日志消息。如框140所示,下游的第二服务160可以使用该日志消息。然而,由于日志消息并不能区分泳道环境120和基础环境110,这导致丢失环境信息,并且下游的第二服务160并不能区分泳道环境120和基础环境110。此时,日志消息仅能被基础环境110下的消费者142和消费者144所使用,并且消费者124并不消费日志消息。
32.在另一相关技术方案中,可以在每个环境中单独部署数据库系统。例如,可以在泳道环境130中部署泳道数据库134,并且参与者132针对泳道数据库134的修改将会被记录至泳道数据库134的日志136中。此时,在框118处可以基于不同的数据库系统来区分不同的环
境(例如,基础环境110和泳道环境130),并且泳道环境130中的消费者138可以消费相应的消息(也即,针对泳道数据库134的日志消息)。然而,在各个泳道环境中单独部署数据库系统可能会造成大量资源浪费,这导致需要维护多个数据库系统,并且大大提高了开发和/或测试过程中的各种成本。此时,期望以更为有效的方式管理应用中的服务,进而以更为有效的方式完成应用开发和测试。
33.管理服务的概要
34.为了至少部分地解决现有技术中的不足,根据本公开的一个示例性实现方式,提出了一种用于管理应用的服务的方法。概括而言,在多环境场景下,如果检测到数据库系统中的数据项被修改,可以获取服务的相关环境信息(例如,用于表示特定环境的环境标识符),并且经由数据库系统的日志来在上游服务和下游服务之间传递该环境信息。
35.参见图2描述根据本公开的一个示例性实现方式的概要,图2示出了根据本公开的一些实现方式的用于管理应用的服务的框图200。如图2所示,应用250可以包括位于上游的第一服务150、
…
、以及位于第一服务150下游的第二服务160。在此,应用250可以进一步包括一个或多个其他应用。第一服务150和第二服务160可以是直接相邻的服务,可以是彼此远离的两个服务。在微服务场景下,在此的第一服务150和160可以是分别提供不同功能的不同微服务。假设应用250是用户管理系统,则第一服务150例如可以是用于登记用户信息的微服务,并且第二服务160例如可以是用于控制用户登录的微服务,等等。
36.在多环境场景下,第一服务150和第二服务160可以运行在特定环境中(例如,利用环境信息212来表示)。此时,在多环境场景涉及共享数据库系统230的情况下,则期望第一服务150和第二服务160在由环境信息212所指示的相同环境下访问数据库系统230。在本公开的上下文中,可以借助于数据库系统230的日志240来在第一服务150和第二服务160之间传递环境信息212。
37.具体地,如果接收到来自第一服务150的用于修改数据库系统230中的数据项的第一访问请求210,可以获取第一服务150的环境信息212,该环境信息212可以描述第一服务150的执行环境。进一步,可以基于环境信息212和第一访问请求150来生成第二访问请求220。此时,第二访问请求220可以携带该环境信息212,并且可以在数据库系统230的日志240中存储第二访问请求220。由此,第二服务160可以从日志240中读取第二访问请求220,进而提取环境信息212。
38.利用本公开的示例性实现方式,可以借助于数据库系统本身的日志来存储环境信息,并且不必单独占用数据库系统的存储空间。进一步,可由数据库系统230本身的有关日志的已有管理方式来传递环境信息212。以此方式,可以以更为简单并且有效的方式管理应用中的服务的环境信息,进而提高多环境场景下的应用开发和测试的效率。
39.管理服务的详细过程
40.已经参见图2描述了根据本公开的一个示例性实现方式的概要,在下文中,将描述用于管理应用的服务的更多细节。根据本公开的一个示例性实现方式,在此的应用250在多环境场景下被执行,并且多环境场景可以包括:基础环境、不同于基础环境的至少一个泳道环境。将会理解,如果在单一环境中执行应用,则并不会发生多环境下的数据库共享问题。因而,可以仅在检测到应用是在多环境场景下执行时,才启动本公开的技术方案。以此方式,可以避免不必要地存储和传输环境信息212所造成的多方面的额外开销。
41.根据本公开的一个示例性实现方式,在多环境场景下,仅在数据库系统230中的数据项被修改的情况下,才需要在各个服务之间传递环境信息212。如果数据库系统230中的数据项并未被修改,则并不需要传递环境信息212。此时,可以在检测到针对数据库系统230的第一访问请求210修改数据库系统230中的数据项的情况下,才执行根据本公开的一个示例性实现方式的技术方案。以此方式,可以避免各种不必要的额外开销。
42.根据本公开的一个示例性实现方式,在此的第一访问请求210可以是利用结构化查询语言(sql)编写的语句。此时,可以检测第一访问请求210的sql语句的类型,进而确定是否启动本公开的技术方案。图3示出了根据本公开的一些实现方式的不同类型的访问请求的框图300。如图3所示,插入请求310、删除请求320和修改请求330都会改变数据库系统230中的数据项,而查询请求(例如,利用关键字select表示)并不会改变数据库系统230中的内容。
43.此时,可以在检测到第一访问请求210为以下任一项时,启动本公开的技术方案:插入请求、删除请求、更新请求。以此方式,通过检测第一访问请求210的类型,可以以简单并且有效的方式来确定在共享数据库系统的场景下是否需要传递环境信息212。进一步,可以仅在需要时利用环境信息212来修改第一访问请求210,进而实现向下游服务传递环境信息212的目的。根据本公开的一个示例性实现方式,可以拦截插入请求、删除请求、更新请求,并且向这些请求中添加环境信息212。
44.根据本公开的一个示例性实现方式,为了使得第二访问请求220携带环境信息212,可以向第一访问请求210的注释部分中插入环境信息212,从而以获得第二访问请求220。参见图4描述有关插入环境信息212的更多细节,该图4示出了根据本公开的一些实现方式的向以结构化查询语言表示的语句中插入环境信息的框图400。
45.如图4所示,语句410表示以sql格式表示的第一访问请求210的一个具体示例,该语句410可以将数据库系统230中的满足“id=1”的数据项的状态设置为1。将会理解,语句410仅仅是用于修改数据库系统230中的数据项的一个访问请求的示例。备选地和/或附加地,该访问请求可以包括:修改其他数据项的语句,插入数据项的语句、删除数据项的语句,等等。
46.可以获取第一服务210的环境信息212(例如,"k_env":"env1")。在此,"k_env"可以是用于标识环境信息的关键字,并且"env1"可以是环境信息212的标识符。该环境信息212可以表示,在标识符为"env1"的环境中执行第一服务210。根据本公开的一个示例性实现方式,可以从技术人员的配置信息中获取该环境信息212。将会理解,图4仅仅示意性示出了环境信息212的一个具体示例,备选地和/或附加地,环境信息212的另一示例例如可以包括"k_env":"env2",等等。
47.根据本公开的一个示例性实现方式,可以向第一语句410中添加注释部分430。将会理解,在sql语句中,例如可以使用符号“/*”和“*/”来表示注释部分430的开始和结尾。换言之,在开始和结尾之间的部分是注释部分430,并且在执行sql语句的过程中并不会解析注释部分430的内容。因而,添加注释部分430并不会影响sql语句的执行。如图4所示,可以在语句410的结尾(和/或其他位置)插入注释部分430,以便生成包括环境信息212的语句420。进一步,可以向数据库系统230的日志240中写入该语句420,以便于由第二服务160来经由日志240获取环境信息212。
48.根据本公开的一个示例性实现方式,可以启动数据库系统230的日志记录功能,进而借助于数据库系统230自身的能力来存储和传递环境信息212。具体地,可以通过设置数据库系统230的配置参数,来启动日志记录功能。在数据库系统230中,可以通过设置参数“row-based(基于行)”来启动行复制模式。此时,在数据库系统230的binlog中将记录数据库系统中的哪个数据项被修改,然而并不记录相应sql语句的上下文相关信息。进一步,在数据库系统230中,可以通过设置参数“binlog_rows_query_log_events”来启动基于行的查询日志事件模式。此时,可以在binlog中记录原始访问请求的sql语句,例如,可以将sql语句写入至日志中的事件。通过设置上述两个参数,可以在日志中记录语句420。
49.图5示出了根据本公开的一些实现方式的利用数据库系统230的日志消息来向第二服务160通知环境信息212的框图500。如图5所示,在数据库系统230中,可以通过设置模式512和514来启动日志记录功能510。具体地,可以利用“set binlog_format=row”来将数据库系统230的binlog模式设置为row-based,并且可以在数据库系统230的服务端将binlog_rows_query_log_events字段配置为1(即开启)。具体地,可以修改数据库系统230的配置文件,和/或直接在服务端执行“set global binlog_rows_query_log_events=1”,来完成上述设置。
50.继续参见图5,此时数据库系统230的日志记录功能510已经被启用,并且可以进一步调用该日志记录功能520以在数据库系统230的日志240中记录第二访问请求(也即,语句420)。利用本公开的示例性实现方式,并不需要单独开发用于存储环境信息212的代码,也并不需要为存储环境信息212单独分配存储空间,而是可以直接调用数据库系统230的日志240的已有功能来完成存储功能。进一步,在日志240中直接存储该环境信息212,可以便于下游的各个服务在需要时经由日志240获取环境信息212。
51.根据本公开的一个示例性实现方式,并不是每个下游服务都需要获取环境信息212。具体地,如果下游服务并不涉及多环境场景下的共享数据库,则无需获取环境信息212。根据本公开的一个示例性实现方式,可以仅在确定下游服务在多环境场景下被执行时,从数据库系统的日志240中提取第二访问请求220。
52.根据本公开的一个示例性实现方式,可以基于多种方式来提取第二访问请求220。例如,可以直接从日志240中查找并且读取第二访问请求220。备选地和/或附加地,下游的第二服务160可以订阅数据库系统230的日志消息(例如,binlog消息),此时,可以接收由第二服务160订阅的数据库系统230的日志240消息(该日志消息包括第二访问请求160),继而可以从日志消息中获取第二访问请求160。
53.利用本公开的示例性实现方式,不必单独开发从日志240中获取第二访问请求220的代码,而是可以借助于数据库系统230和下游服务自身的数据通信能力,来获取第二访问请求220,进而获取相应的环境信息212。以此方式,可以进一步降低管理应用涉及的代码复杂度和资源消耗,进而以更为方便并且有效的方式管理应用中的各个服务。
54.在本公开的上下文中,下游的第二服务160可能仅关心数据库系统230中的某些数据项的修改,而并不关心其他数据项的修改。此时,可以仅在确定日志消息涉及由第二服务160所关心的目标数据项的情况下,从日志消息中读取第二访问请求220。
55.假设第一服务150是用于登记用户信息的微服务,并且第二服务160是用于控制用户登录的微服务。假设在第一服务150中的不同访问请求分别修改了用户信息中的手机号
码和年龄,并且在第二服务160中仅利用手机号码来控制用户登录而并不使用年龄信息。此时可以仅处理有关修改手机号码的日志消息并且提取相应的环境信息212,而并不需要处理有关修改年龄的日志消息。以此方式,可以仅在需要时处理与第二服务160所关心的目标数据项相关联的日志消息,从而避免不必要地处理无关日志消息造成的额外工作负载。
56.根据本公开的一个示例性实现方式,可以从提取的第二访问请求的注释部分中,读取环境信息212。参见图6描述读取环境信息212的更多细节,该图6示出了根据本公开的一些实现方式的提取并利用环境信息的框图600。如图6所示,可以利用解析器610来从语句420的注释部分430中提取环境信息212。可以基于多种方式来实现解析器610,例如,可以通过正则表达式解析sql语句中的注释字符串中的环境信息。
57.继续上文示例,当以关键字“k_env”来标识环境信息时,可以利用如图6所示的语句(以go语言表示),来提取环境信息212。具体地,“regexp.mustcompile((k_env):([^;]+))”可以获取sql格式表示的语句420中的环境信息["k_env:env1"]。将会理解,图6仅仅示意性示出了以go语言实现的解析器610的示例。备选地和/或附加地,可以利用其他语言来实现解析器610。进一步,可以在由读取的环境信息212所描述的执行环境下,执行第二服务160。
[0058]
已经描述了用于管理应用的服务中的各个步骤的详细过程,在下文中,参见图7描述用于管理应用的服务的整体过程。图7示出了根据本公开的一些实现方式的在多环境场景下管理应用中的服务的框图700。如图7所示,泳道环境120和基础环境110可以共享基础数据库110,此时泳道环境120中的参与者122可以访问并修改基础数据库114,并且基础环境110中的参与者112也可以访问并修改基础数据库114。如箭头710所示,可以向sql语句(例如,sql语句的注释部分)中写入环境信息。例如,在参与者122的sql语句中可以添加环境信息“env1”(指示泳道环境120),并且在参与者112的sql语句中可以添加环境信息“base”(指示基础环境110)。可以将修改后的sql语句写入基础数据库114的日志116。此时,不必关心在多个环境之间是否需要共享数据库系统。
[0059]
如框720所示,可以识别binlog中的环境信息,并且向订阅了相关binlog消息的各个服务发送包括环境信息的日志消息。进一步,在框730处,可以解析接收到的日志消息以便提取相应的环境信息。此时,消费者142和144可以基于提取的环境信息来在相应的环境中进行消费。进一步,可以在泳道环境130下部署泳道数据库134,可以向参与者132的sql语句(例如,sql语句的注释部分)中写入环境信息“env2”(指示泳道环境130)。可以将修改后的sql语句写入泳道数据库134的日志136。此时,消费者138可以在泳道环境130中消费相应的消息队列。
[0060]
利用本公开的示例性实现方式,通过调整数据库系统的服务端binlog_rows_query_log_events字段配置,可以灵活地控制开启或者关闭在日志中记录完整的sql语句。以此方式,可以以简单并且有效的方式来启动或者禁止用于管理应用的服务的技术方案。
[0061]
在各个服务的执行过程期间,可以拦截在各个服务在相应环境中的针对数据库系统的修改请求(例如,远程过程调用(rpc)请求或者超文本传送协议(http)请求)。可以将相应的环境信息添加到请求的sql语句的注释中。此时,sql语句以及相应的行记录的详细信息将被写入到binlog中。当下游服务消费binlog消息时,可以通过解析正则表达式来从sql语句中提取环境信息。进一步,可以将提取的环境信息发送到下游服务(例如,消息队列服
务、弹性搜索服务、消息系统服务、数据访问服务,等等),以便保证下游服务在相应的环境中能够正常消费接收到的消息。
[0062]
根据本公开的一个示例性实现方式,尽管上文以消息队列服务作为示例描述了在上游服务和下游服务之间传递环境信息的具体过程。备选地和/或附加地,在此的各个服务可以是在多环境场景下的涉及共享数据库系统的任意服务。例如,这些服务可以包括但不限于消息队列服务、弹性搜索服务、消息系统服务、数据访问服务,等等。利用本公开的示例性实现方式,不必为各个服务单独开发环境信息传递功能,而是可以以相同方式来管理多种不同的服务。以此方式,可以提高服务管理的效率进而提高应用的开发和测试效率。
[0063]
根据本公开的一个示例性实现方式,可以在用于开发应用的开发工具中实现上文描述的技术方案。此时,使用该开发工具的不同人员可以在各自的专用环境中完成开发和/或测试工作。进一步,不同人员可以为各自的专用环境设置专用环境标识符,以便下游服务可以在由该专用环境标识符所指示的专用环境中执行。
[0064]
具体地,假设多个技术人员协作开发应用,则技术人员1可以指定需要在某个专用环境中执行的服务。例如,技术人员1可以指定在专用环境“env1”中执行服务1、服务2,等等。此时,技术人员可以利用浏览器中的“染色”功能来指定期望在某个专用环境下运行的访问请求(例如,http请求和/或rpc请求),并且可以在自身的配置信息存储上述环境信息“env1”,等等。进一步,技术人员2可以指定在专用环境“env2”中执行服务1、服务2,等等。以此方式,可以便于不同技术人员在不干扰其他技术人员的工作的情况下,在自身的专用环境中执行开发和/或测试工作。
[0065]
根据本公开的一个示例性实现方式,可以在开发工具的插件中实现上文描述的技术方案。此时,可以以更为方便并且有效的方式来将上述管理技术方案继承到不同的开发工具中,进而便于提高开发和测试人员的效率。
[0066]
利用本公开的示例性实现方式,在多环境场景中存在共享数据库系统的情况下,可以将环境信息写入到针对数据库系统的访问请求之中,并且经由数据库系统230的日志240来在各个服务之间传递环境信息。此时,被插入的环境信息并不会干扰访问请求的正常执行,并且可调用数据库系统本身的有关日志的已有管理方式来传递环境信息。以此方式,可以以更为简单并且有效的方式管理应用中的服务的环境信息,进而以更为提高应用开发和测试的效率。
[0067]
示例过程
[0068]
图8示出了根据本公开的一些实现方式的用于管理应用的服务的方法800的流程图。在此,应用至少包括第一服务和第一服务下游的第二服务,第一服务和第二服务在相同的环境下被执行。在框810处,确定是否接收到来自第一服务的、用于修改数据库系统中的数据项的第一访问请求。如果接收到该第一访问请求,则方法800前进至框820。在框820处,获取第一服务的环境信息,环境信息描述第一服务的执行环境。在框830处,基于环境信息和第一访问请求,生成第二访问请求。在框840处,在数据库系统的日志中存储第二访问请求,以用于由第二服务从日志中提取环境信息。
[0069]
根据本公开的一个示例性实现方式,生成第二访问请求包括:向第一访问请求的注释部分中插入环境信息,以获得第二访问请求。
[0070]
根据本公开的一个示例性实现方式,存储第二访问请求包括:启动数据库系统的
日志记录功能;以及调用日志记录功能以在数据库系统的日志中记录第二访问请求。
[0071]
根据本公开的一个示例性实现方式,启动日志记录功能包括在数据库系统中设置以下记录模式:行复制模式、以及基于行的查询日志事件模式。
[0072]
根据本公开的一个示例性实现方式,该方法800进一步包括:响应于确定第二服务在多环境场景下被执行,从数据库系统的日志中提取第二访问请求;从提取的第二访问请求的注释部分中,读取环境信息;以及在由读取的环境信息描述的执行环境下,执行第二服务。
[0073]
根据本公开的一个示例性实现方式,从日志中提取第二访问请求包括:接收由第二服务订阅的数据库系统的日志消息,日志消息包括第二访问请求;以及从日志消息中获取第二访问请求。
[0074]
根据本公开的一个示例性实现方式,从日志消息中获取第二访问请求包括:响应于确定日志消息涉及由第二服务指定的目标数据项,从日志消息中读取第二访问请求。
[0075]
根据本公开的一个示例性实现方式,第一访问请求和第二访问请求利用结构化查询语言编写,并且第一访问请求包括以下至少任一项:插入请求、删除请求、更新请求。
[0076]
根据本公开的一个示例性实现方式,第一服务和第二服务包括以下至少任一项:消息队列服务、弹性搜索服务、消息系统服务、数据访问服务。
[0077]
根据本公开的一个示例性实现方式,应用在多环境场景下被执行,并且多环境场景包括以下至少任一项:基础环境、不同于基础环境的至少一个泳道环境。
[0078]
根据本公开的一个示例性实现方式,方法800在用于开发应用的开发工具中被实现,方法被实现为开发工具的插件,并且环境信息是从开发工具的用户的配置信息中获取的。
[0079]
示例装置和设备
[0080]
图9示出了根据本公开的一些实现方式的用于管理应用的服务的装置900的框图。在此,应用至少包括第一服务和第一服务下游的第二服务,第一服务和第二服务在相同的环境下被执行。该装置900包括:获取模块910,被配置用于响应于接收到来自第一服务的用于修改数据库系统中的数据项的访问请求,获取第一服务的环境信息,环境信息描述第一服务的执行环境;生成模块920,被配置用于基于环境信息和第一访问请求,生成第二访问请求;以及存储模块930,被配置用于在数据库系统的日志中存储第二访问请求,以用于由第二服务从日志中提取环境信息。
[0081]
根据本公开的一个示例性实现方式,生成模块920包括:插入模块,被配置用于向第一访问请求的注释部分中插入环境信息,以获得第二访问请求。
[0082]
根据本公开的一个示例性实现方式,存储模块930包括:启动模块,被配置用于启动数据库系统的日志记录功能;以及调用模块,被配置用于调用日志记录功能以在数据库系统的日志中记录第二访问请求。
[0083]
根据本公开的一个示例性实现方式,启动模块包括:设置模块,被配置用于在数据库系统中设置以下记录模式:行复制模式、以及基于行的查询日志事件模式。
[0084]
根据本公开的一个示例性实现方式,该装置900进一步包括:提取模块,被配置用于响应于确定第二服务在多环境场景下被执行,从数据库系统的日志中提取第二访问请求;读取模块,被配置用于从提取的第二访问请求的注释部分中,读取环境信息;以及执行
模块,被配置用于在由读取的环境信息描述的执行环境下,执行第二服务。
[0085]
根据本公开的一个示例性实现方式,提取模块包括:接收模块,被配置用于接收由第二服务订阅的数据库系统的日志消息,日志消息包括第二访问请求;以及请求获取模块,被配置用于从日志消息中获取第二访问请求。
[0086]
根据本公开的一个示例性实现方式,请求获取模块包括:请求读取模块,被配置用于响应于确定日志消息涉及由第二服务指定的目标数据项,从日志消息中读取第二访问请求。
[0087]
根据本公开的一个示例性实现方式,第一访问请求和第二访问请求利用结构化查询语言编写,并且第一访问请求包括以下至少任一项:插入请求、删除请求、更新请求。
[0088]
根据本公开的一个示例性实现方式,第一服务和第二服务包括以下至少任一项:消息队列服务、弹性搜索服务、消息系统服务、数据访问服务。
[0089]
根据本公开的一个示例性实现方式,应用在多环境场景下被执行,并且多环境场景包括以下至少任一项:基础环境、不同于基础环境的至少一个泳道环境。
[0090]
根据本公开的一个示例性实现方式,该装置900在用于开发应用的开发工具中被实现,方法被实现为开发工具的插件,并且环境信息是从开发工具的用户的配置信息中获取的。
[0091]
图10示出了能够实施本公开的多个实现方式的设备1000的框图。应当理解,图10所示出的计算设备1000仅仅是示例性的,而不应当构成对本文所描述的实现方式的功能和范围的任何限制。图10所示出的计算设备1000可以用于实现上文描述的方法。
[0092]
如图10所示,计算设备1000是通用计算设备的形式。计算设备1000的组件可以包括但不限于一个或多个处理器或处理单元1010、存储器1020、存储设备1030、一个或多个通信单元1040、一个或多个输入设备1050以及一个或多个输出设备1060。处理单元1010可以是实际或虚拟处理器并且能够根据存储器1020中存储的程序来执行各种处理。在多处理器系统中,多个处理单元并行执行计算机可执行指令,以提高计算设备1000的并行处理能力。
[0093]
计算设备1000通常包括多个计算机存储介质。这样的介质可以是计算设备1000可访问的任何可以获得的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器1020可以是易失性存储器(例如寄存器、高速缓存、随机访问存储器(ram))、非易失性存储器(例如,只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、闪存)或它们的某种组合。存储设备1030可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,诸如闪存驱动、磁盘或者任何其他介质,其可以能够用于存储信息和/或数据(例如用于训练的训练数据)并且可以在计算设备1000内被访问。
[0094]
计算设备1000可以进一步包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图10中示出,可以提供用于从可拆卸、非易失性磁盘(例如“软盘”)进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。存储器1020可以包括计算机程序产品1025,其具有一个或多个程序模块,这些程序模块被配置为执行本公开的各种实现方式的各种方法或动作。
[0095]
通信单元1040实现通过通信介质与其他计算设备进行通信。附加地,计算设备1000的组件的功能可以以单个计算集群或多个计算机器来实现,这些计算机器能够通过通
信连接进行通信。因此,计算设备1000可以使用与一个或多个其他服务器、网络个人计算机(pc)或者另一个网络节点的逻辑连接来在联网环境中进行操作。
[0096]
输入设备1050可以是一个或多个输入设备,例如鼠标、键盘、追踪球等。输出设备1060可以是一个或多个输出设备,例如显示器、扬声器、打印机等。计算设备1000还可以根据需要通过通信单元1040与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与计算设备1000交互的设备进行通信,或者与使得计算设备1000与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(i/o)接口(未示出)来执行。
[0097]
根据本公开的示例性实现方式,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,其中计算机可执行指令被处理器执行以实现上文描述的方法。根据本公开的示例性实现方式,还提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,而计算机可执行指令被处理器执行以实现上文描述的方法。根据本公开的示例性实现方式,提供了一种计算机程序产品,其上存储有计算机程序,程序被处理器执行时实现上文描述的方法。
[0098]
这里参照根据本公开实现的方法、装置、设备和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0099]
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0100]
可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0101]
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0102]
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好
地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各个实现方式。
技术特征:
1.一种用于管理应用的服务的方法,其中,所述应用至少包括第一服务和所述第一服务下游的第二服务,所述第一服务和所述第二服务在相同的环境下被执行,所述方法包括:响应于接收到来自所述第一服务的、用于修改数据库系统中的数据项的第一访问请求,获取所述第一服务的环境信息,所述环境信息描述所述第一服务的执行环境;基于所述环境信息和所述第一访问请求,生成第二访问请求;以及在所述数据库系统的日志中存储所述第二访问请求,以用于由所述第二服务从所述日志中提取所述环境信息。2.根据权利要求1所述的方法,其中生成所述第二访问请求包括:向所述第一访问请求的注释部分中插入所述环境信息,以获得所述第二访问请求。3.根据权利要求1所述的方法,其中存储所述第二访问请求包括:启动所述数据库系统的日志记录功能;以及调用所述日志记录功能以在所述数据库系统的所述日志中记录所述第二访问请求。4.根据权利要求3所述的方法,其中启动所述日志记录功能包括在所述数据库系统中设置以下记录模式:行复制模式、以及基于行的查询日志事件模式。5.根据权利要求2所述的方法,进一步包括:响应于确定所述第二服务在多环境场景下被执行,从所述数据库系统的所述日志中提取所述第二访问请求;从提取的第二访问请求的所述注释部分中,读取所述环境信息;以及在由读取的所述环境信息描述的所述执行环境下,执行所述第二服务。6.根据权利要求5所述的方法,其中从所述日志中提取所述第二访问请求包括:接收由所述第二服务订阅的所述数据库系统的日志消息,所述日志消息包括所述第二访问请求;以及从所述日志消息中获取所述第二访问请求。7.根据权利要求6所述的方法,其中从所述日志消息中获取所述第二访问请求包括:响应于确定所述日志消息涉及由所述第二服务指定的目标数据项,从所述日志消息中读取所述第二访问请求。8.根据权利要求1所述的方法,其中:第一访问请求和所述第二访问请求利用结构化查询语言编写,并且所述第一访问请求包括以下至少任一项:插入请求、删除请求、更新请求;以及所述第一服务和所述第二服务包括以下至少任一项:消息队列服务、弹性搜索服务、消息系统服务、数据访问服务。9.根据权利要求1所述的方法,其中所述应用在多环境场景下被执行,并且所述多环境场景包括以下至少任一项:基础环境、不同于所述基础环境的至少一个泳道环境。10.根据权利要求1所述的方法,其中所述方法在用于开发所述应用的开发工具中被实现,所述方法被实现为所述开发工具的插件,并且所述环境信息是从所述开发工具的用户的配置信息中获取的。11.一种用于管理应用的服务的装置,所述应用至少包括第一服务和所述第一服务下游的第二服务,所述第一服务和所述第二服务在相同的环境下被执行,所述装置包括:获取模块,被配置用于响应于接收到来自所述第一服务的用于修改数据库系统中的数
据项的访问请求,获取所述第一服务的环境信息,所述环境信息描述所述第一服务的执行环境;生成模块,被配置用于基于所述环境信息和所述第一访问请求,生成第二访问请求;以及存储模块,被配置用于在所述数据库系统的日志中存储所述第二访问请求,以用于由所述第二服务从所述日志中提取所述环境信息。12.一种电子设备,包括:至少一个处理单元;以及至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令在由所述至少一个处理单元执行时使所述电子设备执行根据权利要求1至10中任一项所述的方法。13.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时使所述处理器实现根据权利要求1至10中任一项所述的方法。
技术总结
提供了用于管理应用的服务的方法、装置、设备和介质。在此,应用至少包括第一服务和第一服务下游的第二服务,第一服务和第二服务在相同的环境下被执行。在一种方法中,响应于接收到来自第一服务的、用于修改数据库系统中的数据项的第一访问请求,获取第一服务的环境信息,环境信息描述第一服务的执行环境。基于环境信息和第一访问请求,生成第二访问请求。在数据库系统的日志中存储第二访问请求,以用于由第二服务从日志中提取环境信息。利用本公开的示例性实现方式,可以借助于数据库系统本身的日志相关功能来存储和传递环境信息,进而提高管理应用的服务的效率。高管理应用的服务的效率。高管理应用的服务的效率。
技术研发人员:刘帆 张尤长 董幸 秦健瑞 杨祥钰
受保护的技术使用者:抖音视界有限公司
技术研发日:2023.05.15
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
