`
timeson
  • 浏览: 146413 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

从项目开发到云端架构(13)

 
阅读更多

4.4  Openshift

       去年5月,Redhat在波士顿峰会上启动了PaaS平台项目OpenShift。时隔一年之后,Redhat宣布将OpenShift Origin项目开源。Origin既是PaaS平台OpenShift的开源代码库,也是其社区与项目的名称。Openshift OriginOpenshift的开源版本,可以用来创建、部署以及管理云端的app。根据每个app使用到的服务的类型(数据库、语言环境),Oepnshift会为你提供一个文件系统为你创造运行环境(a template file system layout is provided)。同时也负责DNS服务。

 

       OpenShift PaaS平台包含许多开发者喜爱的功能,如MongoDBNode.js;简便的命令行和Web界面;支持开发者插入自己喜爱的框架;它是首个支持企业级JavaPaaS平台,支持JEE6JBoss和其Eclipse集成开发环境以及MavenJenkins自动化。而且,使用OpenShift的人数及社区人数在不断增长。

 

4.4.1            简单介绍

OpenShift提供比其他PaaS更多的灵活性,特点如下:

  •  支持用于JavaPythonPHPPerlRuby的更多的开发框架,包括 SpringSeamWeldCDIRailsRackSymfonyZend FrameworkTwistedDjangoJava EE
  • 包含SQLNoSQL数据存储和一个分布式文件系统;
  • 简便的命令行和Web界面;
  • 支持开发者插入自己喜爱的框架;
  • 支持企业级JavaPaaS平台,支持JEE6JBoss
  • Eclipse集成开发环境以及MavenJenkins自动化;
  • 通过支持Jenkins,将OpenShift扩展至“构建即服务(BaaS)”,允许在云中更快的构建;
  • 支持Maven,发布应用程序依赖项解析作为构建流程的一部分,从而避免了开发人员下载依赖项,把所有东西编译成一个巨大的Java程序文件并上传到云。

 

 

4.4.2         总体架构

Platform

主要有两个部分组成:BrokerCartridges

 

 



 

44-01 Platform Overview

 

  • Broker:处理所有外部进来的请求,然后deliver给正确的处理模块。同时处理用户登录、DNSapp状态、app的管理等功能。当然用户会使用CLIweb或者JBoss工具和Broker交互
  • Cartridges:为app运行提供环境。每个Cartridge只能提供一种运行环境,比如Python或者Mysql,不能同时提供好几种。Cartridge分为两种: Framework cartridgeEmbedded cartridge,前者是提供web能力的服务,后者是DBDB web接口这类的服务。一个app显然需要至少一个Framework cartridge

 

 

系统资源和应用容器

系统为App运行提供的容器。这里有两个概念:GearNode

 

 



 

44-02 物理模式

 

  • GearGear提供了一个给Cartridges运行的容器,里面可以跑若干个Cartridge。为每个Cartridge提供有限的RAM和硬盘空间
  • Node:一个Node中有多个GearNode就是一台物理机或者一台虚拟机。因为有些Gearapp没有在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 scalingBeta

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后缀文件。文件内容包括:nameversiondependencies以及app的架构等信息。Broker可以通过这个文件来创建和修改app,同时为用户提供管理这些文件参数的REST API

 

 



 

44-05 文件描述

 

 

App Descriptor

app的描述文件包括以下的属性:

  • Name
  • Version
  • Requires:依赖列表,也就是Cartridge的列表,然后每个Cartridge都会有一个对应的Descriptor
  • Cartridge
  • Component
  • Connections:哪两个component需要互相通讯
  • Group Override:就是将不相关的Cartridge放到一个Gear里面去。
  • GearCPU、内存以及disk的配置

 

4.4.3          组件说明

 

 



 

44-06 Logical views

 

       StickShiftStickShiftopenshift的核心模块,他提供了运行整个Openshift的功能。每台VM或者物理机都必须安装一个stickshift包。它包括三个部分:

  • Controlleris 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:管理Gearapp
  • Common:顾名思义,上面两个模块的共同调用模块

 

       Proxy portsGear将自己内部的某个Cartridge暴露给外部调用,一般为了负载均衡或者供其他Gear调用。由HA proxy提供路由功能,即使是其他nodeGear,也可以访问到。

 

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

支持架构

SpringSeamWeldCDIRailsRackSymfonyZendTwistedDjangoJava EE

Spring for JavaRuby on RailsNode.js以及多种JVM开发框架

数据库

MySQL,MongoDB, MemBase,Memcache

MongoDB, MySQL and Redis

 

社区支持

采用Apache License 2.0许可,使得更多用户、开发者、供应商可以使用它,促使OpenShift的人数及社区人数在不断增长。

流水线方式的开源参与,支持几十个重要开发框架和应用服务,以及多种云基础架构部署、漏洞修复、文档及其它贡献。

定价模式

1FreeShift:是OpenShift PaaS的第一级,提供3Gear,是免费供用户使用的。它包括了自动扩展的能力,可选择编程语言,框架和数据仓库,到社区提供支持。

2MegaShift。提供16Gear,能获得红帽的技术支持。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、它是首个支持企业级JavaPaaS平台,支持JEE6JBoss和其Eclipse集成开发环境以及MavenJenkins自动化。可以支持Java EE6的平台即服务产品,在云上为Java提供全面的生命周期支持。

3OpenShift 基于开源和开放标准构建,应用程序在运行时环境中能够保持可移植性,支持开发者插入自己喜爱的框架。

4OpenShift依靠GitJenkinsMaven等标准开发工具,以及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

  • 大小: 4.9 KB
  • 大小: 18.9 KB
  • 大小: 17.1 KB
  • 大小: 22.9 KB
  • 大小: 46.7 KB
  • 大小: 48.5 KB
  • 大小: 31.5 KB
  • 大小: 28.1 KB
分享到:
评论

相关推荐

    模拟云端系统项目

    【模拟云端系统项目】是一个综合性的IT项目,它结合了前端和后端技术,旨在构建一个功能完善的云端应用。...这样的项目实践能帮助开发者深入理解云端应用的开发流程和架构设计,提升在分布式系统中的实战能力。

    云端第三代系统开发

    在当前数字化时代,"云端第三代系统开发"是一个重要的议题,它涉及到如何利用先进的技术构建高效、易用且灵活的云服务平台。在这个系统开发过程中,Java作为主要编程语言扮演着核心角色。下面我们将深入探讨这个话题...

    云端系统源码第二版

    云端系统源码第二版是一个...综上所述,云端系统源码第二版是一个涉及多方面技术和实践的综合项目,涵盖了从底层基础设施到上层应用服务的全方位设计。深入理解和掌握这些知识点对于开发、运维和管理云端系统至关重要。

    android基于webservice云端运用最新代码EasyEnglish

    在Android开发中,结合Web服务(Webservice)可以实现丰富的云端功能,比如数据同步、远程API调用等。"android基于webservice云端运用最新代码EasyEnglish"是一个示例项目,展示了如何在Android应用中集成Webservice...

    wiki云端知识库平台项目

    以上内容仅是对“wiki云端知识库平台项目”可能涉及的技术栈和概念的一个概述,具体实现可能根据开发团队的选择和技术栈有所不同。对于学习者来说,深入理解并掌握这些知识点,将对个人的技能提升和未来职业发展...

    鸿蒙Linux+项目文档+开发工具+harmonyOS+在线开发地址.rar

    综上所述,这个压缩包是鸿蒙OS开发者的一站式资源库,涵盖了从系统底层到应用开发的各个环节,对于想要涉足鸿蒙OS领域的开发者而言,是一个宝贵的资料集合。通过深入学习和实践,开发者可以更好地掌握鸿蒙OS的开发...

    自制云端脚本获取器

    “云端”意味着它涉及到云存储或云计算的服务。“脚本”指的是可执行的代码文件,如JavaScript、Python等,可能是网页脚本或者其他类型的程序。“获取器”和“下载器”则说明了工具的功能,即获取并下载云端的脚本...

    C#项目开发全程实录-源代码

    通过研究这些源代码,初学者可以学习到实际项目开发中的最佳实践,而有经验的开发者则可以借鉴其中的设计模式和问题解决策略。无论是独立学习还是团队协作,这个资源都能提供宝贵的经验和洞察。

    悟空项目管理-基于Spring Cloud Alibaba微服务架构 +vue ElementUI的前后端分离项目管.zip

    9. **部署与运维**: 项目可能还包含了部署和运维相关的文档,例如Dockerfile或者Kubernetes配置,帮助开发者将应用部署到云端或本地环境。 这个项目不仅提供了实际的代码实现,还可以作为学习微服务架构、前后端...

    SRA2021-G03-项目开发计划1.71

    【SRA2021-G03-项目开发计划1.71】是关于一...总之,"SRA2021-G03-项目开发计划1.71"是一个全面的项目管理文档,它涵盖了项目从启动到完成的所有关键环节,旨在确保团队高效协作,成功开发出满足需求的云端知识库APP。

    SRA2021-G03-项目开发计划1.81

    总结,SRA2021-G03-项目开发计划1.81是一个旨在构建云端知识库APP的详尽蓝图,涵盖了项目从需求分析到实施、测试、上线及后续维护的全过程。通过这个计划,团队能够有序地进行开发工作,确保知识库应用能高效、安全...

    云计算系统架构文档 汇总上

    DevOps 从云端到地面 熊节 pdf DevOps 让持续交付成为可能 乔梁 pdf eBay技术平台:掌控十亿级交易数据 Tony Ng pdf Facebook大数据实时分析案例分享 Uri pdf Java EE 7 平台:应云而生 Tyler Jewell pdf JS ...

    JSP+SSM项目-云端学习系统的Java毕业设计.rar

    JSP+SSM项目-云端学习系统的Java毕业设计.rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:345】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 端学习系统在...

    SAAS架构设计模式SAAS架构设计模式

    它的出现是为了解决软件开发和维护的成本问题,通过将软件部署到云端,提供基于互联网的软件服务,用户可以通过互联网访问和使用软件。 SAAS 架构设计模式的优势包括: 1. 用户方面:拿来即用,无须维护,按需使用...

    构筑大语言模型应用:应用开发与架构设计.zip

    《构筑大语言模型应用:应用开发与架构设计》是一份深度探讨大语言模型在实际应用中的开发和架构设计的资源集合。这份资料来源于GitHub上的开源项目phodal/aigc,旨在帮助开发者理解和利用大语言模型的技术,提升...

    Android-物联网环境监测数据中心-物联网项目开发

    在物联网项目开发中,可能还需要特定的物联网协议解析或设备模拟插件。 3. **物联网架构**: 物联网环境监测系统通常包含传感器节点、网关和云端平台三个部分。传感器节点负责采集环境数据,如温度、湿度、光照等...

    Android项目开发报告 (2).pdf

    总结,本Android项目开发报告全面展示了项目开发的各个方面,从底层的平台架构到上层的功能实现,再到数据库和项目组织,为开发者提供了清晰的开发指南。通过这样的报告,不仅可以评估项目的成熟度,也便于团队协作...

    微信小程序项目源码云开发cloudtest.zip

    9. **版本控制**:在项目开发过程中,版本控制非常重要。微信开发者工具允许开发者进行代码版本管理,便于团队协作和回滚更改。 10. **发布与更新**:完成开发后,开发者可以在微信开放平台上提交审核,待审核通过...

    springboot集成netty,使用protobuf作为数据交换格式,可以用于智能终端云端服务脚手架

    本项目“springboot-netty-protobuf-master”旨在提供一个基础架构,它利用了Spring Boot的便捷性以及Netty的高效网络通信能力,同时采用Google的Protocol Buffers(protobuf)作为数据交换格式,确保数据传输的高效...

Global site tag (gtag.js) - Google Analytics