Bluemix使用与其他云平台对比
Posted 射天狼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bluemix使用与其他云平台对比相关的知识,希望对你有一定的参考价值。
笔者近几年做过了一些项目,应用了国内外的几家云平台,包括:Bluemix、阿里云、七牛、新浪云等。下面介绍一下各个云的情况及使用心得。
一、 Bluemix
Bluemix是来自IBM的最新云产品,它提供了开放、整合的环境及开发管理工具,使得企业与开发人员能够快速而又轻松地在云上创建、部署和管理应用程序(web,移动,大数据,新型智能设备等)。
Bluemix是IBM基于 Cloud Foundry 开放云架构的PaaS平台,Bluemix不仅提供了企业级服务,还包括其他IBM的软件服务,第三方服务及开源技术,这些服务可轻松地与用户的云应用程序相集成,用户甚至无需知道如何安装或配置它们。
二、 阿里云
阿里云提供的服务比较多,从底层服务器硬件,到数据库、到缓存服务、到大数据计算等,可以说是应用有尽有。但是对于企业应用、部署,则要求企业的架构人员需要有很强的专业知识才可以完全驾驭。要求架构人员对硬件、网络、软件、架构等全部了解,才可以。并且笔者作为我们企业的架构人员,在使用阿里云的过程中,对阿里云提供的各个服务没有一个全面的了解,在应对软件开发、架构的同时,还需要对阿里云提供的服务进行了解、测试,这个过程是一个很漫长的过程,并且没有人员可以咨询,实在是比较郁闷。
三、 七牛
七牛是一个云存储平台,功能虽然不像阿里那么丰富,但是比较“纯洁”,想用户之所想,把细微功能做到了极致。
四、 新浪云
新浪SAE,对于开发者来说,很易用,可以说是把程序员给“惯坏了”。使用者什么也不用考虑,只管开发功能就行了。但是SAE最大的弱点就是速度以及稳定性。这也是我们后来放弃而使用其他云服务的原因。
总体来说,阿里云服务,大而全,但是需要使用者专业知识较强。七牛小而精,将云存储做到了极致。新浪功能也很强,很易用,但是致命的弱点,会损失很大一部分用户的。而IBM的Bluemix可以说是各方面做的都很优秀,功能丰富、简单易用。Bluemix运行多种开发语言,包括:Java、php、Ruby、js、Go……
下面以Java语言为例,讲一下如何部署Java运行库。(以下转载自ibm网站)
使用命令行工具部署和管理应用
- 应用的部署,启动,停止,重启以及删除、
- 服务的创建,绑定,以及解除绑定等操作
- 查看和监控应用程序的日志
命令行工具一直受大多数程序员欢迎,高效并且高性能,你想在 Bluemix 上做的任何事情,都可以通过命令行工具来完成。比如下面所列,是我们和应用打交道时用到的最频繁的操作。
命令行工具的安装也很简便,请首先阅读文章末尾的参考资源安装命令行工具。使用 Bluemix 之前,需要首先注册 Bluemix 账号,访问 www.bluemix.net 注册 Bluemix 账号,当这些都完成以后,让我们开始你的平台云之旅吧!
当使用命令行部署 Java EE 的应用到 Bluemix 的时候,Bluemix 支持三种格式应用的部署,分别是:WAR,EAR 以及直接上载一个 Liberty server 到 Bluemix。除了支持这三种格式的打包文件外,还支持将打包文件解压成目录结构,通过命令行将整个目录结构上传并部署到 Bluemix 环境。我们这里将以一个 WAR 应用为例子来详细讲解每一步的操作,关于其他两种格式的应用的部署与 WAR 应用的部署几乎是一样的,详细介绍请阅读参考资源——部署 Liberty 应用到 Bluemix。
登录 Bluemix
使用之前注册的用户名和密码登录到 Bluemix,为部署应用做准备:
首先,使用“cf api”建立于 Bluemix 的连接,连接地址是 https://api.ng.bluemix.net
清单 1. 连接 Bluemix
USAGE:
cf api [URL]
C:\Users\IBM_ADMIN>cf api https://api.ng.bluemix.net
Setting api endpoint to https://api.ng.bluemix.net...
OK
API endpoint: https://api.ng.bluemix.net (API version: 2.2.0)
Not logged in. Use ‘cf login‘ to log in.
其次,运行“cf login”登录到 Bluemix 并选择所要工作的组织和空间
清单 2. 登录 Bluemix
USAGE: cf login [-a API_URL] [-u USERNAME] [-p PASSWORD] [-o ORG] [-s SPACE] C:\Users\IBM_ADMIN>cf login API endpoint: https://api.ng.bluemix.net Username> [email protected] Password> Authenticating... OK Select an org (or press enter to skip): 1. [email protected] 2. OE_Runtimes_SVT Org> 1 Targeted org [email protected] Targeted space dev API endpoint: https://api.ng.bluemix.net (API version: 2.2.0) User: [email protected] Org: [email protected] Space: dev
部署应用到 Bluemix
本文提供一个例子应用供大家下载部署使用,这个应用是 HelloWithMongo.war,里面包含了一个简单的 servlet 以及一些对 Non-SQL 数据库 Mongo 的基本操作,在 Bluemix 提供的数据库服务里包含了 Mongo 数据库,我们直接拿来使用。
运行“cf push”命令来部署应用到 Bluemix:
清单 3. 部署应用到 Bluemix
USAGE: Push a single app (with or without a manifest): cf push APP [-b BUILDPACK_NAME] [-c COMMAND] [-d DOMAIN] [-f MANIFEST_PATH] [-i NUM_INSTANCES] [-m MEMORY] [-n HOST] [-p PATH] [-s STACK] [-t TIMEOUT] [--no-hostname] [--no-manifest] [--no-route] [--no-start] C:\Users\IBM_ADMIN>cf push HelloMongoDW -p C:\A_Workspace\apps\HelloWithMongo.war Creating app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... OK Using route hellomongodw.ng.bluemix.net Binding hellomongodw.ng.bluemix.net to HelloMongoDW... OK Uploading HelloMongoDW... Uploading from: C:\A_Workspace\apps\HelloWithMongo.war 53.4K, 14 files OK Starting app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... -----> Downloaded app package (484K) OK Buildpack Version: 20140527-0132 -----> Downloading IBM 1.7.0 JRE from http://file.icap.cdl.ibm.com/icapShared/jr e/ibm-java-jre-7.0-6.0-linux-x86_64-small-footprint-uncompressed-jar-20140116.ta r.gz (0.0s) Expanding JRE to .java (1.2s) Downloading from output/wlp/com.ibm.ws.liberty-2014.4.0.0-201405270132.tar.gz .. . (0.0s). Installing archive ... (0.6s). -----> Uploading droplet (93M) 0 of 1 instances running, 1 starting 1 of 1 instances running App started Showing health and status for app HelloMongoDW in org [email protected] / spac e dev as [email protected] OK requested state: started instances: 1/1 usage: 1G x 1 instances urls: hellomongodw.ng.bluemix.net state since cpu memory disk #0 running 2014-05-30 06:45:02 PM 0.6% 329.8M of 1G 179.1M of 1G
部署成功以后可以运行“cf apps”查看应用的运行状态。在这里有几点需要说明:第一,<app_name>最好要做到唯一,不和部署在 Bluemix 上的其他应用重复,因为默认情况下这个<app_name>会和 domain 组成应用的访问连接,即:<app_name>.ng.bluemix.net,每一个应用的访问连接应该是唯一的,如果不是唯一,部署的过程中会报错提醒,我们只要换一个不一样的名字即可;第二,cf push 命令默认会将当前目录下的所有内容 push 到云端,除非我们显示的使用 –p 参数显示的指定要部署的内容;第三,从上面的输出中可以看到,应用的访问路径是“urls: hellomongodw.ng.bluemix.net”,即“http:// hellomongodw.ng.bluemix.net”,这也是默认的 Bluemix 中应用的访问路径的统一格式“appname.domain”。
绑定 MongoDB 服务到例子应用
这个例子应用使用了 Mongo 数据库,在访问应用之前需要将 Mongo 数据库绑定到已经部署成功的应用中,在 Bluemix 中使用数据库也非常简单,无需安装,无需做任何配置,只需要简单的执行几条命令:
首先,创建一个 Mongo 数据的实例
清单 4. 创建 Mongo 数据库实例
USAGE: cf create-service SERVICE PLAN SERVICE_INSTANCE C:\Users\IBM_ADMIN>cf create-service mongodb 100 mongo_demo Creating service mongo_demo in org [email protected] / space dev as [email protected] n.ibm.com... OK
如果想要得到某一种服务的 SERVICE PLAN,可以单独运行“cf marketplace”进行查看,当然,也可以查看每个服务的说明文档,这些信息都会在服务提供者提供的使用文档里进行说明。
其次,当创建好数据库实例后,需要运行一个绑定的命令将数据库实例和应用程序进行绑定,比如上面创建的 Mongo 数据库实例 mongo_demo,使用如下命令进行绑定
清单 5. 绑定 Mongo 数据库和应用程序
USAGE: cf bind-service APP SERVICE_INSTANCE C:\Users\IBM_ADMIN>cf bind-service HelloMongoDW mongo_demo Binding service mongo_demo to app HelloMongoDW in org [email protected] / spac e dev as [email protected] OK TIP: Use ‘cf push‘ to ensure your env variable changes take effect
当执行完绑定命令后,有的时候我们需要重新运行“cf push”使得数据库的绑定操作生效,操作很简单,仅仅是把之前部署应用的命令重新执行一遍,即:
清单 6. 重新部署应用
C:\Users\IBM_ADMIN>cf push HelloMongoDW -p C:\A_Workspace\apps\HelloWithMongo.war Updating app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... OK Uploading HelloMongoDW... Uploading from: C:\A_Workspace\apps\HelloWithMongo.war 53.4K, 14 files OK Stopping app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... OK Starting app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... -----> Downloaded app package (484K) -----> Downloaded app buildpack cache (4.0K) OK Buildpack Version: 20140527-0132 -----> Downloading IBM 1.7.0 JRE from http://file.icap.cdl.ibm.com/icapShared/jr e/ibm-java-jre-7.0-6.0-linux-x86_64-small-footprint-uncompressed-jar-20140116.ta r.gz (0.0s) Expanding JRE to .java (1.1s) Downloading from output/wlp/com.ibm.ws.liberty-2014.4.0.0-201405270132.tar.gz .. . (0.0s). Installing archive ... (0.6s). Downloading from output/wlp/com.ibm.ws.liberty.ext-2014.4.0.0-201405270132.tar.g z ... (0.0s). Installing archive ... (0.3s). -----> Installing client jar(s) from output/serviceClient/mongo-2.10.1.jar (0.0s ) -----> Uploading droplet (119M) 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 1 of 1 instances running App started Showing health and status for app HelloMongoDW in org [email protected] / spac e dev as [email protected] OK requested state: started instances: 0/1 usage: 1G x 1 instances urls: hellomongodw.ng.bluemix.net state since cpu memory disk #0 running 2014-06-01 06:35:01 PM 0.7% 331.2M of 1G 212.9M of 1G
对比第一次部署应用到 Bluemix 的输出,最明显的变化是多了一些关于 Mongo 数据库的输出,在重新部署的时候,Bluemix 自动安装了 Mongo 数据库的驱动程序,这样应用就可以正常运行了。
在浏览器中输入“http://hellomongodw.ng.bluemix.net”,将会看成如下页面:
图 4. 访问应用主页
读者可以可以看到有两个连接,点击第一个连接,程序会首先向 Mongo 数据库中插入几条数据,然后将这几条数据检索出来,并在页面进行展现,点击 MongoServlet,应用成功返回如下页面,则说明应用成功运行了。
图 5. 操作 Mongo 数据库
点击第二个连接,程序会打印出环境变量的相关信息,从中,读者可以查看有关 Mongo 数据的连接信息,如下图:
图 6. 打印环境变量
到这里我们已经成功的在 Bluemix 上部署并运行了一个示例应用,接下来再介绍几个常用的和应用程序相关的命令:
清单 7. 其他常用命令
1. 停止,启动以及重启应用
停止:
USAGE: cf stop APP C:\Users\IBM_ADMIN>cf stop HelloMongoDW Stopping app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... OK
启动:
USAGE: cf start APP C:\Users\IBM_ADMIN>cf start HelloMongoDW Starting app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... OK 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 1 of 1 instances running App started Showing health and status for app HelloMongoDW in org [email protected] / spac e dev as [email protected] OK requested state: started instances: 1/1 usage: 1G x 1 instances urls: hellomongodw.ng.bluemix.net state since cpu memory disk #0 running 2014-06-01 09:28:56 PM 0.6% 338.5M of 1G 212.9M of 1G
重启:
USAGE: cf restart APP C:\Users\IBM_ADMIN>cf restart HelloMongoDW Stopping app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... OK Starting app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... OK 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 0 of 1 instances running, 1 starting 1 of 1 instances running App started Showing health and status for app HelloMongoDW in org [email protected] / spac e dev as [email protected] OK requested state: started instances: 1/1 usage: 1G x 1 instances urls: hellomongodw.ng.bluemix.net state since cpu memory disk #0 running 2014-06-01 09:34:03 PM 0.7% 334.8M of 1G 212.9M of 1G
2. 解绑定,删除服务实例
解绑定:
USAGE: cf unbind-service APP SERVICE_INSTANCE C:\Users\IBM_ADMIN>cf unbind-service HelloMongoDW mongo_demo Unbinding app HelloMongoDW from service mongo_demo in org [email protected] / space dev as [email protected] OK
删除:
USAGE: cf delete-service SERVICE_INSTANCE [-f] OPTIONS: -f Force deletion without confirmation C:\Users\IBM_ADMIN>cf delete-service mongo_demo Are you sure you want to delete the service mongo_demo ? y Deleting service mongo_demo in org [email protected] / space dev as [email protected] n.ibm.com... OK
3. 查看应用日志
USAGE: cf logs APP OPTIONS: --recent Dump recent logs instead of tailing
4. 删除应用
USAGE: cf delete APP [-f] OPTIONS: -f Force deletion without confirmation C:\Users\IBM_ADMIN>cf delete HelloMongoDW Really delete HelloMongoDW?> y Deleting app HelloMongoDW in org [email protected] / space dev as [email protected] ibm.com... OK
巧用 Manifest.yml 文件
当我们使用“cf push”命令部署应用的时候,这个命令有可能会变的非常冗长,在清单 3 中我们给出了其用法,这条命令有很多的参数可以选择,只要我们设置好相应的参数,就可以在一条命令里执行多个操作,例如:
cf push appName –p myapp.war –b https://github.com/ryanjbaxter/mybuildpack -i 5 –m 512M --no-start
在上述命令中,除了部署应用外,我们还额外指定了应用要使用的 Buildpack,以及应用实例的数量,分配的内存大小以及部署后是否选择启动,在开发调试的时候,每次都输入这么长的命令会显的很麻烦,为了解决这个问题,我们可以使用 manifest.yml 文件,如下是一个示例:
清单 8. Manifest 示例
applications: - name: appName path: HelloWorldDW.war memory: 512M instances: 5 buildpack: https://github.com/ryanjbaxter/mybuildpack services: - todo-mongo-db
在如上示例中,我们定义了一些在部署应用的时候应该做的操作,当我们需要部署的时候,只需简单的在命令行里运行“cf push”即可,不再需要在后面跟很多的参数,需要注意的是:第一,当运行完“cf push”后,命令行会默认加载当前路径下的 manifest.yml,如果当前路径下没有 manifest.yml 文件,需要在“cf push”后加“-f”参数,指向一个全路径。
通过 Bluemix 控制台管理应用
命令行工具为程序员提供了很多命令来完成各种工作,同时,Bluemix 也提供了一个基于浏览器的 UI 界面,结合使用,会更高的提供应用程序的开发效率,在 UI 上同样也提供了一些更加丰富的功能。要使用 UI 进行应用管理,首先我们需要先部署一个应用到 Bluemix,继续之前,请读者自行完成上节中的清单 1,清单 2 以及清单 3。
Bluemix UI 的访问连接是:https://ace.ng.bluemix.net,输入注册的 Bluemix 账号进行登录,登陆后点击仪表盘(DASHBOARD)并在右上角选择要进入的 Organization 和 Space,如下图:
图 7. 登录 Bluemix UI
如果您已经完成了清单 1 到清单 3 就会在 Applications 旁边看到一个已经部署好的应用,应用的名字是 HelloMongoDW,单击这个应用,进入应用的管理界面:
图 8. 应用管理界面
在这个界面里向程序员展示了一些关于应用的基本信息,并提供了一些关于应用的操作链接。在这里我们单击 ADD A SERVICE 为示例程序绑定一个 Mongo 数据库:
图 9. 创建 Mongo 数据库
当点击 CREATE 后,UI 会提示是否要重启应用,来使得数据库的操作生效,点击 OK,UI 会自动重启应用。应用重启后,会在应用管理界面看到一个新的 Mongo 示例,显示 Mongo 被成功的绑定了。
图 10. 成功绑定 Mongo 数据库
点击上面的 Routes 连接,我们就可以访问应用了,整个过程只需要点击几个按钮,就完成了应用的部署和服务的绑定。接下来我们再介绍几个 UI 里常用的功能:
点击上图中的 Liberty,进入运行时管理页面:
图 11. 运行时管理页面
在这个页面里,我们可以:1,查看关于程序和运行时的基本信息;2,修改程序运行实例的数量以及分配内存的大小。3,点击左侧的 Files and Logs 可以查看应用的日志输出,如下图:
图 12. 查看应用日志输出
同时,我们还可以点击 CATALOG 去查看 Bluemix 提供的运行时和服务的详细列表和使用说明,如下图:
图 13. Bluemix 功能一览
点击 DOCS 可以查看 Bluemix 的所有文档,点击 COMMUNITY,进入 Bluemix 的开发者社区,在使用 Bluemix 的过程中碰到的任何疑问都能在这里找到合适的答案。在这里我们就不再一一介绍,有兴趣的读者可以自行研读,并做一些实际的操作。
安装 Eclipse 插件开发和部署应用
一个应用从无到有需要借助开发工具来完成应用的开发,大多数 Java 程序员的选择都是 Eclipse,Bluemix 同样提供了丰富的插件来帮助程序员使用 Eclipse 与 Bluemix 进行联合开发,装上了 Bluemix 插件的 Eclipse 可以连接到 Bluemix 平台上,在 Eclipse 里只需一个简单的拖拽动作就能将应用快速的部署到 Bluemix 上,同时插件还提供了完成的应用生命周期的管理功能。在 Eclipse Marketplace 中搜索 Bluemix 并安装插件到 Eclipse 中就能方便的使用这些功能:
图 14. 使用 Eclipse 插件开发 Bluemix 应用
除了可以进行应用开发外,Bluemix 还提供了一种称为 Dev Ops 的服务,通过该服务,可以实现应用的持续集成,敏捷开发,除了这些,Dev Ops 还提供了一个基于 Web 页面的 IDE,程序员只需要打开浏览器就能进行应用程序的开发,并将开发完成的应用一键部署到云端,这些对于开发人员来说都是非常高效有用的工具。详细的使用方法都可以在参考资源里找到。
总结
Bluemix 给程序员带来的便利还有很多,在这里我们只能窥见一斑,不能做到事事巨细,希望通过本文的介绍让更多的程序员了解平台云带给 IT 的变化。云计算已经正在改变着人们的生活方式,作为程序员的我们,也同样在经历着这些变化,一种新的工具或者平台的出现,必定有其存在的理由,更要有其适合发展的土壤,IBM Bluemix 就是这样一个平台,虽然目前提供的功能还不是特别完善,但是随着云计算的不断发展,Bluemix 也将会不断演进,不断的提供更多的功能来服务程序员,并引领云计算带给 IT 的变化。
以上是关于Bluemix使用与其他云平台对比的主要内容,如果未能解决你的问题,请参考以下文章