应用引擎BAE3.0(转)

add by zhj: 其实我主要是想看看基于docker的PaaS的特性。

原文:http://developer.baidu.com/wiki/index.php?title=docs/cplat/bae

概述

百度应用引擎(BAE)提供多语言、弹性的服务端运行环境,能帮助开发者快速开发并部署应用。

我们在运营BAE2.0的过程中,发现困扰开发者的一个主要问题就是应用的“云端运行环境”与开发者的“本地开发环境”不一致,很多功能受到限制。开发者在本地开发调试好的应用,发布到云端就遇到种种问题无法运行,不得不针对云端环境进行修改。

这个问题的主要原因在于传统PAAS(例如BAE2.0等)采用“沙盒技术”来实现应用之间的资源隔离,“沙盒技术”需要对运行环境和编程 语言进行功能限制,(例如禁止创建进程和线程,禁止某些系统调用,禁止对某些文件系统路径的读写,禁止加载C语言模块、禁止某些网络功能等),这就大大增 加了开发者的学习成本,也使得应用的开发和迁移难度变大。


图1

【如图1所示: 在同一个执行单元内部,采用“沙盒技术”,对每个应用的“运行环境和编程语言功能”进行限制,从而实现了应用的隔离。】

为了解决这个困扰广大开发者的问题,我们推出了新版PAAS平台--BAE3.0。BAE3.0在底层采用“轻量虚拟机技术”完美解决了资
源隔离问题,而在运行环境和编程语言层面,则不做任何限制;应用在云端的运行环境与开发者本地的开发环境保持一致,从而使得学习成本、开发和迁移成本降到
最低,开发者的生产力得到最大限度的解放。


图2

【如图2所示,为每个执行单元创建一个轻量虚拟机,每个执行单元跑一个BAE部署。在轻量虚拟机之间实现资源隔离;在“运行环境和编程语言”层面无任务限制。】

核心概念

应用

在BAE2.0中应用与BAE部署一一对应,不同部署之间若要共享数据或资源必须通过授权管理,复杂且不方便;在BAE3.0中,应用可包含多个BAE部署,同应用下的多个部署之间的资源是共享的。

部署

在BAE3.0中,每一个BAE实例称为一个“部署”。

部署类型

每个BAE部署对应一种部署类型。除了传统的WEB形式的部署类型外,BAE3.0新增了worker类型的部署。传统的WEB类型,主要用来创建
WEB应用,它的特点是通过HTTP请求来驱动应用逻辑;但有时候我们需要长期在后台跑一些任务,例如爬虫,不停的去爬取各种网络资源,这种就需要
woker类型的部署来实现了。目前BAE3.0平台支持node.js-web,php-web, php-worker, java-web,
python-web, python-worker等部署类型,后续会支持更多类型,给开发者更多的选择。

执行单元

每个BAE部署由一个或多个“执行单元”组成。执行单元是一个抽象的概念,每个执行单元实际是由一组进程组成;例如一组lighttpd +
php-fpm 进程组成了
php-web执行单元。对于一个WEB应用来说,随着访问量的上升,一个执行单元很可能扛不住压力。那么可以通过增加执行单元个数进行“水平扩展”,或
者增大执行单元配置如内存进行“垂直扩展”,从而轻松应对压力。

轻量虚拟机

执行单元由一组进程组成,而这组进程实际是运行在一个单独的轻量虚拟机里面的;每个执行单元对应一个轻量虚拟机。对开发者来说,不需要关心轻量虚拟机的存在,而是关心为自己应用服务的“执行单元”; 而对BAE的运维人员来说,才需要关心轻量虚拟机的运行情况。


图3

【如图3所示:在BAE3.0中,BAE部署与执行单元、轻量虚拟机的关系】

假设有一个“BAE部署”,分配了两个“执行单元”,每个“执行单元”对应一个“轻量虚拟机”, “执行单元”是抽象概念,它启动后,对应着“轻量虚拟机”里面的一组进程,包括 lighttpd 和 php-fpm 进程等。

当“轻量虚拟机”出现故障后,BAE平台会自动为它重新分配一个轻量虚拟机,并将“执行单元”部署到新的轻量虚拟机上,这就是“执行单元”的迁移。这种技术保证了应用的高可靠性。

当应用流量上升,两个“执行单元”不够用的时候,可以再增加新的轻量虚拟机,并部署“执行单元”,这就是“执行单元”的扩容。这种技术保证了应用的可扩展性。

BAE3.0特性

运行环境和与编程语言无任何限制

比如在BAE2.0里面的限制,包括创建进程、创建线程、系统调用、执行C扩展模块、文件系统访问等等,在BAE3.0都不再进行限制。

多种编程语言支持

除了PHP、Python、Java、Node.js以外,我们还会陆续增加对主流开发语言的支持。此外将来开发者还可以自定义运行环境。

编程框架的支持

由于编程语言层面没有任何限制,那么各种编程框架的支持也就水到渠成了。不管你是主流的框架,还是小众的框架,只要能在开发者本地的环境中运行起来,那么在云端也可以跑起来。

自动安装依赖的模块

对于python开发者来说,只要把依赖的模块,例如django, flask等写到 requirements.txt中,BAE会自动帮你把这些模块部署到执行环境中。对于nodejs开发者,可以使用 package.json 达到同样的效果。

丰富的服务支持
BAE2.0里面,我们为开发者提供的很多贴心的服务,在BAE3.0里面继续可以使用,如MySQL、MongoDB、Redis、Cache、Image等等。
此外百度强大的云能力也都支持,如云存储、媒体云、云推送、LBS等等。
自由的网络访问

许多PaaS,对外的网络访问需要通过HTTP Proxy 或者是Socket Proxy 代理出去;而在BAE3.0里面,对外的网络访问不再需要经过代理层的转发。

此外,我们还将在未来开放“端口服务”,允许开发者自定义对外提供服务的TCP/UDP端口,从而实现更复杂的业务逻辑。
新增worker类型

很多PaaS只能提供web类型应用的开发;而BAE3.0新增的worker类型应用,可以满足开发者执行长期任务的需求。例如您可以使用worker类型来实现一个自定义的网络爬虫。Worker类型示例

本地开发环境

我们提供了接近于“云端运行环境”的本地开发环境工具,帮助开发者在本地进行开发和调试;当您在本地完成开发和调试后,再将应用部署到云端,就可以流畅的运行起来了。

执行单元套餐

在创建BAE部署的时候,您可以根据实际情况选择执行单元的“套餐类型”;也可以在应用上线后,根据访问量随时调整“套餐类型”,从而提高资源利用率。

运行环境

BAE3.0 是一种基于Linux Container的资源独享型PaaS:

基本技术: Linux Container
BAE3.0底层采用的是Linux Container这种轻量虚拟机技术,相对于传统的kvm, xen 等虚拟机技术来说,它可以更好的适应云计算的需求。
关于Container技术的详细介绍,可以参考这里 http://linuxcontainers.org/
操作系统

Ubuntu 12.04 Server

轻量虚拟机内部,我们采用的是64位的 Ubuntu 12.04 Server。
资源配额

每个轻量虚拟机都具有一定的资源配额,应用如果使用了超过配额的资源,就可能出现不可预期的错误。例如疯狂分配内存,大量占用磁盘空间等等。

  • 内存: 默认 256M;可通过套餐来调整大小
  • 磁盘: 2G(此为临时文件系统,非代码空间,也不可长期存储文件;代码空间限制为100M)
  • CPU: 与其它轻量虚拟机分享CPU
  • 网络: 流入5Mbytes/秒;流出5Mbytes/秒
部署应用代码

应用代码部署在 /home/bae/app 目录下,其权限为 bae 账号所有

执行应用代码

应用代码以 bae 账号来运行;因此应用代码对于 /home/bae 目录下具有任意的读写和访问权限,同时对 /tmp 目录也具有读写和访问权限

临时性文件系统

应用虽然可以在 /home/bae/
等目录下任意读写,但是我们说轻量虚拟机里面是一个“临时性文件系统”;也就是说,应用在这些目录下动态创建的文件、目录,是随时可能消失的。这是因为当
轻量虚拟机出现故障,或者轻量虚拟机所在物理机器出现故障的情况下,需要将这个轻量虚拟机动态的迁移到别的物理机器上,保证应用的“高可用性”。迁移后,
原来轻量虚拟机里面的文件、目录就都丢失了;这也是PaaS通用的处理逻辑。

对应用开发者来说,应该意识到PaaS的这种特性,并尽量将需要持久化的数据或者是需要被多个轻量虚拟机共享的数据放到mysql, redis, mongodb, bcs 等存储服务器上。或者使用NFS服务,也可部分解决共享文件的需求。

时间: 2024-10-12 19:53:55

应用引擎BAE3.0(转)的相关文章

THScript脚本引擎1.0.0.3发布

下载地址: http://pan.baidu.com/s/1pJ2lWYB THScript脚本引擎1.0.0.3发布,码迷,mamicode.com

百度BAE3.0云应用引擎上部署安装WordPress-4.0.1-zh_CN

思路:下载WordPress安装包,解压到本地BAE应用目录中,通过SVN上传并发布,然后访问,配置完就ok了 下载WordPress安装包地址:可以访问360云盘连接http://yunpan.cn/cfShTBNEwm52W  提取码 28ee,也可以登录官方http://cn.wordpress.org/ 第一步.登录百度BAE云应用,创建工程,部署php-web应用,创建mysql扩展服务,复制svn地址,创建本地应用目录. 第二步.解压WordPress压缩包到本地应用目录里,然后通过

微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(采用 Baidu Eclipse)

转载:<http://blog.csdn.net/bingtianxuelong/article/details/17843111> 版本说明: V1: 2014-2-13更新,红色字体代表最近一次更新的内容. V2: 2014-3-30  更新,上一版本有很多读者反应说最后还是无法通过微信 token 认证,此版本特意解决这个问题.红色字体代表最近一次更新的内容. 至读者: 对于版本 v1 不能成功的问题,我对此深表歉意,版本 v2 通过我再三测试,肯定能通过微信的 token,版本 v1

超快的前端引擎——artTemplate-3.0

一.特性 性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍, 支持运行时调试,可精确定位异常模板所在语句, 对 NodeJS Express 友好支持, 安全,默认对输出进行转义.在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板), 支持include语句,可在浏览器端实现按路径加载模板, 支持预编译,可将模板转换成为非常精简的 js 文件, 模板语句简洁,无需前缀引用数据, 支持所有流行的浏览器. 二.上手 1.编写模板 使用一个type="text/h

surging 微服务引擎 1.0 正式发布

surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http.TCP.WS.Mqtt协议,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希一致性,随机,轮询.压力最小优先作为负载均衡的算法,底层协议集成采用的组件是dotnetty.websocket-sharp.Kestrel.支持通过docker hub 部署服务引擎,也可以通过nuget 引用组件的方式自定义服务引擎. surging 已完成了生成环境的稳定部署,支持超过千台机器

谈谈surging 微服务引擎 2.0的链路跟踪和其它新增功能

一.前言 surging是基于.NET CORE 服务引擎.初始版本诞生于2017年6月份,经过NCC社区二年的孵化,2.0版本将在2019年08月28日进行发布,经历二年的发展,已经全部攘括了微服务架构的技术栈,覆盖了从服务注册.服务发现.中间件.协议主机再到链路跟踪,并且制定了一套微服务的规则,形成了一套统一的规范.以下是surging的服务引擎架构图 上图Diagnostic能够实现把整个服务链路的各种信息采集到. 比如来源地址.远程地址.报错.执行时间.调用链路.协议类型以及参数全部采集

python web在BAE3.0上的配置

Django版本为1.7.1,本来是想用1.8.0版本,但是发布的时候会提示发布失败! 首先在本地安装Django1.7.1,创建工程,创建项目,目录如下 PROJECT_NAME     |-- PROJECT_NAME/ #与工程同名的配置目录,后面叫他config目录     |-- APP1/ #app目录     |-- manage.py     |-- requirement.txt #声明,用来制定django版本,还有其他的一些额外的包     |-- app.conf    

MyReport报表引擎2.0.0.0新功能

Web报表引擎:Web上的良好的打印解决方式,WinForm的打印预览体现,报表自己主动化,支持直接打印,页小计,统计,转成金额大写,一维码显示等功能,满足中国式报表的常见功能需求.Web报表编辑器:* Web上良好的报表设计用户体现,可视化编辑,支持设计/预览视图撤换.* 通过下拉框选择,高速设置报表数据的绑定.* 支持单元格内容格式化(数字,金额,日期等)输出.* 通过表达式编辑,轻松设计页小计行或页统计行.* 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作.新版说明:* 支持Ad

Activiti流程引擎学习0——解决idea中编辑器的中文乱码问题

我使用的是idea2017+activiti6.0版本. 这个第0篇主要是为了解决安装activiti插件后创建的流程模板中文乱码的问题. 1.安装Activiti流程编辑器插件. 1.1网上资料很多,这里简要说一下:File->Settings->Plugins,然后输入actiBPM,双击搜索结果或点击Install plugin安装即可. 但是!我每次都安装失败0.x 所以和我一样运气超棒的同学可以使用下面这种方法. 1.2File->Settings->Plugins,然后