- 浏览: 144133 次
- 性别:
- 来自: 长沙
最新评论
-
huyang406:
楼主写的太好了!顶一个,最近刚好要做一个clouify相关的项 ...
从项目开发到云端架构(14) -
fengqiao678:
看了楼主写的loudify的文章,感觉楼主理解的好透彻,我们最 ...
从项目开发到云端架构(14) -
timeson:
《云端平台的设计和实现》《云端平台的运营和管理》《云端平台的资 ...
从项目开发到云端架构(20) -
wangbingqiang:
你好。虽然是两年前写的,但是还是受益匪浅。求《云端平台的设计和 ...
从项目开发到云端架构(20) -
fakey:
楼主,你写的文章太精彩了,学习了,非常感谢!能否把补充资料打包 ...
从项目开发到云端架构(14)
从项目开发到云端架构(13)
- 博客分类:
- 云端架构
4.4 Openshift
去年5月,Redhat在波士顿峰会上启动了PaaS平台项目OpenShift。时隔一年之后,Redhat宣布将OpenShift Origin项目开源。Origin既是PaaS平台OpenShift的开源代码库,也是其社区与项目的名称。Openshift Origin是Openshift的开源版本,可以用来创建、部署以及管理云端的app。根据每个app使用到的服务的类型(数据库、语言环境),Oepnshift会为你提供一个文件系统为你创造运行环境(a template file system layout is provided)。同时也负责DNS服务。
OpenShift PaaS平台包含许多开发者喜爱的功能,如MongoDB和Node.js;简便的命令行和Web界面;支持开发者插入自己喜爱的框架;它是首个支持企业级Java的PaaS平台,支持JEE6与JBoss和其Eclipse集成开发环境以及Maven和Jenkins自动化。而且,使用OpenShift的人数及社区人数在不断增长。
4.4.1 简单介绍
OpenShift提供比其他PaaS更多的灵活性,特点如下:
-
支持用于Java、Python、PHP、Perl和Ruby的更多的开发框架,包括 Spring、Seam、Weld、CDI、Rails、Rack、Symfony、Zend Framework、Twisted、Django和Java EE;
-
包含SQL和NoSQL数据存储和一个分布式文件系统;
-
简便的命令行和Web界面;
-
支持开发者插入自己喜爱的框架;
-
支持企业级Java的PaaS平台,支持JEE6与JBoss
-
其Eclipse集成开发环境以及Maven和Jenkins自动化;
-
通过支持Jenkins,将OpenShift扩展至“构建即服务(BaaS)”,允许在云中更快的构建;
-
支持Maven,发布应用程序依赖项解析作为构建流程的一部分,从而避免了开发人员下载依赖项,把所有东西编译成一个巨大的Java程序文件并上传到云。
4.4.2 总体架构
Platform
主要有两个部分组成:Broker和Cartridges
图44-01: Platform Overview
-
Broker:处理所有外部进来的请求,然后deliver给正确的处理模块。同时处理用户登录、DNS、app状态、app的管理等功能。当然用户会使用CLI、web或者JBoss工具和Broker交互
-
Cartridges:为app运行提供环境。每个Cartridge只能提供一种运行环境,比如Python或者Mysql,不能同时提供好几种。Cartridge分为两种: Framework cartridge和Embedded cartridge,前者是提供web能力的服务,后者是DB、DB web接口这类的服务。一个app显然需要至少一个Framework cartridge
系统资源和应用容器
系统为App运行提供的容器。这里有两个概念:Gear和Node。
图44-02: 物理模式
-
Gear:Gear提供了一个给Cartridges运行的容器,里面可以跑若干个Cartridge。为每个Cartridge提供有限的RAM和硬盘空间
-
Node:一个Node中有多个Gear,Node就是一台物理机或者一台虚拟机。因为有些Gear的app没有在run,所以一般Node会超载,就是存放了超过限额的Gear
Applications
图44-03: app结构
-
Domian:每个用户只有一个Domain
-
App Name:每个app有一个unique的名字
-
Aliases:可以为一个app提供一个别名,也就是另外一个URL
-
App dependencies:就是app依赖于哪些Catridges
-
App Git Repository:就是用户把代码push上去的地方
Horizontal scaling(Beta)
Beta版的。。。目前Openshift就是用HA proxy来实现负载均衡。GIT部署作为end point for the application(个人理解就是真正部署的工具是GIT)。HA proxy的运作方式也很简单:如果有请求,那么把请求转发到正确的Gear即可。然后部署方式是:用户向HA proxy 的gear push代码。那么HA proxy将代码在分别push到每个运行的Gear上面去
图44-04: 水平扩展能力
Describing an application using descriptors
Openshift使用一个descriptor文件来build app。文件是YAML文件类型,就是yml后缀文件。文件内容包括:name、version、dependencies以及app的架构等信息。Broker可以通过这个文件来创建和修改app,同时为用户提供管理这些文件参数的REST API。
图44-05: 文件描述
App Descriptor
app的描述文件包括以下的属性:
-
Name
-
Version
-
Requires:依赖列表,也就是Cartridge的列表,然后每个Cartridge都会有一个对应的Descriptor
-
Cartridge:
-
Component:
-
Connections:哪两个component需要互相通讯
-
Group Override:就是将不相关的Cartridge放到一个Gear里面去。
-
Gear:CPU、内存以及disk的配置
4.4.3 组件说明
图44-06: Logical views
StickShift:StickShift是openshift的核心模块,他提供了运行整个Openshift的功能。每台VM或者物理机都必须安装一个stickshift包。它包括三个部分:
-
Controller:is a Rails Engine (plugin) which includes a REST API, business logic and state management for the PaaS platform. It also includes a set of plugin APIs for DNS management, authentication, data/state storage, and broker-node communications.
-
Node:管理Gear和app
-
Common:顾名思义,上面两个模块的共同调用模块
Proxy ports:Gear将自己内部的某个Cartridge暴露给外部调用,一般为了负载均衡或者供其他Gear调用。由HA proxy提供路由功能,即使是其他node的Gear,也可以访问到。
4.4.4 业务流程
Primary user interactions
就是一张创建一个PHP app的图例:
图34-07 创建应用的过程
Applciation deployment using Jenkins
可以使用Jenkins这个工具来帮助部署app,也就是通过它和openshift交互,来实现部署。
图34-08 持续交付的过程
4.4.5 安装部署
4.4.6 开发方式
4.4.7 和CF比较
|
Openshift |
Cloud foundry |
支持语言 |
Java, Java EE, Python, Perl, PHP, Ruby |
Java / Spring, Groovy/Grails, Ruby Rails& Sinatra, Node.js |
支持架构 |
Spring、Seam、Weld、CDI、Rails、Rack、Symfony、Zend、Twisted、Django、Java EE |
Spring for Java、Ruby on Rails、Node.js以及多种JVM开发框架 |
数据库 |
MySQL,MongoDB, MemBase,Memcache |
MongoDB, MySQL and Redis |
社区支持 |
采用Apache License 2.0许可,使得更多用户、开发者、供应商可以使用它,促使OpenShift的人数及社区人数在不断增长。 |
流水线方式的开源参与,支持几十个重要开发框架和应用服务,以及多种云基础架构部署、漏洞修复、文档及其它贡献。 |
定价模式 |
1、FreeShift:是OpenShift PaaS的第一级,提供3个Gear,是免费供用户使用的。它包括了自动扩展的能力,可选择编程语言,框架和数据仓库,到社区提供支持。 2、MegaShift。提供16个Gear,能获得红帽的技术支持。MegaShift起价计划按每月收取42美元,超过三个容量块对每个容量块按小时收费。 |
通过cloudfoundry.com,免费提供CloudFoundry软件的普通实例,旨在通过针对一些比较高级的中间件(面向云托管的应用程序)收取许可费来获利,但它不提供任何的服务级别协议。 |
平台组件 |
JBoss Operations Network Cloud Admin Portal Image Toolchain Application Engine Cloud User Portal JBoss Developer Studio开发工具 |
Router DEA(Droplet Execution Agency) CloudController HealthManager Services NATS(Message bus) |
技术特点 |
1、它提供了各种语言的平台给你选择,包括Ruby, Python, PHP 以及当前热门的 Node.js等等,与此同时还提供一些开发应用框架的一键安装,比如 ROR, WordPress 等等。 2、它是首个支持企业级Java的PaaS平台,支持JEE6与JBoss和其Eclipse集成开发环境以及Maven和Jenkins自动化。可以支持Java EE6的平台即服务产品,在云上为Java提供全面的生命周期支持。 3、OpenShift 基于开源和开放标准构建,应用程序在运行时环境中能够保持可移植性,支持开发者插入自己喜爱的框架。 4、OpenShift依靠Git、Jenkins、Maven等标准开发工具,以及Eclipse等集成开发环境,简化应用程序开发和维护。 |
1、开发者可以保留自己的代码编写习惯,不需要做改变,在任何地方可以运行。满足多云需求,作为平台即服务开源项目,保护开发者不被锁定在任何特定云中。 2、该系统在设计时就已经设计成可自愈的,并且在各层级都可水平扩展,既能在大型数据中心里运行,也能运行在一台桌面电脑中,二者使用相同的代码库。 3、通过将CF源代码融合到GitHub的公共代码库中,与Gerrit集成进行代码审查,与Jenkins集成进行持续整合,新流程将社区代码贡献简单化,提高了代码质量,同时能够更清晰的看到代码变化。 4、对系统进行扩展不会导致正在活动的用户和应用停止服务,系统提供负载均衡和高可用的能力。 |
表44-1 :openshift 与cloudfoundry比较
上一篇 从项目开发到云端架构(12) : http://timeson.iteye.com/blog/1692198
下一篇 从项目开发到云端架构(14) : http://timeson.iteye.com/blog/1699730
发表评论
-
从项目开发到云端架构(20)
2013-02-06 16:01 23365.5 DIY after 这里 ... -
从项目开发到云端架构(19)
2012-11-18 19:05 22545.4 健壮Paas ... -
从项目开发到云端架构(18)
2012-11-06 10:19 26035.3 扩展PaaS 在Paas平台的奴隶时 ... -
从项目开发到云端架构(17)
2012-10-29 08:25 25005.2 基本PaaS 如前所述,采用脚本模式 ... -
从项目开发到云端架构(16)
2012-10-22 12:39 39925 PaaS DIY PaaS是一个 ... -
从项目开发到云端架构(15)
2012-10-20 08:38 26884.6 Jelastic Jelastic是 ... -
从项目开发到云端架构(14)
2012-10-16 19:42 112074.5 Cloudify Cloud fo ... -
从项目开发到云端架构(12)
2012-10-07 15:25 36254.3 CloudFoundry Clou ... -
从项目开发到云端架构(11)
2012-10-04 09:09 50874 云端平台 图40-01: ... -
从项目开发到云端架构(10)
2012-09-28 14:25 25163.2 云平台的结构 云计算是: 是一种基 ... -
从项目开发到云端架构(09)
2012-09-27 21:19 38373.1.2 演进的抽象 ... -
从项目开发到云端架构(08)
2012-09-27 09:19 22813 系统变迁 话说天下大事,分 ... -
从项目开发到云端架构(07)
2012-09-26 16:21 24012.3.5 软件测试 2.3.5. ... -
从项目开发到云端架构(06)
2012-09-26 16:16 28662.3 敏捷前行 当软件行业进入互联网时代, ... -
从项目开发到云端架构(05)
2012-09-26 16:09 23532.2.3 多租 ... -
从项目开发到云端架构(04)
2012-09-26 14:42 20981.1.1 扩展系统 2.2.2. ... -
从项目开发到云端架构(03)
2012-09-22 21:05 32492.2 项目架构 ... -
从项目开发到云端架构(02)
2012-09-22 20:43 30092 项目架构 要实现大并发高访问 ... -
从项目开发到云端架构(01)
2012-09-22 20:14 45011 总则 1.1 编写目的 云端应用 ...
相关推荐
DevOps 从云端到地面 熊节 pdf DevOps 让持续交付成为可能 乔梁 pdf eBay技术平台:掌控十亿级交易数据 Tony Ng pdf Facebook大数据实时分析案例分享 Uri pdf Java EE 7 平台:应云而生 Tyler Jewell pdf JS ...
基于PHP、MySQL等技术构建的web系统,框架,PHP学习,课程设计作业,可用于毕业设计,源码项目,可直接运行,实测! 基于PHP、MySQL等技术构建的web系统,框架,PHP学习,课程设计作业,可用于毕业设计,源码项目,...
自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。 更多其他QCon大会PPT:...
注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式展开讲解知识点,即介绍案例->案例涉及...
①兼容市面上主流的多家相机,理论上兼容所有硬件,可灵活扩展,②相机识别后数据自动上传到云端并记录,校验相机唯一id和硬件序列号,防止非法数据录入,③用户手机查询停车记录详情可自主缴费(支持微信,支付宝,...
该网上商城系统采用了JavaWeb、JSP和Servlet作为开发技术,基于MVC设计模型进行构建。MVC(Model-View-Controller)是一种软件设计模式,将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller...
同时我们也提供了对应的源代码,可以查看源代码,克隆或下载项目到本地进行修改,在本地通过CloudBase CLI进行一键部署。 Daruk是一款基于Koa2,使用Typescript开发的轻量级web框架,使用。 ThinkJS是一种可以使用...
支持数据采集写入到HDFS、HBase、Hive等大数据库中。 支持准实时数据的采集和处理。 数据存储处理: 支持原来BW数据仓库的数据逐层转换处理。 支持Hadoop大数据库中进行分布式海量数据的并行处理。 ...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
基于Java智慧校园云端管理系统的设计和实现源码(毕设源码).zip 【资源说明】 该项目是个人毕设项目源码,评审分达到97分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关...
基于云开发的校园服务项目,简单易上手的wx校园服务小程序,服务广大大学生练手项目,完全开源 软件架构: 前端应用wx原生的weui组件库 后台基于云开发技术生成可视化管理后台 安装教程: 源码下载后解压至电脑...
专为开发者提供稳定、高效、安全的云端软件开发协作平台 无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 https://gitee.com/enterprises} 软件架构 软件架构说明 ...
资源包含STM32源码,ESP源码,原理图,PCB,项目描述说明,PPT,前后端架构图,架构设计,数据库设计,使用SpringBoot框架开发的服务端源码,Android手机APP源码 后端采用SpringBoot开发,Android客户端采用MMVM...
DiyGw是一个基于TwoTHink开源的内容管理框架,由Onethink基础上升级到最新的ThinkPHP5.0.6版本开发,提供更方 便、更安全的WEB应用开发体验,采用了全新的架构设计和命名空间机制,融合了模块化、驱动化和插件化的...
专为开发者提供稳定、高效、安全的云端软件开发协作平台 无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 } 软件架构 软件架构说明 安装教程 xxxx xxxx xxxx 使用说明 ...
利用SpringBoot的快速开发能力和微服务架构,该系统旨在提供一种集中化的方式来上传、存储、整理和分享各种格式的多媒体文件,如图片、音频、视频等。 采用前后端分离的设计哲学,前端可能运用了现代JavaScript框架...
安卓项目的开发结构,有原来最初的mvc,到后来有人提出的mvp,然后到mvvm的发展,无非就是依着六大设计原则的不断解耦,不断演变,使得项目的开发高度组件化,满足日常复杂多变的项目需求。 依赖倒置原则-...
《google android sdk开发范例大全(第3版)》继承前两版由浅入深的方式,范例总数由原先的160多个增加到了200多个,在用户交互界面、手机控件、交互式通信服务、手机自助服务、娱乐多媒体等方面均增加了相应的范例...