百度云平台[编辑]
BAE(Baidu App Engine)是百度推出的网络应用开发平台。基于BAE架构,您不需要维护任何服务器,只需要简单的上传应用程序,就可以为您的用户提供服务。BAE有能力将原本单机的LAMP架构,变成分布式架构。您可以基于BAE平台进行PHP、Java、Python应用的开发、编译、发布、调试。同时BAE平台也提供了大量的云服务给开发者,包括fetch URL、task queue、SQL、memcache,后续会提供更多服务。在性能方面,如果您希望增加服务能力,可以通过申请更多执行单元的方式进行灵活的调整。BAE服务可以让您在开发网络应用程序的过程中摆脱繁琐的环境、服务问题,把精力专注于业务逻辑。
应用
在BAE2.0中应用与BAE部署一一对应,不同部署之间若要共享数据或资源必须通过授权管理,复杂且不方便;在BAE3.0中,应用可包含多个BAE部署,同应用下的部署资源互通。
应用引擎(BAE)部署
在BAE3.0中,每一个BAE实例称为一个“BAE部署”。BAE3.0新增了worker类型的部署。传统的WEB类型,主要用来创建WEB应用,它的特点是通过HTTP请求来驱动应用逻辑;但有时候需要长期在后台跑一些任务,例如爬虫,不停的去爬取各种网络资源,这种就需要woker类型的部署来实现了。
部署类型
或者叫做“Runtime类型”,每个BAE部署对应一种部署类型,目前包括node.js-web,php-web, php-worker, java-web, python-web, python-worker。后续会支持更多类型,给开发者更多的选择。
执行单元
每个BAE部署由一个或多个“执行单元”组成。执行单元是一个抽象的概念,每个执行单元实际是由一组进程组成;例如一组lighttpd + php-fpm 进程组成了 php-web执行单元。对于一个WEB应用来说,随着访问量的上升,一个基础执行单元很可能扛不住压力。那么可以通过增加执行单元个数进行“水平扩展”,或者增大执行单元配置如内存进行“垂直扩展”,从而轻松应对压力。运行环境和与编程语言无任何限制
比如在BAE2.0里面的限制,包括创建进程、创建线程、系统调用、执行C扩展模块、文件系统访问等等,在BAE3.0都不再进行限制每次WEB请求必须在30秒内完成
多种编程语言支持
除了PHP、Python、Java、Node.js以外,我们还会陆续增加对主流开发语言的支持。此外将来开发者还可以自定义运行环境。
编程框架的支持
由于编程语言层面没有任何限制,那么各种编程框架的支持也就水到渠成了。不管你是主流的框架,还是小众的框架,只要能在开发者本地的环境中运行起来,那么在云端也可以跑起来。
自动安装依赖的模块
对于python开发者来说,只要把依赖的模块,例如django, flask等写到 requirements.txt中,BAE会自动帮你把这些模块部署到执行环境中。对于nodejs开发者,可以使用 package.json 达到同样的效果。自由的网络访问
许多PaaS,对外的网络访问需要通过HTTP Proxy 或者是Socket Proxy 代理出去;而在BAE3.0里面,对外的网络访问不再需要经过代理层的转发。
将在未来开放“端口服务”,允许开发者自定义对外提供服务的TCP/UDP端口,从而实现更复杂的业务逻辑。
新增worker类型
很多PaaS只能提供web类型应用的开发;而BAE3.0新增的worker类型应用,可以满足开发者执行长期任务的需求。例如可以使用worker类型来实现一个自定义的网络爬虫运行环境
BAE3.0 是一种基于Linux Container的资源独享型PaaS:
基本技术: Linux ContainerBAE3.0底层采用的是Linux Container这种轻量虚拟机技术,相对于传统的kvm, xen 等虚拟机技术来说,它可以更好的适应云计算的需求。关于Container技术的详细介绍,可以参考这里 http://linuxcontainers.org/
操作系统
Ubuntu 12.04 Server
轻量虚拟机内部,我们采用的是64位的 Ubuntu 12.04 Server。
资源配额
每个轻量虚拟机都具有一定的资源配额,应用如果使用了超过配额的资源,就可能出现不可预期的错误。例如疯狂分配内存,大量占用磁盘空间等等。
内存: 默认 256M;可通过套餐来调整大小磁盘: 2GCPU: 与其它轻量虚拟机分享CPU网络: 流入5Mbytes/秒;流出5Mbytes/秒
部署应用代码
应用代码部署在 /home/bae/app 目录下,其权限为 bae 账号所有
执行应用代码
应用代码以 bae 账号来运行;因此应用代码对于 /home/bae 目录下具有任意的读写和访问权限,同时对 /tmp 目录也具有读写和访问权限
临时性文件系统
应用虽然可以在 /home/bae/ 等目录下任意读写,但是轻量虚拟机里面是一个“临时性文件系统”;也就是说,应用在这些目录下动态创建的文件、目录,是随时可能消失的。这是因为当轻量虚拟机出现故障,或者轻量虚拟机所在物理机器出现故障的情况下,需要将这个轻量虚拟机动态的迁移到别的物理机器上,保证应用的“高可用性”。迁移后,原来轻量虚拟机里面的文件、目录就都丢失了;这也是PaaS通用的处理逻辑。
对应用开发者来说,应该意识到PaaS的这种特性,并尽量将需要持久化的数据或者是需要被多个轻量虚拟机共享的数据放到mysql, redis, mongodb, bcs 等存储服务器上。或者使用NFS服务,也可部分解决共享文件的需求。
网络营销词典内容均由网友提供,仅供参考。如发现词条内容有问题,请发邮件至info # wm23.com。