当前位置:文档之家› 新浪云开发平台开发指南

新浪云开发平台开发指南

新浪 SAE 分布式 Web 服务应用平台——云计算技术在网络推广中的应用 1)什么是 Sina App EngineSina App Engine(以下简称 SAE)是新浪研发中心于 2009 年 8 月开始内部开发,并 在 2009 年 11 月 3 日正式推出第一个 Alpha 版本的国内首个公有云计算平台,SAE 是 新浪云计算战略的核心组成部分。

SAE 作为国内的公有云计算, 从开发伊始借鉴吸纳 Google、 Amazon 等国外公司的公有 云计算的成功技术经验,并很快推出不同于他们的具有自身特色的云计算平台。

SAE 选择在国内流行最广的 Web 开发语言 PHP 作为首选的支持语言,Web 开发者可以在 Linux/Mac/Windows 上通过 SVN、SDK 或者 Web 版在线代码编辑器进行开发、部署、调 试,团队开发时还可以进行成员协作,不同的角色将对代码、项目拥有不同的权限; SAE 提供了一系列分布式计算、存储服务供开发者使用,包括分布式文件存储、分布 式数据库集群、分布式缓存、分布式定时服务等,这些服务将大大降低开发者的开发 成本。

同时又由于 SAE 整体架构的高可靠性和新浪的品牌保证,大大降低了开发者的 运营风险。

另外,作为典型的云计算,SAE 采用“所付即所用,所付仅所用”的计费 理念,通过日志和统计中心精确的计算每个应用的资源消耗(包括 CPU、内存、磁盘 等) 。

第 1 页总之,SAE 就是简单高效的分布式 Web 服务开发、运行平台。

2)SAE 整体架构 SAE 从架构上采用分层设计,从上往下分别为反向代理层、路由逻辑层、Web 计算服 务池。

而从 Web 计算服务层延伸出 SAE 附属的分布式计算型服务和分布式存储型服务, 具体又分成同步计算型服务、 异步计算型服务、 持久化存储服务、 非持久化存储服务。

各种服务统一向日志和统计中心汇报,参考下图:7 层反向代理层:HTTP 反向代理,在最外层,负责响应用户的 HTTP 请求,分析请求, 并转发到后端的 Web 服务池上,并提供负载均衡、健康检查等功能。

服务路由层:逻辑层,负责根据请求的唯一标识,快速的映射(O(1)时间复杂度)到 相应的 Web 服务池,并映射到相应的硬件路径。

如果发现映射关系不存在或者错误, 则给出相应的错误提示。

该层对用户隐藏了很多具体地址信息,使开发者无需关心服 务的内部实际分配情况。

Web 服务池:由一些不同特性的 Web 服务池组成。

每个 Web 服务池实际是由一组第 2 页Apache(PHP)组成的,这些池按照不同的 SLA 提供不同级别的服务。

每个 Web 服务进 程实际处理用户的 HTTP 请求,进程运行在 HTTP 服务沙盒内,同时还内嵌同样运行在 SAE 沙盒内的 PHP 解析引擎。

用户的代码最终通过接口调用各种服务。

日志和统计中心:负责对用户所使用的所有服务进行统计和资源计费,并设定的分钟 配额,来判定是否有非正常的使用。

分钟配额描述了资源消耗的速度,当资源消耗的 速度到达一个预警阈值时,SAE 通知系统会提前向用户发出一个警告,提醒用户应用 在某个服务上的使用可能存在问题,需要介入关注或处理,配额系统是 SAE 用来保证 整个平台稳定的措施之一;日志中心负责将用户所有服务的日志汇总并备份,并提供 检索查询服务。

各种分布式服务:SAE 提供几乎可以覆盖 Web 应用开发所有方面的多种服务,用户可 以通过 StdLib(可以理解为 SAE PHP 版的 STL)很方便的调用它们。

3)SAE 的功能 开发: · 代码检查,帮助检查不良函数并帮助移植 · 代码部署 · 分布式数据库 · 分布式文件存储 · 分布式缓存 · 各种附属分布式服务,包括图像、定时、任务队列、邮件、计数器等 · 对接多个开放平台,如新浪微博开发平台 · 代码调优,通过 XHProf 提供 · 数据库优化,通过 RDC 提供 · 团队协作,可以邀请好友以不同的权限加入项目 · 代码版本管理(计划支持) 运营: · 应用打包,通过我们的应用向导进行推广 · 日志,包括访问日志、错误日志等 · 资源报表,消耗 SAE 各项资源的统计第 3 页· 服务监控,监控各项服务状态 · 数据迁移,包括数据库导入、数据库导出等SAE 提供的服务及两大特性 SAE 提供的服务 SAE 目前已经提供了十多种服务,整体上分为计算型和存储型,计算型又包括同步计 算和异步计算,而存储型则分为持久化存储和非持久化存储。

具体列表如下: 服务名称 HTTP+PHP Storage Memcache 类型 同步计算 持久化存储 非持久化存 储 RDC TaskQueue DeferredJob Counter RankDB KVDB Cron FetchURL TmpFS 持久化存储 异步计算 异步计算 持久化存储 持久化存储 持久化存储 异步计算 同步计算 非持久化存分布式数据库集群,提供 MySQL 服务说明带 SAE 沙盒的 Apache 和 Zend 为用户提供 Web 计算服务提供分布式文件存储提供分布式缓存服务异步离线轻量级任务队列,HTTP 方式调用异步离线重量级任务队列,系统方式调用计数器服务分布式排行榜服务分布式 key/value 存储服务分布式定时服务分布式抓取服务提供临时文件存储,文件生命周期在一个会话内,Http 请求第 4 页储 AppConfig Mail Image XHProf SVN 异步计算 同步计算 同步计算 持久存储结束文件自动消失提供应用配置功能,取代 Apache htaccess邮件发送服务图像处理服务Facebook 提供的强大的 PHP 调优工具用户代码部署的入口 点:https:///yourappOnline CodeEditor持久存储在线代码编辑器,编辑的代码保存后入自动入 SVN 并部署到 Web 服务器4)服务限制 SAE 平台为保证安全和稳定,提各类服务设定了一些限制和配额,用户在使用前 应当阅读,避免使用中出现问题:HTTP Runtime 限制项 数值 限制说明 指 PHP 占用 CPU 的执行时间,一般不会超过,因为网络 IO 不占 用 CPU 时间,但如果在 PHP 脚本中做大量的运算,则有可能超 过。

单请求最大存 300s PHP 脚本超时时间,例如,在 PHP 脚本中 sleep 时间或网络 IO 活时长 等待时间不能超过 300 秒。

PHP 执行时间 30s单 PHP 请求内 64MB 同 php.ini 中的 memory_limit,指单个 PHP 请求所占用的内存 存限制 单应用最大并 4GB 发内存数第 5 页大小。

每个应用的 apache sandbox 总占用内存大小单应用最大 HTTP 并发连接 数500每个应用的最大的并发连接数POST 大小限制 10MB http 请求 body 的大小,当使用 form 表单上传文件的大小受到 此限制未来我们会推出限制更宽松的高级版。

MySQL 保护 SAE 通过 RDC 对 MySQL 进行保护,保护的基本原则是通过预判机制屏蔽对 MySQL 的不正确使用和恶意滥用,保证用户数据库之间的隔离性。

具体保护规则,请参考, /?m=devcenter&catId=203 MySQL 慢查询配额 SQL 执行时间超过 1 秒,即为慢查询,其分钟配额为 条目数 累计执行时间 扫描行 10 60 秒 1,000,000MySQL 对用户开放的操作 select, insert, update, delete create table alter table drop table index第 6 页新浪 SAE 分布式 Web 服务开发/运行平台第 7 页工作环境——SVN SVN 使用教程 SAE 自 2011-7-10 日起,将全面支持 SVN 代码部署,用户不仅可以通过任何 SVN 客户 端部署代码,而且 SAE 现有的代码部署方式也已经对接应用的 SVN 仓库,即使不使用 SVN 客户端部署代码,也保证了代码版本。

如: 通过桌面 SDK 或在线 SDK 代码编辑器()等方式对 代码的修改、部署等操作也会像 svn commit 一样,产生一个新版本。

通过 SVN 客户 端 svn update 可以获取最近的更新,也可以通过 svn 客户端回滚代码。

可以现在我的首页中创建一个版本,/?m=myappSVN 仓库地址:https:///your_app_name如:应用域名是 ,那么 SVN 仓库地址是: https:///test SVN 用户名: SVN 密码: SAE 安全邮箱 SAE 安全密码注:SVN 用户名和密码为安全邮箱和安全密码,不是微博账号和微博密码! 一、仓库地址 https:///appname/第 8 页在弹出页面中填写仓库路径即可,如: https:///myhello (其中 myhello 是您刚创建的应用名称)第 9 页单击“OK”开始同步,如果是第一次使用会弹出 Authentication 窗口进行身份 验证,需要填写 username 和 password;注意,这里填写的密码为您的安全密码(并 非微博密码) 另外,如果您不希望每次使用都进行身份验证,可以勾选 Save authentication 复选框身份验证成功后会将您的应用同步到本地工作目录中,创建以您应用命名的文件 夹第 10 页接下来需要创建一个版本,在该文件夹中创建一个新的文件夹作为这个应用的版本(注意文件夹的名称就是应用的版本号,必须是正整数,如:1)现在您可以使用您最擅长的编码工具(如:EditPlus、Dreamweaver等)在该文件夹下创建您的第一个页面,如 index.php,文件内容如下:<?phpecho 'Hello World ';?>创建完成后,右键单击该文件,在弹出的菜单中选择:TortoiseSVN > Add ,添加该文件完成后,会在该文件左侧出现红色的“!”,右键单击该文件,在弹出的菜单中选择SVN Commit...,执行提交操作在弹出的窗口的Message处填写更新的理由(必填项,不填写会导致上传失败)上传成功后显示以下界面现在,在浏览器中输入您的应用的地址,就可以马上访问了;本例地址为(其中myhello为您的应用名称)。

相关主题