购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 BAE环境搭建

BAE(Baidu App Engine)是百度公司(baidu.com)推出的云应用引擎,支持的语言环境包括PHP、Java、Python、Node.js、static等,最新版本为3.0。

说到BAE,不得不说一下2.0到3.0的“巨变”。

开发者在使用BAE 2.0的过程中,会发现很多功能受到限制,最大的障碍在于禁止本地写操作。有一些著名的CMS或博客系统,它们的安装过程通常要求配置文件是可写的,但BAE 2.0禁止本地写操作,导致安装不了;另外有些系统有cache缓存目录,要求该目录可读写,但在BAE 2.0上实现不了。本地开发环境和云端环境不一致,开发者不得不针对BAE做相应的修改,于是就出现了WordPress for BAE等类似的移植版本。

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

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

这里介绍BAE的几个基本概念:

·执行环境:云环境中应用程序执行的环境。执行环境由执行组组成,每个执行组包含执行单元。执行环境分为公共集群和私有集群。

·执行单元:执行单元是云环境里面运行用户代码的最小服务实例。

·执行组:若干执行单元组成的集合。同一个执行组内的不同执行单元的环境是同构的。执行组内执行单元个数会根据实际负载自动调整,但会受到系统阈值的限制或用户配额的限制。

·公共集群:指属于云环境系统的执行组的集合。云环境会保证公共集群里面不同用户不同应用之间代码和数据的安全隔离。公有集群对用户来说是完全透明的。

·私有集群:完全属于用户自己的执行组的集合。用户可以选择自己应用的代码部署到自己拥有的任意执行组内。私有执行组内的执行单元不会和其他用户共享。

3.3.1 创建工程

BAE采用百度通行证登录,如果你还没有,请到百度网站注册通行证(见图3-24)。

图 3-24

下面是创建一个工程的步骤。

1)进入百度开放云平台(http://developer.baidu.com/),点击页面右上角的“登录”,在弹出的界面中登录。

2)在顶部导航处点击“开发者服务管理”,在弹出菜单中选择“开发者服务管理”,进入已创建的工程列表(见图3-25)。或者直接输入开发者服务管理的网址:http://developer.baidu.com/console#app/project。

图 3-25

3)点击“创建工程”按钮,勾选“解决方案”的“使用BAE”,会出现完整的选项。注意,如果需要PHP环境,“类型”应该选择php-web;域名一经创建,不能更改,请慎重填写(见图3-26)。

确认信息填写完整后,点击“创建”按钮,就完成了工程创建。

图 3-26

4)在开发者服务管理页面点击刚才创建的“微信开发”工程,进入该工程的详细信息页。左边栏是可用的服务,点击项目可进入相应的设置页,如图3-27所示。

图 3-27

5)点击左边栏的“应用引擎”,可以看到已创建的执行单元。点击“SVN/GIT地址”栏下的“点击复制”,可以得到仓库地址。仓库的登录账号为BAE账号,如图3-28所示。

至此,BAE环境已经创建好,可以进行开发了。

图 3-28

3.3.2 BAE常用服务

BAE的常用服务包括Cache(缓存)、Image(图片处理)、MySQL(数据库)、Redis(数据库)、MongoDB(数据库)、Cron(定时任务)、FetchURL(网页抓取)、TaskQueue(任务队列)等。下面分别对这些常用服务进行介绍。

·Cache(缓存):是一个内存对象缓存服务,使用接口和Memcache相似。将短期内需要集中访问的数据放在内存中,从内存中读取,从而减少数据库访问次数,提高读取速度。

·Image(图片处理):BAE提供的Image服务功能很强大,除了基本的图片处理(裁剪、缩放、旋转、合成)外,还提供了二维码、文字水印、验证码等功能。只需很少的代码,就能实现基本的图片处理。

·MySQL(数据库):提供MySQL数据库服务,功能和MySQL完全一致。

·Redis(数据库):键值型NoSQL数据库服务。服务器端采用Redis(http://redis.io/)。

·MongoDB(数据库):是一个分布式NoSQL数据库服务。服务器端采用著名的文档型数据库MongoDB(http://www.mongodb.org),使用方式和标准MongoDB完全一致,并且支持各种语言原生的SDK访问数据库。

·Cron(定时任务)、FetchURL(网页抓取)、TaskQueue(任务队列)分别提供定时任务、网页抓取、任务队列服务,不再赘述。 QuUBMU8PbqNsWZu7sZvQjLE9P2Zx0n1XAmu6gxVNzOCDj0yhJUcRTmmtDTdhYJYA

点击中间区域
呼出菜单
上一章
目录
下一章
×