分享

新浪SAE分布式Web服务应用平台

本帖最后由 howtodown 于 2015-3-18 13:27 编辑
问题导读

1.什么是Sina App Engine?
2.SVN如何使用?
3.SAE的功能有哪些功能?





1)什么是Sina App Engine

Sina 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、内存、磁盘等)。

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

2)SAE整体架构
SAE从架构上采用分层设计,从上往下分别为反向代理层、路由逻辑层、Web计算服务池。而从Web计算服务层延伸出SAE附属的分布式计算型服务和分布式存储型服务,具体又分成同步计算型服务、异步计算型服务、持久化存储服务、非持久化存储服务。各种服务统一向日志和统计中心汇报,参考下图:
1.png


7层反向代理层:HTTP反向代理,在最外层,负责响应用户的HTTP请求,分析请求,并转发到后端的Web服务池上,并提供负载均衡、健康检查等功能。
服务路由层:逻辑层,负责根据请求的唯一标识,快速的映射(O(1)时间复杂度)到相应的Web服务池,并映射到相应的硬件路径。如果发现映射关系不存在或者错误,则给出相应的错误提示。该层对用户隐藏了很多具体地址信息,使开发者无需关心服务的内部实际分配情况。
Web服务池:由一些不同特性的Web服务池组成。每个Web服务池实际是由一组Apache(PHP)组成的,这些池按照不同的SLA提供不同级别的服务。每个Web服务进程实际处理用户的HTTP请求,进程运行在HTTP服务沙盒内,同时还内嵌同样运行在SAE沙盒内的PHP解析引擎。用户的代码最终通过接口调用各种服务。
日志和统计中心:负责对用户所使用的所有服务进行统计和资源计费,并设定的分钟配额,来判定是否有非正常的使用。分钟配额描述了资源消耗的速度,当资源消耗的速度到达一个预警阈值时,SAE通知系统会提前向用户发出一个警告,提醒用户应用在某个服务上的使用可能存在问题,需要介入关注或处理,配额系统是SAE用来保证整个平台稳定的措施之一;日志中心负责将用户所有服务的日志汇总并备份,并提供检索查询服务。
各种分布式服务:SAE提供几乎可以覆盖Web应用开发所有方面的多种服务,用户可以通过StdLib(可以理解为SAE PHP版的STL)很方便的调用它们。

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

SAE提供的服务及两大特性
SAE提供的服务
SAE目前已经提供了十多种服务,整体上分为计算型和存储型,计算型又包括同步计算和异步计算,而存储型则分为持久化存储和非持久化存储。具体列表如下:
  
服务名称
  
  
类型
  
  
说明
  
  
HTTP+PHP
  
  
同步计算
  
  
带SAE沙盒的Apache和Zend为用户提供Web计算服务
  
  
Storage
  
  
持久化存储
  
  
提供分布式文件存储
  
  
Memcache
  
  
非持久化存储
  
  
提供分布式缓存服务
  
  
RDC
  
  
持久化存储
  
  
分布式数据库集群,提供MySQL服务
  
  
TaskQueue
  
  
异步计算
  
  
异步离线轻量级任务队列,HTTP方式调用
  
  
DeferredJob
  
  
异步计算
  
  
异步离线重量级任务队列,系统方式调用
  
  
Counter
  
  
持久化存储
  
  
计数器服务
  
  
RankDB
  
  
持久化存储
  
  
分布式排行榜服务
  
  
KVDB
  
  
持久化存储
  
  
分布式key/value存储服务
  
  
Cron
  
  
异步计算
  
  
分布式定时服务
  
  
FetchURL
  
  
同步计算
  
  
分布式抓取服务
  
  
TmpFS
  
  
非持久化存储
  
  
提供临时文件存储,文件生命周期在一个会话内,Http请求结束文件自动消失
  
  
AppConfig
  
  
  
  
提供应用配置功能,取代Apache htaccess
  
  
Mail
  
  
异步计算
  
  
邮件发送服务
  
  
Image
  
  
同步计算
  
  
图像处理服务
  
  
XHProf
  
  
同步计算
  
  
Facebook提供的强大的PHP调优工具
  
  
SVN
  
  
持久存储
  
  
用户代码部署的入口点:https://svn.sinaapp.com/yourapp
  
  
Online CodeEditor
  
  
持久存储
  
  
在线代码编辑器,编辑的代码保存后入自动入SVN并部署到Web服务器
  

4)服务限制
    SAE平台为保证安全和稳定,提各类服务设定了一些限制和配额,用户在使用前应当阅读,避免使用中出现问题:

HTTP Runtime
  
限制项
  
数值
限制说明
PHP执行时间
30s
指PHP占用CPU的执行时间,一般不会超过,因为网络IO不占用CPU时间,但如果在PHP脚本中做大量的运算,则有可能超过。  
单请求最大存活时长
300s
PHP脚本超时时间,例如,在PHP脚本中sleep时间或网络IO等待时间不能超过300秒。
单PHP请求内存限制
64MB
同php.ini中的memory_limit,指单个PHP请求所占用的内存大小。
单应用最大并发内存数
4GB
每个应用的apache sandbox总占用内存大小
单应用最大HTTP并发连接数
500
每个应用的最大的并发连接数
POST大小限制
10MB
http请求body的大小,当使用form表单上传文件的大小受到此限制

未来我们会推出限制更宽松的高级版。

MySQL保护
    SAE通过 RDC对MySQL进行保护,保护的基本原则是通过预判机制屏蔽对MySQL的不正确使用和恶意滥用,保证用户数据库之间的隔离性。具体保护规则,请参考,http://sae.sina.com.cn/?m=devcenter&catId=203
MySQL慢查询配额
    SQL执行时间超过1秒,即为慢查询,其分钟配额为
  
条目数
  
10
累计执行时间
60秒
扫描行
1,000,000

MySQL对用户开放的操作
    select, insert,update, delete
    create table
    alter table
    drop table
    index




新浪SAE分布式Web服务开发/运行平台


2.png 3.png
4.png
5.png






工作环境——SVN
SVN使用教程
SAE自2011-7-10日起,将全面支持SVN代码部署,用户不仅可以通过任何SVN客户端部署代码,而且SAE现有的代码部署方式也已经对接应用的SVN仓库,即使不使用SVN客户端部署代码,也保证了代码版本。
如:通过桌面SDK或在线SDK代码编辑器(http://sdk.tools.sinaapp.com)等方式对代码的修改、部署等操作也会像svn commit一样,产生一个新版本。通过SVN客户端svn update可以获取最近的更新,也可以通过svn客户端回滚代码。
可以现在我的首页中创建一个版本,http://sae.sina.com.cn/?m=myapp
6.png


如:应用域名是 test.sinaapp.com,那么SVN仓库地址是:https://svn.sinaapp.com/test
SVN用户名:  SAE安全邮箱   
SVN密码:  SAE安全密码
注:SVN用户名和密码为安全邮箱和安全密码,不是微博账号和微博密码!
一、仓库地址
https://svn.sinaapp.com/appname/
7.png

8.png

在弹出页面中填写仓库路径即可,如: https://svn.sinaapp.com/myhello (其中 myhello 是您刚创建的应用名称)
9.png


    单击“OK”开始同步,如果是第一次使用会弹出Authentication窗口进行身份验证,需要填写username和password;注意,这里填写的密码为您的安全密码(并非微博密码)
    另外,如果您不希望每次使用都进行身份验证,可以勾选Save authentication复选框

10.png


    身份验证成功后会将您的应用同步到本地工作目录中,创建以您应用命名的文件夹
11.png

    接下来需要创建一个版本,在该文件夹中创建一个新的文件夹作为这个应用的版本(注意文件夹的名称就是应用的版本号,必须是正整数,如:1)
    现在您可以使用您最擅长的编码工具(如:EditPlus、Dreamweaver等)在该文件夹下创建您的第一个页面,如 index.php,文件内容如下:
  1. <?php
  2. echo 'Hello World ';
  3. ?>
复制代码


    创建完成后,右键单击该文件,在弹出的菜单中选择:TortoiseSVN > Add ,添加该文件

12.png


    完成后,会在该文件左侧出现红色的“!”,右键单击该文件,在弹出的菜单中选择SVN Commit...,执行提交操作

14.png

    在弹出的窗口的Message处填写更新的理由(必填项,不填写会导致上传失败)

13.png


    上传成功后显示以下界面

15.png


    现在,在浏览器中输入您的应用的地址,就可以马上访问了;本例地址为 http://myhello.sinaapp.com (其中 myhello 为您的应用名称)

16.png

17.png


已有(1)人评论

跳转到指定楼层
271592448 发表于 2015-3-19 17:30:42
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条