2013年8月8日

SAE

简介

Sina App Engine(以下简称SAE)是新浪研发中心于2009年8月开始内部开发,并在2009年11月3日正式推出第一个Alpha版本的国内首个公有App Engine,SAE是新浪云计算战略的核心组成部分。
SAE作为国内的公有云计算,从开发伊始借鉴吸纳GoogleAmazon等国外公司的公有云计算的成功技术经验,并很快推出有别于国外公司并具有自身特色的App Engine。SAE选择在国内流行最广的Web开发语言PHP作为首选的支持语言,Web开发者可以在Linux/Mac/Windows上通过SVN或者Web版在线代码编辑器进行开发、部署、调试,团队开发时还可以进行成员协作,不同的角色将对代码、项目拥有不同的权限;SAE提供了一系列分布式计算、存储服务供开发者使用,包括分布式文件存储、分布式数据库集群、分布式缓存、分布式定时服务等,这些服务将大大降低开发者的开发成本。同时又由于SAE整体架构的高可靠性和新浪的品牌保证,大大降低了开发者的运营风险。另外,作为典型的云计算,SAE采用“所付即所用,所付仅所用”的计费理念,通过日志和统计中心精确的计算每个应用的资源消耗(包括CPU内存磁盘等)。

编辑本段核心优势

SAE的基本目标用户有两种,一种是Web开发者,另一种是普通互联网上网人群
对于Web开发者,SAE带来的好处有:
·硬件成本更低,无需预先购买设备,承担更大的投入风险
·开发成本更低,SAE提供许多服务供开发者使用,开发者无需重复开发,包括队列、数据库、缓存、定时、验证码、计数器,几乎覆盖了Web开发的所有领域。另外对于特定开放平台的开发者,比如WAP开发者,SAE已经集成了完整的OpenAPI的封装,将开发者的开发成本降到最低。值得一提的是,SAE的开发者已经形成了良好的交流氛围,在意见反馈中心、SAE官方群,SAE官方微群可以看到很多热情的开发者在一起共同提高
·运维成本更低,在SAE上的应用无需关心硬件维护、服务监控、数据容灾等操作,SAE会通过其高可靠的架构和方便的监控页面为用户将运维成本降到最低扩展性更强,在SAE上的服务无需关心服务压力猛增时带来的扩容等操作,SAE自动支持服务扩展
·更加安全可靠,SAE自动提供SQL语句性能分析、前端防攻击、代码检查等功能,在SAE上的所有应用均为多机房容灾部署,比传统的部署模式更加安全可靠,并且SAE提供服务的SLA来实现对用户服务质量的承诺
对于普通上网人群,使用SAE可以:
使用推荐应用一键安装Web应用,普通用户无需会编码,也可以在瞬间拥有自己的团购、博客、微博、Wiki等。

编辑本段整体架构

SAE从架构上采用分层设计,从上往下分别为反向代理层、路由逻辑层、Web计算服务池。而从Web计算服务层延伸出SAE附属的分布式计算型服务和分布式存储型服务,具体又分成同步计算型服务、异步计算型服务、持久化存储服务、非持久化存储服务。各种服务统一向日志和统计中心汇报,参考下图:
Level7 Reverse Proxy(7层反向代理层):HTTP反向代理,在最外层,负责响应用户的HTTP请求,分析请求,并转发到后端的Web服务池上,并提供负载均衡、健康检查等功能。
Service Router(服务路由层):逻辑层,负责根据请求的唯一标识,快速的映射(O(1)时间复杂度)到相应的Web服务池,并映射到相应的硬件路径。如果发现映射关系不存在或者错误,则给出相应的错误提示。该层对用户隐藏了很多具体地址信息,使开发者无需关心服务的内部实际分配情况。
Web Service Pools(Web服务池):由一些不同特性的Web服务池组成。每个Web服务池实际是由一组Apache(PHP)组成的,这些池按照不同的SLA提供不同级别的服务。每个Web服务进程实际处理用户的HTTP请求,进程运行在HTTP服务沙盒内,同时还内嵌同样运行在SAE沙盒内的PHP解析引擎。用户的代码最终通过接口调用各种服务。
Statistics Center & Log Center(日志和统计中心):负责对用户所使用的所有服务进行统计和资源计费,并设定的分钟配额,来判定是否有非正常的使用。分钟配额描述了资源消耗的速度,当资源消耗的速度到达一个预警阈值时,SAE通知系统会提前向用户发出一个警告,提醒用户应用在某个服务上的使用可能存在问题,需要介入关注或处理,配额系统是SAE用来保证整个平台稳定的措施之一;日志中心负责将用户所有服务的日志汇总并备份,并提供检索查询服务。
各种分布式服务:SAE提供覆盖Web应用开发主要方面的多种服务,用户可以通过StdLib(可以理解为SAE PHP版的STL)很方便的调用它们。同时因为Web服务的多样性,SAE的标准服务不可能满足所有场景的需求,所以SAE通过服务总线来对接第三方服务(如分词、全文检索等),SAE也欢迎第三方服务商选择SAE来为开发者提供服务。
真正的用户代码是跑在SAE提供的Web运行环境下的,为了提供公有云计算特有的安全性,SAE设计多层沙盒来保证用户应用之间的隔离性。参考下图:
最内层的就是用户代码,大部分PHP代码不需要做任何修改就可以跑在SAE平台上。小部分代码需要做一些修改以适应SAE的平台特性。这主要有,SAE因为安全性禁用了本地IO,所以fwrite等函数需要修改为使用TmpFD读写本地临时文件或者直接通过Storage服务读写我们的分布式文件存储。
PHP Zend为标准的PHP官方解释器。
SAE Zend Sandbox为一个逻辑概念,为用户的代码运行提供良好的隔离性。这里有两个层面:
1、是通过标准的php.ini,我们设定了一些特殊配置和禁用函数;
2、为了达到一些php.ini无法实现的沙盒功能,我们对Zend解释器核做了一些改进,以便通过用户标识将资源进行隔离。另外我们还把一些SAE的特定服务也在Zend层做了融合。
Apache为标准的Apache Web Server。不过我们禁用了htaccess,并提供了自己实现的替换方案AppConfig。用户可以通过类自然语言的方式编写AppConfig,如- compress: if(out_header["Content-Length"] >= 500) compress 表示按条件启动页面压缩。AppConfig提供的功能有:目录默认页面、自定义错误页面、压缩、页面重定向、页面过期、设置响应头的content-type、设置页面访问权限。我们选择自行实现AppConfig还有一个考虑,就是因为传统Apache的htaccess因为要按目录递归方式合并配置文件,效率不能满足SAE的需求。
HTTP Server沙盒为Apache的安全可靠运行提供了多种保护功能,比如防止某个用户恶意占用连接数从而导致整个Web服务不正常。
最外层的是标准POSIX环境,我们的服务跑在Linux上。
接着将详细讨论我们架构设计的特点。
·扩展性
扩展性是分布式系统的两个主要目的之一,SAE作为公有云计算,同样把服务的扩展性作为架构设计的重要指标,要求在用户增长、压力提升的情况下,可以实现自动的服务扩展,同样的当压力降低时,可以将服务收缩,以节约资源,整个过程无需人工参与。SAE人工只需做好容量规划和管理。国外的公有云计算架构的扩展性主要有两个思路:
静态扩展,用户和资源有强绑定关系。最典型的例子为亚马逊的EC2和Ruby云计算平台Heroku,用户申请的资源和用户有严格的一对一关系,换句话说,A用户申请的虚拟机在A退还资源前,B用户不能使用,哪怕A用户的虚拟机处于闲置状态。
动态扩展,用户和资源没有强绑定关系。最典型的例子为Google App Engine,用户申请的资源和用户没有严格的一对一关系,换句话说,处理A用户请求的进程在处理完之后,可以马上处理B用户的请求。
两种扩展性各有利弊,静态扩展的长处是为平台提供了良好的隔离性,资源可以固定的映射在某个用户下,但缺点是资源利用率不高;动态扩展的长处是资源利用率高,这样整个云计算平台的成本会很低,但缺点是对隔离性有更高的要求,因为资源可以在很短的时间被多个用户使用。相比较,在安全性上,动态扩展要比静态扩展的技术门槛更高。
在SAE平台上,我们采用以动态扩展为主,静态扩展为辅的兼而有之的设计。在Web计算池层,是典型的动态扩展,没有一个用户独占Web服务进程,而是所有用户以共享的方式使用Web服务进程,通过Cache,热的用户自然在缓存层占据更多的位置。而在SAE的某些服务中,扩展性又是以静态扩展的方式展现,如RDC(Relational DB Cluster)分布式数据库集群,当用户申请了MySQL服务,我们就会在RDC后端根据SLA的级别创建一主多从的DB给用户,在用户显式的删除该DB前,该DB都不会被别人使用。当然,通过RDC,任何一个用户也无需知道后端DB的实际地址,只需访问RDC统一的host和port即可。
·高可靠性
HA是分布式系统的另一个主要目的,SAE同样以提供服务的高可靠性为架构设计的重要指标。HA的实现途径主要有两个,一个是硬件保证,一个是架构的冗余设计。
在SAE平台上,所有服务器都是新浪标准采购的硬件设备,运行在国内最好机房内,并进行多机房容灾,网络资源方面则享用门户网站所使用的带宽环境。另外,所有的硬件设备都有专门的运维部门负责,故障的响应速度和新浪内部服务一样。
在架构设计上,SAE通过对所有服务都进行冗余设计来提供服务的高可靠性。
这里的服务可以分成计算型和数据型两种类别讨论:
针对计算型程序,冗余设计就是程序在多节点运行。但这样会带来一致性问题,最主要的困扰就是选举问题,如何在多个节点中选出一个主节点来执行。比如SAE上的分布式定时服务Cron,采用多点部署方式,多个计算节点相互隔离,通过时钟同步服务同时触发用户设定的定时任务,但要求只能有一个节点负责执行。为了解决这个问题,SAE设计出了一套分布式锁算法来提供选举服务。该算法可以在牺牲某些特定条件下的一致性来提供比Paxos算法更高的可靠性(3台机器在最高任意2台机器发生故障的情况下整个选举过程仍然正常,而Paxos算法最多容忍1台)。截止至2012年12月该算法正在申请专利,并广泛应用在SAE内部。
针对数据型服务,SAE主要是通过复制来保证服务的高可靠性。SAE上的数据存储服务普遍采用被动复制和主动复制两种方式。如SAE上MySQL之间的主从Binlog同步就是典型的被动复制,TaskQueue、DeferredJob等服务也采用被动复制的方式,用户的任务描述会写到到主内存级队列中,主队列利用后台线程将写操作同步到从队列上,一旦主队列发生故障,从队列会快速的切换为主队列。另外SAE上也有部分服务采用主动复制(双写复制)的方式来保证HA,比如Cron,当用户通过App的工程配置文件appconfig.yaml设定定时任务时,任务信息会以双写的方式写到多个持久化DB中,以供后续的到时触发。
另外,SAE在整体架构设计时,充分考虑服务之间的“优雅降级”,尽量降低服务之间的耦合度,我们要求任何一个服务都不要假设其他服务是可靠的。SAE平台上的所有服务均不存在单点设计,服务的平均HA在99.95%,即年平均服务不可用时间在4到5个小时之间。
线路特性
·平台出口IP:
220.181.129.126
220.181.129.121
220.181.136.229
220.181.136.230
http接口方需要IP授权可以进行相应的设置。

编辑本段一、云存储类

MySQL:MySQL是SAE上的MySQL服务和普通MySQL服务几乎一样,所以如果你已经熟悉了MySQL的常规使用的话,会感到很简单。
SAE平台为每个App几乎支持所有的MySQL特性,以方便您用习惯的方式来操作数据库。需要注意的是SAE的MySQL 数据库服务需要显式开启或禁用。开启MySQL数据库服务后,您不但可以通过phpmyadmin来创建数据库和数据表,还可以自由地导入导出数据库中的数据。SAE的PHP环境提供了标准的MYSQL,MYSQLI和PDO模块(基于MySQLnd),您可以直接使用这三个模块来操作您的数据库, 您还可以使用预定义常量来连接数据库,我们也不排除未来调整数据库端口的可能。另外SAE也提供了SaeMysql类,我们推荐您使用这个类来操作MySQL资源。MySQL还可以通过授权的方式支持跨应用调用,从而达到应用间数据共享和单应用多数据库管理等目的。同时,为了防止个别用户的攻击和滥用,SAE还设置了服务限制和配额,保证绝大多数开发者在公有云平台上的正常使用。
Storage:Storage是SAE为开发者提供的分布式文件存储服务,用来存放用户的持久化存储的文件。
Storage是SAE为开发者提供的分布式文件存储服务,可以用来存储持久化的文件。使用该服务用户需要先在在线管理平台创建Domain(相当于一级子目录),创建完毕后即可在Storage进行文件的管理。 用户可以通过两种方式操作其中的数据:一是通过cyberduck将用户文件上传至Storage存储中,然后通过在线管理平台将该文件导入到MySQL中;二是通过sae_std_lib下的SaeStor的API进行文件的读写操作。因为SAE平台限制使用本地IO,所以强烈建议开发者将所有需要持久化的文件操作都通过Storage实现。
Memcache:Memcache是SAE为开发者提供的分布式缓存服务,用来以共享的方式缓存用户的小数据。
用户首先需要在在线管理平台上创建Memcache,然后通过标准的memcache*函数读写Memcache。使用Memcache服务不仅可以快速进行数据响应,而且可以减轻后端存储的压力。
KVDB:KVDB是SAE开发的分布式key-value数据存储服务,用来支持公有云计算平台上的海量key-value存储。
KVDB支持的存储容量很大,对每个用户支持100G的存储空间,可存储10亿条记录,用户可用来存放如好友关系等简单数据。 另外,KVDB的性能和可靠性都很高,据我们内部测试,读写均可达到10w gps,而且KVDB采用一主多从的分布式架构,支持KVDB的热备和定期冷备,发生宕机时还可以自动切换到正常工作的DB上。
Counter:Counter是SAE为开发者提供的计数器服务,用来实现高并发情景下的计数功能。
Counter是SAE为开发者提供的计数器服务,用来实现高并发情景下的计数功能。用户可以在控制面板或程序中创建计数器,通过SaeCounter的API对计数器进行加减和统计设置。 Counter简化了计数应用的开发,开发者可以轻松实现高并发情景下的计数功能(如兔年春晚投票、广告渠道访问计数等应用),同时还可以使用Counter的统计功能轻松实现数据汇总。
Rank:Rank排行榜服务是SAE开发的用于在分布式环境下统计排名的服务。
Rank服务是SAE开发的用于分布式环境下的统计排名服务,允许每个用户建立多个排行榜,其中每个排行榜都支持类似key-value的键值对操作。用户不仅可以以O(logn)的时间复杂度获取指定key的排名,还可以获取到前N名的列表(时间复杂度为O(n))。排行榜服务的特点是可靠、快速,可以用于实时排名(如游戏积分排名、软件下载排名),同时排行榜支持过期时间设置,这样方便进行周排名和月排名。另外,使用排行榜服务无需通过控制面板开通或关闭,可以直接使用排行榜API操作。 特别注意:Rank服务并不存放用户的所有数据,只以一定比率的冗余存放TopN的数据,这样带来一个影响,就是如果数据存在激增/减的话,可能影响排名结果的准确性。为了保证激增导致的数据准确性问题,可以定期从数据重新导入新的准确数据。

编辑本段二、云计算类

Cron:Cron服务是SAE为开发者提供的分布式定时服务,用来定时触发开发者的特定动作。
Cron服务是SAE为开发者提供的分布式定时服务,用来定时触发开发者的特定动作(如定时计算排行榜)。Cron的设置是通过App的config.yaml来实现的,只要用户在App目录下的config.yaml里按照我们提供的语法格式进行配置部署后就能生效。Cron的执行是以HTTP方式触发的,触发后真正执行的是用户在App中的PHP代码。Cron服务是分布式环境部署的,具有高可靠性,多点之间相互隔离且同时触发,并且通过分布式锁进行选举并最终由一个健康节点执行。 Cron任务里有两类:每隔一段时间执行和特定时间执行。其中,每隔一段时间执行的任务又分为随机偏移执行的任务和指定偏移执行的任务。这两种任务对SAE平台的消耗不一样,指定偏移的Cron-offset的资源消耗费用要比随机偏移的Cron-nooffset的资源消耗费用高。此外,Cron还支持设定时间区间。
Image:Image是SAE为开发者提供的分布式图像处理服务,用来同步的对图片进行CPU密集型操作。
SAE已经支持GD(利用RPC实现),用户可以使用传统的GD函数处理图片,照顾用户以往的使用习惯,使用户的学习成本降为零。所以我们建议用户使用gd*函数进行图像操作,但我们仍然保留了Image服务。
特别注意:
(1)处理前单张图片大小限制: 暂无,但处理超大图片时,不得超过PHP的使用内存上限64M;
(2)处理后单张图片大小限制: 4M;
(3)系统预定义字体径:请参见扩展阅读
FetchURL:FetchURL是SAE为开发者提供的分布式网页抓取服务,用来同步的抓取http页面。
FetchURL是SAE为开发者提供的分布式网页抓取服务,用来同步抓取http页面。FetchURL针对国内的网络做了优化,优化后的网络内部含有调度系统,用来尽可能保证用户快速的抓取到目标页面。在SAE上使用FetchURL非常简单,只需要调用sae_std_lib中的几个简单的函数即可。 SAE已经完全兼容cURL模块(内部用FetchURL实现),所以用户可以使用cURL*函数进行HTTP请求。但需要特别注意的是,为了平台安全性,SAE对FetchURL也做了一些限制。 另外,SAE规定FetchURL的user-agent默认包含SAE/fetchurl-accesskey,其中的accesskey指的是用户的accesskey。用户可以自行添加user-agent,Referer用户也可以自行定义。
MailMail是SAE为开发者提供的分布式邮件发送服务,用来异步发送标准SMTP邮件。
使用邮件服务后,用户只需要调用sae_std_lib中的函数即可,发送失败时会有异步消息提醒用户。
特别注意:
(1)用户发送邮件数量:根据Mail分钟配额,每分钟发送邮件不超过50封,如果您短时间有大量邮件需要发送,可以 通过taskqueue分解任务完成。
(2)单封邮件总大小(含附件) 小于等于 1M
(3)用户发送的邮件不得违背国内法律法规,不得从事不良行为(如发送垃圾邮件、广告邮件)。如发现,导致用户 邮件账号不能使用,SAE不负责责任
(4)Mail支持SMTP,为了保证账号安全,建议用户注册新的专用于SAE邮件发送的Email,和日常所用账号区分
(5)为了保证您的邮件的到达率,SAE强烈建议使用新浪免费邮箱进行邮件发送。
TaskQueue:TaskQueue是SAE为开发者提供的分布式任务队列服务,用来以异步HTTP方式执行用户任务。
用户需要先在在线管理平台上创建Queue,然后向Queue Push任务,放入队列的任务随即即会执行。TaskQueue任务的执行是以HTTP方式执行的,真正执行的是用户在App中的PHP代码,所以最长执行时间和HTTP页面执行时间相同。TaskQueue服务是分布式环境部署的,具有高可靠性,每个worker相互隔离,并且主动负责任务执行。 Queue分为顺序队列和并发队列,顺序队列的任务顺序执行,而并发队列中的任务则以并行的方式执行。用户还可以为每个Queue指定error callback url,当每个任务执行失败时,TaskQueue自动会调用error callback url通知开发者。
DeferredJob:DeferredJob是SAE为开发者提供的分布式重量级的长时间离线任务执行队列。
DeferredJob是SAE为开发者提供的分布式离线任务执行队列,和TaskQueue的主要区别在于TaskQueue以HTTP方式触发,有页面执行时间的限制;而DeferredJob是由系统级语言执行的,没有执行时间限制。DeferredJob支持两种方式添加任务:1、通过应用的服务管理页面添加任务,优点是比较简单。2、通过SaeDeferredJob Api添加任务,优点是参数丰富,可设置更多的任务参数。DeferredJob限制每天只能添加10个任务。DeferredJob只支持用户的数据库大文件导入/导出、数据库批量操作,将来会支持更多种的任务类。另外 ,DeferredJob服务依赖Storage来存储导入导出的文件,使用DeferredJob前,请确保Mysql服务、Storage服务已初始化且未被禁用。

编辑本段三、功能类

AppConfig:AppConfig服务是SAE为开发者提供的对web服务器进行自定义配置的功能。
使用AppConfig开发者可以很方便的实现以下功能:自定义错误页面;压缩;页面重定向;页面过期;设置响应头的content-type;设置页面访问权限。 AppConfig已可以完全代替htaccess的常见功能,跟htaccess相比,appconfig具有效率高和学习成本低的优点。需要特别注意的是,截止至2012年12月,SAE的AppConfig只适用PHP语言。
XHProf:XHProf是Facebook放出的轻量级调试工具.和Xdebug相比,XHProf更加易用和可控。
XHProf是Facebook开发的轻量级调试工具,和Xdebug相比,XHProf更加易用和可控。尤其是生成流程图和调试数据对比的功能很好很强大。如果我们并不想用户每次访问都生成调试数据,可以使用XHProf的按条件生成数据功能,一来不会降低程序的性能,二来不会浪费存储空间。 在Alpha2中,SAE已经集成了XHProf工具,从此大家可以方便的利用XHProf进行调试了。另外调试的数据是存放在用户自己的Storage中的,所以需要在Storage中创建一个专用的domain来存放。
TmpFS:TmpFS允许开发者通过标准的IO函数临时读写本地IO,这样方便了很多非SAE项目的移植。
TmpFS功能是SAE为了解决“出于平台安全性限制用户对于本地IO的使用,但一些传统的PHP项目会或多或少的有对本地IO的操作”的问题提出的。TmpFS允许开发者通过标准的IO函数临时读写本地文件系统,这样方便了很多非SAE项目的移植。 用户的可持久化存储,请使用Storage或者MySQL存储,而缓存存储请使用Memcache服务存储,TmpFS是满足用户的一个请求的临时文件的读写需求。比如抓取一个URL的图片,判断一下大小,再决定是否写入Storage。
Wrappers:SAE提供的Wrappers主要是用来兼容本地写操作的一些命令。
Wrappers就是用来告诉stream流该如何处理(读写)特定的资源。SAE为 Memcache、KVDB、Storage服务封装了Wrapper,跟相应的服务一样实现对特定数据的读写。因为SAE的Runtime环境并不提供持久化本地IO能力,所以提供的Wrappers非常方便原有程序的移植。 但需要注意的是,使用Wrappers前请先初始化相应的服务,另外毕竟Wrappers又做了一层封装,所以在效率上肯定不如原生的接口高,而且在功能上也不如原生接口丰富。所以SAE官方推荐大家优先使用原生接口。
应用防火墙:应用防火墙保护SAE上的应用数据不被抓站,保护用户的云豆不被恶意消耗。
应用防火墙是SAE开发的保护SAE上应用的数据不被抓站,保护用户的云豆不被恶意消耗的服务。防火墙启用后,将从三个层面为您的应用提供保护:第一层:白名单设置,加入白名单的IP不受访问限制;第二层:黑名单设置,加入黑名单的IP不能访问该应用;第三层:访问频率/流量设置,超过频率或者流量设置的IP将被拦截。
应用体检:SAE应用体检的主要作用是帮助用户优化程序、数据库、安全等,从而更好地为用户服务。
服务主要包括以下内容:
(1)健康体检:扫描应用性能健康状况(如下载速度等);
(2)安全体检:扫描应用本身安全漏洞;
(3)应用优化:针对您应用的体检结果,给予优化建议。
、【扩展服务】
短信服务:新浪无线短信服务是由新浪无线提供的综合性短信服务。
新浪无线短信服务是由新浪无线提供的综合性短信服务。通过该服务您可以给指定的手机发短信( 支持中国移动、中国联通、中国电信网络,短信到达率90%以上);您发送的短信内容字数将不能超过72字(不含签名)。 短信服务属于收费服务,您可以使用付费云豆购买开通使用。
计费方式说明:
1、按次计费:10云豆/次 。 扣费规则: 每调用一次sms::send方法,且成功返回结果自动扣减10付费云豆。 若付费云豆不足则中止服务。
2、包月套餐扣费规则:
1) 选择包月套餐,使用付费云豆支付套餐费用,购买成功后扣减付费云豆。
2) 若使用额度超过套餐限额,按照套餐约定单价,自动扣减付费云豆。若付费云豆不足则终止服务
3) 若套餐过期,则剩余套餐内额度失效。
地理位置服务:地理信息服务是由SAE提供的综合地理信息服务,属于扩展服务。通过此服务可以查询路线,公交,IP位置,地图等地理位置相关的信息。
该服务分为一级、二级、三级服务,其中一级服务为免费服务,二、三级服务在一级服务的基础上提供额外功能,且为收费服务。
二级地理信息服务(收费服务)额外提供:根据实际地址返回地理信息坐标;根据地理信息坐标返回实际地址;判断地理信息坐标是否是国内坐标;根据GPS坐标获取偏移后的坐标;根据关键词按地址位置获取POI点的信息;根据关键词按坐标点范围获取POI点的信息;根据关键词按矩形区域获取POI点的信息。
三级地理信息服务(收费服务)额外提供:根据移动WIFI等数据获取当前位置信息;生成一张静态的地图图片。
中文分词服务:中文分词(Chinese Word Segmentation)指的是将一个汉字序列切分成一个一个单独的词。+
saeSegment是由新浪爱问提供的分词服务,是扩展服务。该服务分词准确率高,而且可以返回给每个词的词性。
蛐蛐儿SDK:采用仿生学技术,利用声音实现手机之间,或者手机与PC之间的近距离信息传输。通过声音传输二维码信息,用于手机之间的近距离传输。可用广泛用于开发文件传输、社交分享、电子支付、电子门票等各类应用。[1]
参考资料

沒有留言:

張貼留言