首页> 中国专利> 一种记录数据更新方法及装置

一种记录数据更新方法及装置

摘要

本申请公开了一种记录数据更新方法及装置,包括:依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中该记录的记录数据将要被更新为的更新后记录数据;并基于缓存的该多个更新操作各自对应的更新后记录数据,将该多个更新操作各自针对该记录的重做日志,一次性写入持久化设备;以及当写重做日志成功时,使用缓存的该多个更新操作各自对应的更新后记录数据,更新数据库中该记录的记录数据。采用本申请实施例提供的方案,提高了针对并发记录数据更新的处理效率。

著录项

  • 公开/公告号CN104462127A

    专利类型发明专利

  • 公开/公告日2015-03-25

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201310432480.4

  • 发明设计人 李凯;

    申请日2013-09-22

  • 分类号G06F17/30(20060101);

  • 代理机构11291 北京同达信恒知识产权代理有限公司;

  • 代理人郭润湘

  • 地址 英属开曼群岛大开曼岛资本大厦一座四层847号邮箱

  • 入库时间 2023-12-18 08:05:40

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-27

    专利权的转移 IPC(主分类):G06F17/30 登记生效日:20191209 变更前: 变更后: 申请日:20130922

    专利申请权、专利权的转移

  • 2018-07-20

    授权

    授权

  • 2015-04-22

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20130922

    实质审查的生效

  • 2015-03-25

    公开

    公开

说明书

技术领域

本申请涉及数据库技术领域,尤其涉及一种记录数据更新方法及装置。

背景技术

在数据库的使用过程中,经常需要对数据库中保存的记录数据进行更新,现有技术中对数据库中保存的记录数据的更新流程,为了保证对数据更新的原子性操作,更新流程主要包括预处理操作、写重做日志操作和提交操作,具体如下:

预处理操作:在接收到更新操作请求之后,首先确定本次更新操作对应的记录,并确定在本次更新操作中该记录的记录数据将要被更新为的更新后记录数据,然后缓存该更新后记录数据,即完成了预处理操作。

在上述预处理操作过程中,为了避免在本次更新操作过程中该记录的记录数据被其它更新操作更改,可以引入锁机制,即在确定本次更新操作对应的记录之后,且在确定更新后记录数据之前,对该记录的记录数据进行加锁处理,使得已加锁的该记录的记录数据在被解锁之前,无法被其它更新操作更改。

写重做日志操作:在完成预处理操作之后,将本次更新操作针对该记录的重做日志(redo log),写入持久化设备,重做日志中包括了本次更新操作的一些操作信息,用于表示本次更新操作的具体操作内容,例如,可以包括本次更新操作对应的记录,以及对应的更新后记录数据等。

执行写重做日志操作的目的在于在数据意外崩溃后,能够根据重做日志恢复数据,以便最终能够成功完成本次更新操作,并且如果写重做日志操作失败,或者预处理操作失败,那么后续不会再执行对应的提交操作,进而可以保证记录数据更新的原子性操作。

提交操作:在完成写重做日志操作之后,使用缓存的该更新后记录数据更新数据库中该记录的记录数据,从而完成本次对该记录的记录数据的更新。当在预处理操作时对该记录的记录数据进行了加锁处理,则还需要对该记录的记录数据进行解锁处理,以便后续当需要针对该记录再次进行更新操作时,能够对该记录的记录数据进行更新。在提交操作完成后,即可以对外发布,使得该记录的更新后记录数据对外可查询到。

通过上述对数据库中的记录数据的更新方案,能够保证对数据更新的原子性操作。然而,在实际应用中,经常会在短时间内需要对数据库中的同一记录的记录数据进行多次更新,例如,在电子商务领域中,电子商务网站上的一些产品可能会在短时间内被多次执行购买操作,在执行购买操作之后,产品数量信息需要更新,产品数量即相当于记录,产品数量的数量值即相当于记录数据,对于一段时间内需要进行多次更新的记录,可以将其称作热点记录。

对于这种短时间内对同一记录的记录数据进行多次更新的情况,可以称作为并发记录数据更新,针对这一情况,在采用现有技术中的上述方案时,对于短时间针对同一记录的多个更新操作请求,需要按照先后顺序,串行的依次针对每个更新操作请求进行更新处理。

然而,由于每次更新操作过程中向持久化设备写重做日志的操作是耗费时间较长的一个操作,所以将导致无法及时对后续等待处理的更新操作请求进行处理,从而导致对并发的多个更新操作请求进行处理的时间较长,进而导致针对并发记录数据更新的处理效率较低。

发明内容

有鉴于此,本申请实施例提供一种记录数据更新方法及装置,用于解决现有技术中存在的针对并发记录数据更新的处理效率较低的问题。

本申请实施例通过如下技术方案实现:

本申请实施例提供了一种记录数据更新方法,包括:

依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据;

基于缓存的所述多个更新操作各自对应的更新后记录数据,将所述多个更新操作各自针对所述记录的重做日志,一次性写入持久化设备;

当写重做日志成功时,使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据。

采用本申请实施例提供的上述方法,实现了针对同一记录的多个更新操作的多个重做日志的一次性写入持久化设备,相比将多个重做日志分别多次写入持久化设备,减少了写重做日志的时长,从而提高了针对并发记录数据更新的处理效率。

进一步的,所述多个更新操作为一个预设周期内请求的更新操作;或者

所述多个更新操作为连续的预设数量的更新操作。

进一步的,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据,具体包括:

确定所述记录对应的专用进程或专用线程;

通过所述专用进程或专用线程,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据。

这样,减少了数据库的进程或线程等待被使用的时长,从而减少了对数据进程或线程资源的浪费。

进一步的,在缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据之前,还包括:

对所述记录的记录数据进行加锁处理;

在缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据之后,还包括:

对所述记录的记录数据进行解锁处理。

这样,可以通过锁机制,避免在该更新操作过程中其它更新操作对记录的记录数据进行更改。

进一步的,上述方法,还包括:

当写重做日志失败时,取消针对所述多个更新操作对数据库中所述记录的记录数据的更新。

进一步的,使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据,具体可以为:

按照所述多个更新操作被请求的先后顺序,依次针对每个更新操作,使用缓存的该更新操作对应的更新后记录数据,更新数据库中所述记录的记录数据。

这样,使得在执行一次对数据库中该记录的记录数据的更新后,该记录的更新后记录数据即可以对外可查询到,以便后续能够及时的对外发布每次更新的更新结果。

使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据,具体也可以为:

使用缓存的所述多个更新操作中最后请求的更新操作对应的更新后记录数据,更新数据库中所述记录的记录数据。

这样,直接将数据库中该记录的记录数据,更新为最后请求的更新操作对应的更新后记录数据,从而减少了对数据库中该记录的更新次数,也就减少了处理资源的消耗,并且提高了处理效率。

本申请实施例还提供了一种记录数据更新装置,包括:

缓存处理单元,用于依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据;

写重做日志单元,用于基于缓存的所述多个更新操作各自对应的更新后记录数据,将所述多个更新操作各自针对所述记录的重做日志,一次性写入持久化设备;

更新处理单元,用于当写重做日志成功时,使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据。

采用本申请实施例提供的上述装置,实现了针对同一记录的多个更新操作的多个重做日志的一次性写入持久化设备,相比将多个重做日志分别多次写入持久化设备,减少了写重做日志的时长,从而提高了针对并发记录数据更新的处理效率。

进一步的,所述缓存处理单元,具体用于确定所述记录对应的专用进程或专用线程;

通过所述专用进程或专用线程,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据。

这样,减少了数据库的进程或线程等待被使用的时长,从而减少了对数据进程或线程资源的浪费。

进一步的,所述缓存处理单元,还用于在缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据之前,对所述记录的记录数据进行加锁处理;并在缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据之后,对所述记录的记录数据进行解锁处理。

这样,可以通过锁机制,避免在该更新操作过程中其它更新操作对记录的记录数据进行更改。

进一步的,所述写重做日志单元,还用于当写重做日志失败时,取消针对所述多个更新操作对数据库中所述记录的记录数据的更新。

进一步的,所述更新处理单元,可以具体用于按照所述多个更新操作被请求的先后顺序,依次针对每个更新操作,使用缓存的该更新操作对应的更新后记录数据,更新数据库中所述记录的记录数据。

这样,使得在执行一次对数据库中该记录的记录数据的更新后,该记录的更新后记录数据即可以对外可查询到,以便后续能够及时的对外发布每次更新的更新结果。

所述更新处理单元,也可以具体用于使用缓存的所述多个更新操作中最后请求的更新操作对应的更新后记录数据,更新数据库中所述记录的记录数据。

这样,直接将数据库中该记录的记录数据,更新为最后请求的更新操作对应的更新后记录数据,从而减少了对数据库中该记录的更新次数,也就减少了处理资源的消耗,并且提高了处理效率。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本申请的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中:

图1为本申请实施例提供的记录数据更新方法的流程图;

图2为本申请实施例1提供的记录数据更新方法的流程图;

图3为本申请实施例2提供的记录数据更新装置的结构式意图。

具体实施方式

为了给出提高针对并发记录数据更新的处理效率的实现方案,本申请实施例提供了一种记录数据更新方法及装置,该技术方案可以应用于更新数据库中的记录数据的过程,既可以实现为一种方法,也可以实现为一种装置。以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本申请实施例提供一种记录数据更新方法,如图1所示,包括:

步骤101、依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中该记录的记录数据将要被更新为的更新后记录数据。

步骤102、基于缓存的该多个更新操作各自对应的更新后记录数据,将该多个更新操作各自针对该记录的重做日志,一次性写入持久化设备。

步骤103、当写重做日志成功时,使用缓存的该多个更新操作各自对应的更新后记录数据,更新数据库中该记录的记录数据。

其中,该多个更新操作的选取,可以采用如下两种方式:

第一种方式:该多个更新操作可以为一个预设周期内请求的更新操作,即可以将每个预设周期内请求更新同一记录的多个更新操作作为一组更新操作,以通过上述方法针对该记录的记录数据进行更新。

第二种方式:该多个更新操作也可以为连续的预设数量的更新操作,即将连续的请求更新同一记录的多个更新操作作为一组更新操作,以通过上述方法针对该记录的记录数据进行更新。

进一步的,在本申请实施例提供的上述方法中,可以针对热点记录采用上述图1所示的流程进行记录数据更新处理,而针对非热点记录,由于其更新的频率较低,可以采用现有技术中的各种方法进行记录数据更新处理。

具体的,针对热点记录和非热点记录,可以根据接收的更新操作请求中是否对应记录携带了热点标记进行区分,例如,当更新操作请求中对应请求更新的记录携带有热点标记时,确定该记录为热点记录,当更新操作请求中对应请求更新的记录未携带有热点标记时,确定该记录为非热点记录。更新操作请求可以通过扩展SQL语句实现,并指示请求更新的记录是否为热点记录。

下面结合附图,对本申请实施例提供的方法进行详细描述。

实施例1:

本申请实施例1提供一种记录数据更新方法,该方法可应用于数据库,如图2所示,具体包括如下处理步骤:

步骤201、获取接收的更新操作请求,该更新操作请求用于请求对数据库中的记录数据进行更新。

步骤202、根据接收的更新操作请求,确定请求执行的更新操作,例如,确定在该更新操作中请求更新的记录,以及确定该记录的记录数据将要被更新为的更新后数据。

其中,更新后记录数据可以根据更新操作请求中携带的更新指示信息和数据库中该记录的当前记录数据进行确定,在不同的应用场景中,可以采用相应的具体确定方式,在此不再举例进行详细描述。

进一步的,在本步骤中,当确定出该更新操作请求更新的记录之后,还可以确定该记录是否为热点记录,如果是热点记录,则进入后续步骤203,以采用本申请实施例提供的方法进行更新操作,否则,可以采用现有技术中的各种方法进行记录数据更新处理,如背景技术中所介绍的更新方法。

步骤203、缓存在该更新操作中该记录的记录数据将要被更新为的更新后记录数据。

本步骤中缓存更新后记录数据,相当于是对该记录进行预处理操作,现有技术中,在一次更新操作中对记录进行预处理操作时,是通过预先为请求该更新操作的客户端分配的进程或线程执行的,所以当出现并发记录数据更新情况时,多个更新操作请求是来自不同客户端的,所以需要为每个更新操作请求分配不同的进程或线程,而针对多个更新操作请求是串行处理的,所以后处理的更新操作请求由于等待处理的时间较长,导致为其分配的进程或线程也需要等待较长时间才能被使用,从而浪费了数据库的进程或线程资源。

为了解决这一技术问题,本申请实施例中,具体可以采用如下方式执行本步骤:

确定该记录对应的专用进程或专用线程。例如,根据该记录的主键计算出一个唯一的整数签名值,如果当前不存在与该整数签名值对应的进程或线程,可以对应该整数签名值为其分配一个进程或线程,作为该记录对应的专用进程或专用线程,并建立该整数签名值与分配的该进程或线程的对应关系;如果当前存在与该整数签名值对应的进程或线程,则可以将该整数签名值对应的进程或线程,确定为该记录对应的专用进程或专用线程;

通过该记录对应的专用进程或专用线程,缓存在该更新操作中该记录的记录数据将要被更新为的更新后记录数据。

采用上述方式执行本步骤,减少了数据库的进程或线程等待被使用的时长,从而减少了对数据进程或线程资源的浪费。

当采用上述方式执行本步骤时,由于针对该记录的记录数据的预处理操作都是通过一个进程或线程来完成的,所以可以不使用锁机制,即不需要先对该记录的记录数据进行加锁处理,以及后续对应的解锁处理。

当针对该记录的记录数据的预处理操作不都是通过一个进程或线程来完成时,本步骤中可以通过锁机制避免在预处理操作过程中该记录的记录数据被其它更新操作更改,具体可以为在缓存该更新后记录数据之前,对该记录的记录数据进行加锁处理,并在缓存该更新后记录数据之后,对该记录的记录数据进行解锁处理。

步骤204、获取针对该记录当前已完成预处理操作且未完成写重做日志操作的多个更新操作,并确定该多个更新操作是否满足启动进行批量写重做日志操作的预设条件,如果满足,进入步骤205,如果不满足,返回上述步骤201。

具体的,可以当针对该记录当前已完成预处理操作且未完成写重做日志操作的多个更新操作的数量达到预设数量时,确定满足预设条件。

也可以当针对该记录当前已完成预处理操作且未完成写重做日志操作的多个更新操作为同一个预设周期内请求的所有更新操作时,确定满足预设条件。即相当于后续是将同一个预设周期内请求的所有更新操作的多个重做日志,一次性写入持久化设备,详见后续描述。

步骤205、基于缓存的满足上述预设条件的该多个更新操作各自对应的更新后记录数据,将该多个更新操作各自针对该记录的重做日志,共计多个重做日志,一次性写入持久化设备,即完成对该多个更新操作的写重做日志操作。

每个更新操作针对该记录的重做日志,可以根据实际需要采用现有技术中的各种方式确定,在此不再进行详细描述。

步骤206、确定写重做日志是否成功,如果成功,进入步骤207,如果失败,进入步骤209。

步骤207、使用缓存的该多个更新操作各自对应的更新后记录数据,更新数据库中该记录的记录数据。

本步骤具体可以包括如下两种方式:

第一种方式:按照该多个更新操作被请求的先后顺序,依次针对每个更新操作,使用缓存的该更新操作对应的更新后记录数据,更新数据库中该记录的记录数据。

采用上述第一种方式,相当于依次执行了每个更新操作的提交操作,使得在本步骤中执行一次对数据库中该记录的记录数据的更新后,该记录的更新后记录数据即可以对外可查询到,以便后续能够及时的对外发布每次更新的更新结果。

第二种方式:使用缓存的该多个更新操作中最后请求的更新操作对应的更新后记录数据,更新数据库中该记录的记录数据。

采用上述第二种方式,直接将数据库中该记录的记录数据,更新为最后请求的更新操作对应的更新后记录数据,从而减少了对数据库中该记录的更新次数,也就减少了处理资源的消耗,并且提高了处理效率。

本步骤中,在完成上述对数据库中该记录的记录数据的更新后,即可以将更新结果进行发布,以便需要的用户可以及时获知更新结果。

在发布时,可以将各待发布事务暂时保存在待发布链表中,并从待发布链表中按照先后顺序,依次获取待发布事务进行发布。

步骤208、进一步的,当更新操作请求来自客户端时,分别向发送该多个更新操作对应的更新操作请求的客户端,返回更新成功响应。

步骤209、取消使用缓存的该多个更新操作各自对应的更新后记录数据,更新数据库中该记录的记录数据。

并且,当更新操作请求来自客户端时,分别向发送该多个更新操作对应的更新操作请求的客户端,返回更新失败响应。

采用本申请实施例1提供的上述记录数据更新方法,实现了针对同一记录的多个更新操作的多个重做日志的一次性写入持久化设备,相比将多个重做日志分别多次写入持久化设备,减少了写重做日志的时长,从而提高了针对并发记录数据更新的处理效率。

并且,当针对同一个记录的记录数据的预处理操作都是通过一个进程或线程来完成时,减少了数据库的进程或线程等待被使用的时长,从而减少了对数据进程或线程资源的浪费。

实施例2:

基于同一发明构思,根据本申请实施例1提供的记录数据更新方法,相应地,本申请实施例2还提供了一种记录数据更新装置,其结构示意图如图3所示,具体包括:

缓存处理单元301,用于依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据;

写重做日志单元302,用于基于缓存的所述多个更新操作各自对应的更新后记录数据,将所述多个更新操作各自针对所述记录的重做日志,一次性写入持久化设备;

更新处理单元303,用于当写重做日志成功时,使用缓存的所述多个更新操作各自对应的更新后记录数据,更新数据库中所述记录的记录数据。

进一步的,缓存处理单元301,具体用于确定所述记录对应的专用进程或专用线程;并通过所述专用进程或专用线程,缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据。

进一步的,缓存处理单元301,还用于在缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据之前,对所述记录的记录数据进行加锁处理;并在缓存在该更新操作中所述记录的记录数据将要被更新为的更新后记录数据之后,对所述记录的记录数据进行解锁处理。

进一步的,写重做日志单元302,还用于当写重做日志失败时,取消针对所述多个更新操作对数据库中所述记录的记录数据的更新。

进一步的,更新处理单元303,具体用于按照所述多个更新操作被请求的先后顺序,依次针对每个更新操作,使用缓存的该更新操作对应的更新后记录数据,更新数据库中所述记录的记录数据;或者使用缓存的所述多个更新操作中最后请求的更新操作对应的更新后记录数据,更新数据库中所述记录的记录数据。

上述各单元的功能可对应于图1和图2所示流程中的相应处理步骤,在此不再赘述。

综上所述,本申请实施例提供的方案,包括:依次针对请求更新同一记录的多个更新操作中的每个更新操作,缓存在该更新操作中该记录的记录数据将要被更新为的更新后记录数据;并基于缓存的该多个更新操作各自对应的更新后记录数据,将该多个更新操作各自针对该记录的重做日志,一次性写入持久化设备;以及当写重做日志成功时,使用缓存的该多个更新操作各自对应的更新后记录数据,更新数据库中该记录的记录数据。采用本申请实施例提供的方案,提高了针对并发记录数据更新的处理效率。

本申请的实施例所提供的更新装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要更新装置具有上述功能,都应该在本申请的保护范围之内。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号