数据虚拟化:多源异构数据集成之道
上QQ阅读APP看书,第一时间看更新

1.2 DaaS

1.2.1 DaaS的历史

现在数据的来源各种各样,比如互联网企业、SNS、微博、视频网站、电子商务网站、物联网、移动设备、终端中的商品、个人位置、传感器采集的数据、传统电信运营商及互联网运营商、天文望远镜拍摄的图像、视频数据、气象学里的卫星云图数据等。这些数据的拥有者,可以通过大数据相关技术,如分析技术、存储技术、计算技术等发掘数据中的价值,从而提供服务。

随着网络通信速率的倍增、相应的应用系统的日益复杂,为企业及个人用户提供标准化、可扩展且与规模无关、可动态配置、容错和自我管理的应用成为迫切的需求,以Web服务为中心的云计算模式满足了这一需求,并衍生出了基础架构即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service, PaaS)、DaaS和软件即服务(Software as a Service,SaaS)4种商业模式。DaaS以服务的方式提供数据存储、查询处理、访问控制、数据备份等功能,并且使数据拥有者免于IT设施(包括硬件、网络和相应的软件)的维护,它的出现迅速受到热烈追捧。传统的Web服务是通过封装应用程序访问数据,而数据服务则是直接对底层数据进行封装。

数据即服务能够为数据服务的消费者提供动态、按需、自动化的存储、处理、分析、可视化等服务,它是一种数据使用模式,是在对数据统一建模的基础上,将各类数据操作进行封装,对外提供无处不在的、标准化的、按需的检索、分析或可视化服务交付。

目前对外提供数据服务的既有政府、企业,也有科研机构,其提供的数据服务集中在3个方面,分别是数据查询/验证服务、面向企业的数据分析服务和数据集市。

(1)数据查询/验证服务

该类服务主要提供数据搜索服务,或者基于底层数据源为用户提供验证服务,如客户地址验证、E-mail验证、金融数据服务等。典型的有谷歌提供的BigQuery搜索服务;StrikeIron、Xignite、ServiceObjects.NET、WebServiceX、XWebServices等为网站提供的金融、电子商务、通信类验证服务。

(2)面向企业的数据分析服务

该类服务是以帮助企业分析数据为目的的服务,其数据来源可能是企业数据,也可能是企业数据与互联网数据的融合。例如,Precog[3]提供大数据分析服务,可以从各种数据源抓取输入数据,同时还使用人群统计、态度、位置和其他信息使数据更为丰富,最后综合进行分析;埃森哲也提供一站式数据分析解决方案;量子恒道和“淘师爷”都是针对淘宝卖家提供电子商务数据的分析,帮助卖家提高销售量。这类分析服务提供的方式实际上仍然是由服务提供商通过自己的分析系统帮助数据拥有者分析数据,而不是为有分析需求的用户提供一个分析数据的环境。

(3)数据集市

该类服务是以数据提供和数据下载为目的的数据服务。例如,美国政府通过Data.gov[4]向公众提供各类政府数据,Amazon在AWS基础上提供公共数据集服务,实时数据交易网站(Factual.com)[5]以数据服务的形式向应用软件开发商和内容发布商提供高品质低成本的数据,数据堂(Datatang.com)提供科研数据共享服务。

随着技术与需求的不断发展,数据服务的内容和形式也越来越多样。数据服务是随着面向服务架构(SOA)技术的发展而发展起来的,尤其是数据服务层作为SOA的重要组成部分,在数据集成、共享等相关领域有着非常重要的作用。一方面,数据服务可以看作数据集成平台中具有特定功能和结构的自包含、自描述、可复用的功能模块。在 SOA 中,数据服务层通过提供标准的 API 来提供数据服务。而另一方面,数据集成平台可以为数据服务发布Web服务接口,使集成的数据能够被不同网络应用共享。

数据服务已经在各行各业得到了一定的发展,目前在不同的领域内或数据服务的视线中,数据服务还没有统一的定义,但是大部分的观念都认为数据服务是能够通过网络实现数据的管理、访问、集成、共享、互操作、信息提取等功能的服务。DaaS字面意思为数据即服务,即把大数据中潜在的价值发掘出来,根据用户的需求提供服务。数据即服务应该包含多层含义。首先,可以为用户提供公共数据的访问服务,用户可以随时访问任何内容的数据。例如,一个用户想查看过去10年的天气情况,数据服务提供者就可以给用户提供过去10年的天气情况。对于这种数据服务,可以按不同国家、地区、季度、月份提供数据。因此,公共数据的访问是灵活的、多角度的、全方位的。其次,可以为用户提供数据中潜在的价值信息服务。例如,一个具有全球连锁店的汽车销售企业,可以向数据服务提供商购买这样的服务:全球不同国家、地区的人们购买汽车的情况,其中可包括哪里的人喜欢买什么品牌的汽车、汽车风格和人的职业之间的关系等。获取这样的数据服务后,汽车销售企业就可以根据具体情况安排销售计划。

1.2.2 DaaS的定义

DaaS是SaaS的孪生兄弟,作为“as a Service”家族成员之一,它将数据作为一种商品提供给任何有需求的组织或个人。数据即服务是指与数据相关的任何服务都能够发生在一个集中化的位置,如聚合、数据质量管理、数据清洗等,然后再将数据提供给不同的系统和用户,而无须考虑这些数据来自哪些数据源,用户和业务系统所需的数据通过统一方式进行访问。在系统架构模型中,数据服务位于底层数据源和上层应用系统之间,将用户和底层复杂的异构、分布式数据源相隔离。

通常,要让被动数据源主动对外服务,一般需要借助一个被称为数据源“本地数据服务代理”的对象来实现,简称“源代理”。它是数据源所述网络节点或局域网上一个可独立运行的服务对象,至少具备两个功能: ① 能够根据本地数据源的“特性和能力”,主动对外发布数据服务; ② 当外界根据源代理已发布的数据服务信息,向源代理发出指定服务请求时,源代理能够从由其代理的数据源中提取出相关的数据,并能根据外界数据标准进行一定的规范变换,然后提交给外界请求对象。具体的方式是将每个“异构数据获取与处理描述分组”封装为一个数据服务单元,这样就可以将局域网范围内的一个或多个数据源,抽象为一组数据服务单元,其中每个数据服务单元相当于针对数据源的一个预处理查询,不仅可以被执行,而且可以对外发布。

DaaS是传统Web服务和数据管理技术的结合物。与传统Web服务不同,DaaS以统一的方式将各个异构数据源进行封装和描述,实现了跨域数据的集成。目前在数据服务领域已产生诸多研究成果。例如,Carey等[6]提出一个数据服务架构,认为数据服务架构由数据存储、模型映射、外部模型、服务消费方法、数据/元数据请求和操作结果数据等部分构成;文献[7]中定义数据服务模型包括服务输入、输出、内容描述和约束4部分,此外还通过语义网技术对关系数据的数据服务进行描述;文献[8]观察了AERS和Amazon上的7个数据服务提供商的29个数据服务,阐述了数据服务的关注点。在工业界也有成熟的面向企业的数据服务架构:微软公司推出Windows通信开发平台数据服务(Windows Communication Foundation Data Service,WCF DS)[9]框架,WCF DS 通过实现开放数据协议(Open Data protocol,OData)将数据服务的建立过程标准化,服务消费者可以通过GET、PUT、POST和DELETE等标准的HTTP访问或者更改数据;Oracle公司的Oracle数据服务集成器(Oracle Data Service Integrator,ODSI) [10]支持集成多个数据源的数据服务平台,ODSI 数据服务将读、写、创建、更新和删除信息的逻辑封装起来,使用户不必分别与格式多样的数据源和连接机制直接交互。可以看出,数据服务在一定程度上解决了结构化数据跨域共享和统一操作的问题。

1.2.3 服务

DaaS中服务的概念来自于SOA,维基百科(2011年12月19日)对SOA定义为一个面向服务的架构,是一个用于将软件以互操作形式进行设计和开发的规则和方法的集合。

服务是SOA的核心构建单元,通过将服务网络中的应用程序或被发布的能够完成完整功能的模块进行服务化封装,利用服务过程约定的相关契约进行数据与逻辑能力交互。同时可以根据需求将一系列服务根据标准的服务接口契约进行组合,形成具备复杂逻辑处理的集群服务,这种集群形态的服务称为面向服务集成(Service Oriented Integrate,SOI),其中的服务具备自身的独立特性,相互间的影响极为有限,因而具有很强的扩展性。

在SOA中,由3个角色定义服务的流转流程,分别是服务提供者、服务注册中心与服务请求者,通过服务发布、搜索、绑定机制进行服务执行。在流程中,执行的服务由于具备松耦合、粗粒度、自治与异步运行等特征,因此保持了服务架构的简单、动态与开放的特点,是系统集成与应用协作的首选技术,如图1-2所示。

图1-2 Web服务体系

服务间采用简单对象访问协议(Simple Object Access Protocol,SOAP)作为标准的协议规范进行信息交互,以XML格式对SOAP进行表示,具备很强的通用性。通过Web服务描述语言(Web Service Description Language,WSDL)对服务内容与状态进行描述,包括对于服务通信协议、服务内容、结构和服务内数据格式等内容的说明信息,通过WSDL,服务请求者和服务提供者可以进行有效的识别,从而完成进一步的相互操作。服务之间通过注册、发布的机制进行联系与使用,利用统一描述、发现与集成(Universal Description Discovery and Integration, UDDI)服务完成服务的查询、绑定与调用过程。

在文献[11]中,Boris Lublinsky对一个服务的描述如下。

每一个服务代表一定数量的功能。在最简单的情况下,一个服务可以被定义为一个自包含的、独立开发、部署、管理以及维护的软件实现,以“集成”设计的方式作为一个整体以支持某个企业与业务相关的功能。

因此,一个服务代表商业逻辑。这在一定程度上可以很简单,如设置某个特定的 DVD 的状态为中断(Discontinued)或者检索某个特定消费者的 DVD 租赁列表。但是,一个服务在某种程度上也可能是比较复杂的,如订购在销售榜排名前十的DVD的拷贝。

开发新的系统用于产生服务,或者将这些服务联系在一起以形成一个服务网络,在这个网络中,它们可以互相调用,如图1-3所示,与开发一个类相比,庞大应用所需要的逻辑都可以被编程在一个应用中。由于一个SOA包含了自包含的服务,因此可以对服务进行改变而不会影响整个系统。这种方式将会获得一个非常灵活的系统。

图1-3 不同的服务联系在一起以形成一个服务网络

一个服务有两种特点。一个特点是,每个服务都有一个定义好的、明确的接口。在某种程度上,该接口定义了这个服务。例如,在一个医疗环境中,一个服务接口的输入部分可能是一个病人的号码,而它的输出将会是一份完整的病人文件,包含地址信息、处方药的信息、X 光信息以及某特定医生的文本信息。正如所描述的那样,该接口明确地定义了这个服务能够做什么——它检索某个特性病人的信息。输入和输出称为逻辑接口。

为了能够调用一个服务,还需要一个技术接口,该接口通常包含一个应用程序接口(Application Programming Interface,API)以及用于描述能够被该服务处理的消息格式语言。典型API的例子,如HTTP,使用SOAP作为消息格式语言(SOAP 是一种特殊的 XML)。另一个例子是 HTTP 中使用了表述性状态传递(Representational State Transfer,REST)以及JSON作为消息格式语言,可参考文献[12]以获得关于REST以及JSON的描述。

另一个特点是,一个服务通过它的接口隐藏了内部的工作情况,执行了哪些商业逻辑,它们是如何被执行的,以及如何实现的。例如,一个服务可能用一段Java或者C#代码执行计算任务,也可能用一些结构化查询语句(Structured Query Language,SQL)代码从数据存储区检索数据,访问 Cobol 语言写的一个遗留应用的内部程序或功能的接口。图1-4所示为服务可以访问的资源类型,另外有些服务调用其他服务,而有些服务则什么也不访问,只是独自运行。无论某个服务是怎样实现的,对于消费者而言,服务将这些完全隐藏了。换句话说,通过它们的接口,服务提供了封装以及抽象。

图1-4 服务可以访问的资源类型

目前存在许多不同的方法来开发服务。所有的代码都需要手动完成,这也是目前劳动密集程度最高的方法,因为开发者不得不开发所有的逻辑以及服务需要的代码,从而和其他的模块通信。更有创造性的方法是通过部署企业服务总线(ESB)。通常,ESB 是一个支持某些技术的产品,该技术可以在服务之间来回安全传递消息,可以更容易地创建服务接口等。多个供应商需要ESB,包括IBM、JBoss、Microsoft、Oracle、Progress以及SAP。

1.2.4 服务的分类

服务可以按照不同的方式分类。一种方式是基于它们所处的服务网络以及它们所能够提供的功能。下面描述以下4类服务:基础服务、业务流程服务、组合服务及数据服务。

基础服务:基础服务(有时也称为原始服务)提供到已有应用或其他类型系统的入口点。这些服务运行模块、功能、过程或者组件使内部已有的应用被调用。例如,一个基础服务可以调用一个Java组件检索某个消费者的地址,或者检索某个确定产品现有库存级别旧Cobol应用程序的一部分。

对于一个基础服务而言,它的技术接口与其内部应用所调用的接口类似且并不罕见。这种类型的接口有时又被称为面向参数的接口或者面向值的接口。接口的输入包含一个或多个值,输入也包含一系列的值。例如,一个基本的服务可以将发布DVD的关键字作为输入,而把标题作为输出。

基础服务隐藏了由应用所提供的真实技术接口。从应用中得到的结果可能包含错误的代码、值和结构。因此,这些数据需要被转换。另外,基础服务负责产生服务的输出。所有的基础服务一起向所有的资源提供了一个标准的接口(逻辑的以及技术的),使其对这些应用逻辑的调用和重用变得更方便。

业务流程服务:业务流程服务形成了服务网络的最顶层。相应的例子有对一个输入订单的处理、一个新员工的雇佣流程以及货物的运输。这些服务通常由业务流程引擎来执行。它们代表了一个公司真实的业务流程。并不是所有的SOA项目都包含这一层面的服务。

组合服务:这一组服务形成了服务网络的中间层。通常,组合服务位于业务流程服务以及基础服务之间。这种组合服务存在的原因是粒度。业务处理流程需要访问存储的数据以及已有应用提供的功能。从技术上讲,业务流程服务直接调用基础服务是可行的。然而,正如所说的那样,基础服务的接口可能非常技术化以及细节化,这就意味着需要添加很大一部分代码到业务处理服务上,以调用基础服务。另外,在多个业务流程服务中,有很大一部分的这类代码是重复的。为了避免这个问题,引入一个包含组合服务的服务中间层。组合服务通常提供一个接口,该接口面向业务流程服务的需求。组合服务提供了一个面向文档的接口。作为比较,一个基础服务返回一个病人的地址,而一个组合服务返回一个完整的病历文件。因此,一个组合服务拥有一个比基础服务更高粒度的接口。

为了建立更多面向文档的接口,一个组合服务访问多个基础服务并组合来自多个应用的数据是很常见的,这也是名字“组合”的来源。换句话说,组合服务负责将来自多个服务和系统的数据进行联合。

1.2.5 数据服务

传统的数据服务指的是数据操作密集型Web服务,它们对服务消费者提供接入数据资源的子口,对内则将数据源及操作进行封装,并对来自服务消费者的搜索和分析请求进行处理。对企业来说,数据通常被存储在多个应用系统中,如果想要调用数据,就需要分别连接应用的数据存储系统。然而,数据服务方式通过提供一个抽象层,为数据消费者隔离了异构数据源的复杂性,使其能够以统一的方式访问或更新数据。目前而言,数据服务的典型场景是数据所有者以数据服务的形式将数据开发,具有相应权限的用户、客户端和应用程序即可通过数据服务对数据进行访问和操作。

数据服务在某种程度上和基础服务是类似的,这一相似点在于它们都位于服务网络的底层。然而,其不同在于,数据服务(正如它的名字所建议的那样)用于数据的查询和处理;基础服务用于访问应用(如果技术上可行的话),而数据服务在大多数情况下直接访问数据存储区并且直接绕过应用。除了从数据存储区里调用数据,数据服务也负责对数据值进行清洗或转换为用户希望以及需要的一种结果。它同样也为一个服务的结果分配一种结构。

数据服务的内容包括以下几点:数据源的元数据、数据源的连接配置、数据服务查询脚本、数据服务间的依赖关系、数据服务的元数据以及权限控制和安全策略。从图1-4中可以看出,数据服务对用户屏蔽了数据访问的细节,为用户提供了一个虚拟的全局数据视图,网络用户可以通过数据集成平台系统提供的统一接口对集成数据进行访问,而且数据服务是数据集成平台中各个模块的核心,可以将数据服务开发工具以及数据服务管理平台联系起来。

数据服务可以从多个角度进行分类,具体分类如下。

① 从对数据源的操作角度,数据服务可以分为只读型数据服务和操作型数据服务。只读型数据服务是以提供数据资源内容读取为目的的服务,这样的服务并不对源数据进行任何操作;而操作型数据服务不仅支持对源数据进行增、删、改、查等操作,通常还处于企业业务流程的某一环,并且用于与其他业务型Web服务进行交互结合。

② 从数据源的个数角度,数据服务可以分为单数据源数据服务和多数据源数据服务。单数据源数据服务,即一个数据服务对应一个数据源(关系型数据库或者非结构化数据存储系统)。多数据源数据服务则是继承了多个数据源,这些数据源可以是同构的,也可以是异质的。这样,从服务消费者的角度来看,数据是一个数据源,而不是逐个面对各种不同模式和接口的数据源。

数据服务与传统Web服务存在多方面差别,具体如下。

(1)输入输出需求不同

一般的 Web 服务需要事先规定输入和输出,以便多个 Web 服务之间按照业务流程进行组合;而对于数据服务而言,针对消费者的多样化访问请求,数据服务应能够采取灵活的方式描述服务和动态产生满足需求的新数据服务。

(2)关键技术不同

传统Web服务关键技术包括服务建模、服务组织和管理、服务组合、服务提供等。而数据服务关键技术不仅包括服务建模、服务组合,还有服务应用,尤其是与数据特征相关的应用,如查询、分析和可视化。

(3)服务流程不同

传统 Web 服务流程包括服务建模、服务注册、服务组合/分解、服务调用等,数据服务的流程是服务操作请求、请求分解/请求重写、服务建模、查询/分析请求执行、结果组装。显然,数据服务是以数据应用需求为导向。

1.2.6 数据服务及其架构

在数据服务架构中,较为成熟的是微软公司的WCF DS和Oracle公司的OSDI。

1. WCF DS

WCF DS(原ADO.NET数据服务框架)是微软公司的数据服务框架。

与WCF DS相关的OData是微软公司设计的一种用来查询和更新数据的开源Web协议,通过它可以把存储在应用程序中的数据暴露出来。OData的外部模型使用实体数据模型(Entity Data Model,EDM),该模型是一个扩展了E-R模型的对象模型。在 EDM 中,实体表示应用程序域中作为数据类型的数据操作单元,如客户、订单、项目和产品。EDM提供一种声明式映射语言来生成EDM并映射成给定的关系型数据库模式。WCF DS通过实现OData而将数据服务的建立过程标准化。WCF DS体系结构如图1-5所示[13]

图1-5 WCF DS体系结构

WCF DS框架由数据服务提供者(Data Service Providers,DSP)、数据服务运行时(Data Services Runtime)和托管HTTP监听器3部分组成,其中DSP封装了数据实体框架、反射机制和自定义模式。该框架可以支持多种类型的数据源,包括映射为 EDM 的关系型数据库、公共语言运行时(CLR)或者其他后期绑定的OData 源。通过 WCF DS,还可以创建新的数据服务,这些服务公开所有返回IQueryable<I>接口实现的数据结构。这样用户就可以创建公开.NET Framework 类型中数据的数据服务。如果用户也实现了IUpdatable接口,就可以实现创建、更新和删除操作。由于OData为数据设置了可供公开寻址的URL,这样用户可以通过GET、PUT、POST和DELETE等标准的HTTP来访问或更改实体数据,WCF DS进行处理后返回JSON或ATOM格式数据。

2. ODSI

ODSI[14]是Oracle公司支持集成多个数据源的数据服务平台,其前身是BEA公司的 Aqua逻辑数据平台。与 WCF DS类似,ODSI同样是将数据封装起来,使用户不必分别与格式多样的数据源和连接机制直接交互。OSDI的架构如图1-6所示。

图1-6 OSDI架构

OSDI平台由数据用户、数据源接口、数据处理引擎(Data Processing Engine)、缓存(Caching)机制、安全(Security)机制、客户端接口(Client API)、数据服务开发工具(Data Service Development Tools)、管理控制台(Administration Console)构成。

从数据源交互层面来说,OSDI可以支持多个异构数据源,如RDBMS、Web服务、文件等,OSDI通过数据源接口为多个数据源提供了通用的模型。

从外部模型层面来说,OSDI的数据处理引擎提供一个基于XQuery的功能模型,还支持创建和发布相关联的数据服务(也称为数据空间)。已经发布的数据服务的元数据则通过目录数据服务(Catalog Data Services)管理。此外,OSDI还具有较为完善的安全机制和缓存机制。

从用户交互层面讲,OSDI 提供一种混合型的数据服务提供方法,即除了支持来自应用程序客户端的一般调用请求外,还支持基于 XQuery 的检索接口,这样被授权的客户端就可以通过它提供点对点的查询。此外,ODSI支持对数据源进行读、写、创建、更新和删除操作,这一点与WCF DS相似。

通过以上两个商业数据服务架构的描述可以看出,它们被设计为帮助数据拥有者实现一个评比数据底层复杂性的数据操作平台,该平台允许用户对数据源进行增、删、改、查操作。

1.2.7 数据服务的关键技术

目前实现数据服务的主要途径是使用 Web 服务技术,Web 服务是组件技术CORBA和DCOM在Web上的部署,支持Web上的分布式计算和应用。它通过标准的协议构建异构平台之间的通信,关注的是平台式通信对象的属性、方法以及接口,其他有关对象在平台中的实现细节与环境并不是Web服务所关注的。在客户端,首先获取服务端的 WSDL 文件,解析该文件的内容以了解服务端的服务信息和调用方式,然后根据需要生成恰当的SOAP请求消息(指定调用的方法、已经调用的参数),并发往服务端,等待服务端返回的SOAP回应消息,解析得到返回值。在服务器端,首先接收客户端发来的SOAP请求消息,解析其中的调用方法和参数格式,然后根据客户端的需要生成WSDL。根据WSDL的描述,服务器会调用相应的COM对象完成指定功能,并把返回值放入SOAP回应消息并返回给用户。

通过以上的分析可以看出,从计算的视点看,服务有3个重要的部分,即服务、接口和操作。服务是由实体通过接口提供有特殊功能的部分,接口是对实体提供服务的操作名,操作是一个对象可以转换或查询的执行规范,一般包括参数名称和参数列表。服务可以通过一组操作的一系列接口获得。将这些操作的接口按照用户的需求进行组合和聚集,即形成了满足不同用户需求的服务。从信息的视点看,服务主要关心的是信息处理过程中的语义问题。每一个服务都需要通过操作定义它的语法接口,通过描述操作的意义和合理的执行次序定义它的语义。

1.2.8 DaaS的特点

对于数据管理者而言,网络时代的数据管理已经不同于传统的数据库管理。传统的数据管理主要集中于数据库的管理,即对数据本身的管理,并基于Client/Server模式和数据库进行相关的数据应用开发。同时,基于安全的考虑,会使用专用驱动程序和数据通信协议,但是这种程序和协议很难与 Internet 的协议进行通信,导致传统的数据库应用程序很难在Internet上使用。因此,对于数据管理者而言,互联网时代的主要任务是将数据封装成能够在互联网上通信的服务,并对这些服务及支持这些服务的数据进行有效的管理和维护。正如 Sybase 公司所说:“今天的数据管理已经不再是传统的数据库管理了,因为企业现在需要的已经不仅仅是对数据本身的管理,更重要的是对数据服务的管理”。

数据服务的本质是为其他系统提供一个数据访问代理或是接口。对于用户而言,DaaS就是数据提供者,用户可以透明地通过DaaS提供的简单接口获取原本异构、分散的数据。而对于数据源而言,DaaS是唯一的用户,这样其他用户就对数据源屏蔽了,使数据源的安全性得到了进一步的提高。

数据服务一方面可以对内访问底层数据源,另一方面可以对外提供数据及信息,它是以提供数据及信息为主要目的服务。数据服务对外提供Web服务接口,用户通过Web服务访问数据。数据服务本身可以有复杂的层次结构,并且可以复用。

数据服务有利于对数据源的数据进行有效的管理,可以有效降低数据源变更所带来的系统更新和维护的代价,还便于用户对数据源的数据动态发现、透明获取,所以有关数据服务的研究越来越成为研究的热点。