买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】程序关联关系的解耦系统和方法_北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司_201711093323.X 

申请/专利权人:北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司

申请日:2017-11-08

公开(公告)日:2021-07-20

公开(公告)号:CN109756543B

主分类号:H04L29/08(20060101)

分类号:H04L29/08(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.07.20#授权;2019.06.07#实质审查的生效;2019.05.14#公开

摘要:本发明公开了一种程序关联关系的解耦系统和方法。解耦系统包括第一通信库、第一服务器和至少一第二服务器;第一服务器用于运行第一分布式程序;至少一第二服务器用于运行第二分布式程序;所述第一分布式程序用于调用所述第一通信库监听目标第二分布式程序;所述第一通信库用于获取目标第二分布式程序的程序信息;所述程序信息包括目标第二服务器的IP地址和目标第二分布式程序的端口信息;所述第一通信库还用于根据所述程序信息发送探活包至所述目标第二分布式程序,以检测所述第一分布式程序和所述目标第二分布式程序之间的通信状态。本发明避免了因网络异常造成的上下游关联关系的误判断,探测准确度大大提高,进而提高了系统的稳定性。

主权项:1.一种程序关联关系的解耦系统,其特征在于,所述解耦系统包括:第一通信库、第一服务器和至少一第二服务器;所述第一服务器用于运行第一分布式程序;所述至少一第二服务器用于运行第二分布式程序;所述第一分布式程序用于调用所述第一通信库监听目标第二分布式程序;所述第一通信库用于获取所述目标第二分布式程序的程序信息;所述程序信息包括目标第二服务器的IP地址和目标第二分布式程序的端口信息;所述第一通信库还用于根据所述程序信息发送探活包至所述目标第二分布式程序,以检测所述第一分布式程序与所述目标第二分布式程序之间的通信状态;所述第一通信库还包括:筛选单元和发送单元;所述筛选单元用于在接收到所述第一分布式程序发送的访问请求时,根据所述访问请求从程序信息中筛选出目标程序信息;所述发送单元用于将所述目标程序信息发送给所述第一分布式程序。

全文数据:程序关联关系的解耦系统和方法技术领域本发明涉及互联网技术领域,特别涉及一种程序关联关系的解耦系统和方法。背景技术随着互联网技术的不断深入,产品背后的技术越来越复杂,其实现一般需要众多程序模块相互协同配合完成。这些程序分布在不同的机房、地域,运行在不同的服务器上,程序之间需要相互通信,由此产生了这样的需求:上游程序需要动态的知道下游程序的通信地址和健康状况,才能使得整个分布式协作变的更加的稳定可靠,避免由于程序所在服务器异常、网络异常、程序自身问题等各种因素带来的稳定性影响。现有技术中,通过DNS一个分布式数据库和zookeeper分布式系统的可靠协调系统实现上下游程序之间的关联关系解耦。具体的:下游程序将自身的端口信息和服务器IP地址注册到zookeeper的临时节点。上游程序实时监听这个临时节点zookeeper。当下游程序和zookeeper一段时间内没有通信,zookeeper的临时节点会被删除,同时zookeeper会给上游程序发送消息通知临时节点删除,上游节点由此判断下游程序的服务器出现故障,从而实现上下游关联关系的解耦。但事实上,zookeeper方案在同机房内部的情况下应用比较理想,跨机房部署时,由于zookeeper的服务器存活机制严重依赖网络,当出现网络割裂、抖动的情况致使临时节点被误删除,使得上、下游服务误认为对端服务器有问题,从而导致事故。发明内容本发明要解决的技术问题是为了克服现有技术中zookeeper的服务器存活机制严重依赖网络,当出现网络割裂、抖动的情况致使临时节点被误删除,使得上、下游服务认为对端服务器有问题,从而导致事故的缺陷,提供一种程序关联关系的解耦系统和方法。本发明是通过下述技术方案来解决上述技术问题:一种程序关联关系的解耦系统,所述解耦系统包括:第一通信库、第一服务器和至少一第二服务器;所述第一服务器用于运行第一分布式程序;每台第二服务器用于运行至少一第二分布式程序;所述第一分布式程序用于调用所述第一通信库监听目标第二分布式程序;所述第一通信库用于获取所述目标第二分布式程序的程序信息;所述程序信息包括目标第二服务器的IP地址和目标第二分布式程序的端口信息;所述第一通信库还用于根据所述程序信息发送探活包至所述目标第二分布式程序,以检测所述第一分布式程序和所述目标第二分布式程序之间的通信状态。较佳地,所述解耦系统还包括网关、数据库和至少一第二通信库;所述第一分布式程序还用于调用所述第一通信库发送第一注册请求至所述网关;所述第一注册请求包括第一程序信息;所述第一程序信息包括所述第一服务器的IP地址和所述第一分布式程序的端口信息;所述网关用于在接收到所述第一注册请求时,将所述第一服务器的IP地址和所述第一分布式程序的端口信息存储于所述数据库中;和或,每则第二分布式程序用于调用第二通信库发送第二注册请求至所述网关;所述第二注册请求包括第二程序信息;所述第二程序信息包括所述第二服务器的IP地址和所述第二分布式程序的端口信息;所述网关还用于在接收到所述第二注册请求时,将所述第二服务器的IP地址和所述第二分布式程序的端口信息存储于所述数据库中。较佳地,所述第一通信库包括:程序信息获取单元;所述程序信息获取单元用于通过所述网关从所述数据库中周期获取程序信息,并缓存于本地。本方案中,第一通信库包含探活功能点,即定期发送探活包至目标第二分布式程序。较佳地,所述第一通信库还包括:筛选单元和发送单元;所述筛选单元用于在接收到所述第一分布式程序发送的访问请求时,根据所述访问请求从程序信息中筛选出目标程序信息;所述发送单元用于将所述目标程序信息发送给所述第一分布式程序。较佳地,所述第一分布式程序还用于将通信状态结果反馈至所述第一通信库;所述第一通信库还用于根据所述通信状态结果更新本地缓存的程序信息,并通过所述网关更新所述数据库中的程序信息。较佳地,所述数据库为MySQL数据库。本发明还提供一种程序关联关系的解耦方法,所述解耦方法利用解耦系统实现,所述解耦系统包括第一通信库、第一服务器和至少一第二服务器;所述第一服务器用于运行第一分布式程序;所述第二服务器用于运行至少一第二分布式程序;所述解耦方法包括以下步骤:S1、所述第一分布式程序调用所述第一通信库监听目标第二分布式程序;S2、所述第一通信库获取所述目标第二分布式程序的程序信息;所述程序信息包括目标第二服务器的IP地址和目标第二分布式程序的端口信息;S3、所述第一通信库根据所述程序信息发送探活包至所述目标第二分布式程序,以检测所述第一分布式程序和所述目标第二分布式程序之间的通信状态。较佳地,所述解耦系统还包括网关、数据库和至少一第二通信库;在步骤S1之前,所述解耦方法还包括:所述第一分布式程序调用所述第一通信库发送第一注册请求至所述网关;所述第一注册请求包括第一程序信息;所述第一程序信息包括所述第一服务器的IP地址和所述第一分布式程序的端口信息;所述网关在接收到所述第一注册请求时,将所述第一服务器的IP地址和所述第一分布式程序的端口信息存储于所述数据库中;和或,每则第二分布式程序调用第二通信库发送第二注册请求至所述网关;所述第二注册请求包括第二程序信息;所述第二程序信息包括所述第二服务器的IP地址和所述第二分布式程序的端口信息;所述网关在接收到所述第二注册请求时,将所述第二服务器的IP地址和所述第二分布式程序的端口信息存储于所述数据库中。较佳地,步骤S2,具体包括:所述第一通信库通过所述网关从所述数据库中周期获取程序信息,并缓存于本地。本方案中,第一通信库包含探活功能点,即定期发送探活包至目标第二分布式程序。较佳地,所述解耦方法还包括:所述第一通信库在接收到所述第一分布式程序发送的访问请求时,根据所述访问请求从程序信息中筛选出目标程序信息,并发送给所述第一分布式程序。较佳地,步骤S3之后,所述解耦方法还包括:S4、所述第一分布式程序将通信状态结果反馈至所述第一通信库;S5、所述第一通信库根据所述通信状态结果更新本地缓存的程序信息,并通过所述网关更新所述数据库中的程序信息。较佳地,所述数据库为MySQL数据库。本发明的积极进步效果在于:本发明中实现上下游程序的关联关系的解耦无需依赖zookeeper,上下游程序处于同样的环境,从而避免了因网络异常造成的上下游关联关系的误判断,探测准确度大大提高,进而提高了系统的稳定性。附图说明图1为本发明实施例1的程序关联关系的解耦系统的模块示意图。图2为本发明实施例1的程序关联关系的解耦系统中的第一通讯库的模块示意图。图3为本发明实施例2的程序关联关系的解耦方法的流程图。具体实施方式下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。为了更好的理解本发明相对于与现有技术所作出的改进,在对本发明的具体实施方式进行详细说明之前首先对解耦系统的设备布局进行说明。解耦系统中的设备包括网关、数据库、多台服务器和多个通信库。每台服务器中运行至少一则分布式程序,每则分布式程序对应一个通信库。分布式程序也可以运行于多台不同的服务器中。根据分布式程序的功能不同,一则分布式程序可以访问另一些分布式程序,也可以被访问。例如,在线销售过程中,电子商务程序可以访问支付程序,此时电子商务程序相当于上游程序,支付程序相当于是下游程序。下面通过以下实施例对解耦系统的具体结构和解耦方法进行说明。为了便于说明,以下实施例中选择一则程序该程序具有访问其他程序的权限作为第一分布式程序,将运行于服务器中的除第一分布式程序之外的所有程序称为第二分布式程序。实施例1如图1所示,本实施例中的程序关联关系的解耦系统包括:第一服务器1、第二服务器2、第一通信库3、第二通信库4、网关5和数据库6。第一服务器用于运行第一分布式程序,第二服务器用于运行第二分布式程序,当然第二分布式程序也可运行于第一服务器中。如果程序希望被访问,则需要进行注册,也即将程序的程序信息存储于数据库中。例如,若第一分布式程序希望被访问,则第一分布式程序调用第一通信库发送第一注册请求至网关。其中,第一注册请求包括第一服务器的IP地址和第一分布式程序的端口信息,当然还可以包括程序名和功能描述程序功能可以包括程序的访问权限,即可被哪些上游程序访问,可访问哪些下游程序等信息。网关在接收到第一注册请求时,将第一服务器的IP地址和第一分布式程序的端口信息存储于数据库中,完成第一分布式程序的注册。若第二分布式程序希望被访问,则第二分布式程序调用第二通信库发送第二注册请求至网关。其中,第二注册请求包括第二服务器的IP地址和第二分布式程序的端口信息,第二注册请求也可包括第二分布式程序的程序名和功能描述等信息。网关在接收到第二注册请求时,将第二服务器的IP地址和第二分布式程序的端口信息存储于数据库中,完成第二分布式程序的注册。当然,多则程序可同时进行注册。需要说明的是,程序进行注册时,网关在接收到第一注册请求和第二注册请求时,还需要对其进行鉴权,若鉴权失败则返回错误码,若鉴权成功,网关进一步判断数据库中是否已经存储有发送注册请求的程序的程序信息,若存在,则根据最新接收到的注册请求更新原程序信息;若不存在,则将发送注册请求的程序的程序信息写入数据库中,完成程序信息的注册。本实施例中,也可设置程序注册的次数,若程序第一次注册失败,可尝试第二次注册,直至注册达到预设的注册次数,程序还未注册成功,则返回注册失败信息。进行注册之后,可实现程序之间关联关系的解耦,实现程序相互之间的访问,具体的:第一分布式程序调用第一通信库监听目标第二分布式程序。也即第一分布式程序告知通信库,其需要访问的下游程序。第一通信库获取目标第二分布式程序的程序信息。其中,程序信息包括目标第二服务器的IP地址和目标第二分布式程序的端口信息。目标第二分布式程序也即第一分布式程序的所有下游程序,目标第二服务器也即运行有该下游程序的服务器。第一通信库在接收到程序信息后,根据其获得的程序信息发送探活包至目标第二分布式程序,以检测第一分布式程序和目标第二分布式程序之间的通信状态。其中,第一通信库包含探活功能点,定期发起探测,从而实现定期的维护本地分布式程序的机器列表的存活关系程序信息,检查自身程序和目标程序之间的通信状态,解决当下游出现异常时,自动摘除异常机器,从而实现上下游关联关系解耦。具体的,如图2所示,第一通信库包括:程序信息获取单元31。程序信息获取单元31通过网关从数据库中周期周期可根据实际需求自行设置获取程序信息,并缓存于本地。该程序信息可以列表的形式呈现,该列表属于全量信息,包含所有第一分布式程序想要访问的下游程序的程序信息包括正常和异常。本实施例中,实现上下游程序的关联关系的解耦无需依赖zookeeper,上下游程序处于同样的环境,从而避免了因网络异常造成的上下游关联关系的误判断,探测准确度大大提高,进而提高了系统的稳定性。本实施例中,具体的,探活机制具体可采用默认为ping主机存活+Telnet端口存活的方式,也可以根据用户的协议信息进行扩展,比如是http协议,可以直接访问对端http的协议请求,如果发现探测对端第二服务器出现异常,则将本地程序缓存第一通信库中该IP+端口的状态更新为异常;如果正常,则标记本地程序缓存中该IP+端口的状态为正常。其中,探活机制可采取周期执行也即第一通信库定期发送探活包至下游程序的方式,且探活的周期和获取程序信息的周期越短,可获得更好的时效性,探测结果越正确,系统越稳定。本实施例中,数据库选用MySQL数据库,其存储的程序信息的格式可以但不限于是:{程序名:服务器的IP地址+程序的端口信息}。从而,程序无需通过域名可直接访问其他程序,访问效率较高。实现了自动进行关联关系调整的效果,简化了由于服务器变更,程序扩容、缩容而需要修改数据库中的程序信息的配置工作。更佳的,第一程序可以将通信的状态更新给通信库,使得下游探测更加稳定可靠。本实施例中,第一通信库还包括:筛选单元32和发送单元33。当第一分布式程序需要访问下游程序时,则会发送访问请求至第一通信库。筛选单元32在接收到访问请求时,根据访问请求从缓存于本地的程序信息中筛选出目标程序信息。目标程序信息已过滤掉故障的程序信息包括第一分布式程序当前想要访问的下游程序的端口信息和运行该下游程序的服务器的IP地址。发送单元则将目标程序信息发送给第一分布式程序。从而,第一分布式程序则可根据接收到的目标程序信息与下游程序建立通信,实现访问。若第一通信库发现本地缓存的程序信息中没有第一分布式程序当前要访问的下游程序的目标程序信息,则同步调用网关获取目标程序信息,然后返回给第一分布式程序。本实施例中,第一分布式程序还可将通信状态结果反馈至第一通信库。第一通信库则可根据通信状态结果更新本地缓存的程序信息,并通过网关更新数据库中的程序信息。需要说明的是,第二通信库的结构与第一通信库的结构类似,第二通信库也能实现第一通信库的相关功能,也即第二分布式程序作为上游程序时能通过第二通信库获得其下游程序的端口信息和运行下游程序的服务器的IP地址,从而实现访问下游程序。本实施例中,分布式程序也可通过信息库发送查询请求至网关,网关可根据查询请求将分布式程序需要访问的其他程序的程序信息反馈给分布式程序。当然,网关在执行查询动作前,也可对查询请求进行鉴权,在鉴权通过后执行查询动作。实施例2本实施例提供一种程序关联关系的解耦方法,该解耦方法利用实施例1中的解耦系统实现,如图3所示,本实施例中的解耦方法包括以下步骤:步骤101、第一分布式程序和第二分布式程序完成程序信息的注册。具体的,步骤101具体包括:步骤101-1、第一分布式程序调用第一通信库发送第一注册请求至网关;和或,第二分布式程序调用第二通信库发送第二注册请求至网关。其中,第一注册请求包括第一服务器的IP地址和第一分布式程序的端口信息,还可包括第一分布式程序的程序名和功能描述等信息。第二注册请求包括第二服务器的IP地址和第二分布式程序的端口信息,还可包括第二分布式程序的程序名和功能描述等信息。其中,程序的描述可以包括程序的访问权限,即可被哪些上游程序访问,可访问哪些下游程序。步骤101-2、网关在接收到第一注册请求时,将第一服务器的IP地址和第一分布式程序的端口信息存储于数据库中;在接收到第二注册请求时,将第二服务器的IP地址和第二分布式程序的端口信息存储于数据库中。从而完成程序的注册后,注册后的程序可被访问,也可根据访问权限访问其他程序。本实施例中,数据库为MySQL数据库,存储于其中的程序信息可以以列表的形式呈现,格式可以但不限于是:{程序名:服务器的IP地址+程序的端口信息}。从而,程序无需通过域名可直接访问其他程序,访问效率较高。实现了自动进行关联关系调整的效果,简化了由于服务器变更,程序扩容、缩容而需要修改数据库中的程序信息的配置工作。步骤102、第一分布式程序调用第一通信库监听目标第二分布式程序。也即第一分布式程序告知通信库,其需要访问的第二分布式程序。步骤103、第一通信库获取目标第二分布式程序的程序信息。其中,程序信息包括目标第二服务器的IP地址和目标第二分布式程序的端口信息。目标第二分布式程序也即第一分布式程序的所有下游程序,目标第二服务器也即运行该下游程序的服务器。本实施例中,第一通信库从数据库中周期获取程序信息,并缓存于本地。该程序信息可以列表的形式呈现,该列表属于全量信息,包含正常和异常的程序信息。步骤104、第一通信库根据程序信息发送探活包至第二分布式程序,以检测第一分布式程序和第二分布式程序之间的通信状态。其中,第一通信库包含探活功能点,定期发起探测,从而实现定期的维护本地分布式程序的机器列表的存活关系程序信息,检查自身程序和目标程序之间的通信状态,解决当下游出现异常时,自动摘除异常机器,从而解决上下游关联关系解耦的问题。本实施例中,实现上下游程序的关联关系的解耦无需依赖zookeeper,两者处于同样的环境,从而避免了因网络异常造成的上下游关联关系的误判断,探测准确度大大提高,进而提高了系统的稳定性。当第一分布式程序需要访问下游程序时,第一分布式程序发送访问请求至第一通信库。第一通信库在接收到访问请求时,根据访问请求从缓存于本地的最新获取的程序信息中筛选出目标程序信息,并发送给第一分布式程序。第一分布式程序则可根据目标程序信息与下游程序建立通信,实现访问。其中,目标程序信息已过滤掉故障的程序信息包括第一分布式程序当前想要访问的下游程序的端口信息和运行该下游程序的服务器的IP地址。若第一通信库发现本地缓存的程序信息中没有第一分布式程序当前要访问的下游程序的目标程序信息,则同步调用网关获取目标程序信息,然后返回给第一分布式程序。本实施例中,解耦方法还可包括:步骤105、第一分布式程序将通信状态结果反馈至第一通信库。步骤106、第一通信库根据通信状态结果更新本地缓存的程序信息并通过网关更新数据库中的程序信息。虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

权利要求:1.一种程序关联关系的解耦系统,其特征在于,所述解耦系统包括:第一通信库、第一服务器和至少一第二服务器;所述第一服务器用于运行第一分布式程序;所述至少一第二服务器用于运行第二分布式程序;所述第一分布式程序用于调用所述第一通信库监听目标第二分布式程序;所述第一通信库用于获取所述目标第二分布式程序的程序信息;所述程序信息包括目标第二服务器的IP地址和目标第二分布式程序的端口信息;所述第一通信库还用于根据所述程序信息发送探活包至所述目标第二分布式程序,以检测所述第一分布式程序与所述目标第二分布式程序之间的通信状态。2.如权利要求1所述的解耦系统,其特征在于,所述解耦系统还包括网关、数据库和至少一第二通信库;所述第一分布式程序还用于调用所述第一通信库发送第一注册请求至所述网关;所述第一注册请求包括第一程序信息;所述第一程序信息包括所述第一服务器的IP地址和所述第一分布式程序的端口信息;所述网关用于在接收到所述第一注册请求时,将所述第一服务器的IP地址和所述第一分布式程序的端口信息存储于所述数据库中;和或,每则第二分布式程序用于调用第二通信库发送第二注册请求至所述网关;所述第二注册请求包括第二程序信息;所述第二程序信息包括所述第二服务器的IP地址和所述第二分布式程序的端口信息;所述网关还用于在接收到所述第二注册请求时,将所述第二服务器的IP地址和所述第二分布式程序的端口信息存储于所述数据库中。3.如权利要求2所述的解耦系统,其特征在于,所述第一通信库包括:程序信息获取单元;所述程序信息获取单元用于通过所述网关从所述数据库中周期获取程序信息,并缓存于本地。4.如权利要求3所述的解耦系统,其特征在于,所述第一通信库还包括:筛选单元和发送单元;所述筛选单元用于在接收到所述第一分布式程序发送的访问请求时,根据所述访问请求从程序信息中筛选出目标程序信息;所述发送单元用于将所述目标程序信息发送给所述第一分布式程序。5.如权利要求3所述的解耦系统,其特征在于,所述第一分布式程序还用于将通信状态结果反馈至所述第一通信库;所述第一通信库还用于根据所述通信状态结果更新本地缓存的程序信息,并通过所述网关更新所述数据库中的程序信息。6.如权利要求2-5中任意一项所述的解耦系统,其特征在于,所述数据库为MySQL数据库。7.一种程序关联关系的解耦方法,其特征在于,所述解耦方法利用解耦系统实现,所述解耦系统包括第一通信库、第一服务器和至少一第二服务器;所述第一服务器用于运行第一分布式程序;所述至少一第二服务器用于运行第二分布式程序;所述解耦方法包括以下步骤:S1、所述第一分布式程序调用所述第一通信库监听目标第二分布式程序;S2、所述第一通信库获取所述目标第二分布式程序的程序信息;所述程序信息包括目标第二服务器的IP地址和目标第二分布式程序的端口信息;S3、所述第一通信库根据所述程序信息发送探活包至所述目标第二分布式程序,以检测所述第一分布式程序和所述目标第二分布式程序之间的通信状态。8.如权利要求7所述的解耦方法,其特征在于,所述解耦系统还包括网关、数据库和至少一第二通信库;在步骤S1之前,所述解耦方法还包括:所述第一分布式程序调用所述第一通信库发送第一注册请求至所述网关;所述第一注册请求包括第一程序信息;所述第一程序信息包括所述第一服务器的IP地址和所述第一分布式程序的端口信息;所述网关在接收到所述第一注册请求时,将所述第一服务器的IP地址和所述第一分布式程序的端口信息存储于所述数据库中;和或,每则第二分布式程序调用第二通信库发送第二注册请求至所述网关;所述第二注册请求包括第二程序信息;所述第二程序信息包括所述第二服务器的IP地址和所述第二分布式程序的端口信息;所述网关在接收到所述第二注册请求时,将所述第二服务器的IP地址和所述第二分布式程序的端口信息存储于所述数据库中。9.如权利要求8所述的解耦方法,其特征在于,步骤S2具体包括:所述第一通信库通过所述网关从所述数据库中周期获取程序信息,并缓存于本地。10.如权利要求9所述的解耦方法,其特征在于,所述解耦方法还包括:所述第一通信库在接收到所述第一分布式程序发送的访问请求时,根据所述访问请求从程序信息中筛选出目标程序信息,并发送给所述第一分布式程序。11.如权利要求9所述的解耦方法,其特征在于,步骤S3之后,所述解耦方法还包括:S4、所述第一分布式程序将通信状态结果反馈至所述第一通信库;S5、所述第一通信库根据所述通信状态结果更新本地缓存的程序信息,并通过所述网关更新所述数据库中的程序信息。12.如权利要求8-11中任意一项所述的解耦方法,其特征在于,所述数据库为MySQL数据库。

百度查询: 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 程序关联关系的解耦系统和方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。