在1990年代的互联网泡沫时期,用于Web应用程序的一种通用软件堆栈是LAMP,它最初代表Linux(OS),Apache(Web服务器),MySQL(关系数据库)和PHP(服务器编程语言)。MySQL是首选的数据库,主要是因为它是免费的开源代码,并且具有良好的读取性能,非常适合从数据库动态生成网站的“ Web 2.0”应用程序。
之后,代表MongoDB(文档数据库),Express(Web服务器),AngularJS(前端框架)和Node.js(后端JavaScript运行时)的MEAN堆栈开始流行。除其他原因外,MEAN堆栈很有吸引力,因为您需要了解的唯一语言是JavaScript。与等效的LAMP堆栈相比,它还需要更少的RAM。
MySQL AB的Monty Widenius和David Axmark最初于1994年开始开发MySQL。产品名称中的“ My”是指Widenius的女儿,而不是英语单词“ my”。MySQL旨在与mSQL(又名Mini)兼容。 SQL),并添加了SQL查询层和开放源代码许可(实际上是专有和GPL双重许可)。MySQL的公共发行版于1996年底开始,并且每年或每两年持续发行一次。MySQL是当前最受欢迎的关系数据库。
Sun Microsystems于2008年以10亿美元的价格收购了MySQL AB,Oracle于2010年收购了Sun。在Oracle收购MySQL的广泛关注中,Widenius在收购Oracle之前就将MySQL 5.5合并到了MariaDB中。MariaDB努力维护与Oracle MySQL版本的兼容性。
与功能更强大的商业关系数据库(例如Oracle数据库,IBM DB / 2和Microsoft SQL Server)相比,MySQL最初是一个相当低端的关系数据库,尽管它足以成为动态网站的后备存储。多年来,它增加了您希望从关系数据库获得的大多数功能,包括事务,参照完整性约束,存储过程,游标,全文索引和搜索,地理索引和搜索以及群集。
尽管MySQL现在支持“大数据库”功能,例如主从部署,与Memcached一起使用以及水平分片,但它仍通常用于中小型部署。将MySQL扩展到多个从属服务器可以提高读取性能,但是只有主服务器才能接受写请求。
AWS提供了两种形式的MySQL即服务,即Amazon RDS和Amazon Aurora。后者具有更高的性能,可以处理TB级的数据,更新副本的延迟时间更短,并且可以直接与Oracle数据库和SQL Server竞争。
MongoDB是高度可伸缩的 *** 作文档数据库,可在开源版本和商业企业版本中使用,它可以在本地运行或作为托管云服务运行。托管云服务称为MongoDB Atlas。
MongoDB无疑是NoSQL数据库中最受欢迎的数据库。它的文档数据模型为开发人员提供了极大的灵活性,而其分布式体系结构则提供了很好的可伸缩性。因此,通常选择MongoDB用于必须管理大量数据,得益于水平可伸缩性并处理不适合关系模型的数据结构的应用程序。
MongoDB是一个基于文档的存储,在其之上还具有一个基于图形的存储。MongoDB实际上并不存储JSON:它存储BSON(二进制JSON),该扩展了JSON表示(字符串)以包括其他类型,例如int,long,date,浮点,decimal128和地理空间坐标。
MongoDB可以使用数据的类型生成正确的索引类型,从而在数据的单个副本上生成多模式图形,地理空间,B树和全文本索引。MongoDB使您可以在任何文档字段上创建索引。MongoDB 4具有多文档事务,这意味着即使必须标准化数据设计,您仍然可以获得ACID属性。
默认情况下,MongoDB使用动态模式,有时称为无模式。单个集合中的文档不需要具有相同的字段集,并且字段的数据类型可以在集合中的不同文档之间有所不同。您可以随时使用动态模式更改文档结构。
但是,可以使用架构治理。从MongoDB 3.6开始,MongoDB支持JSON模式验证,您可以在验证器表达式中将其打开。
在LAMP和MEAN堆栈上存在很多变化。例如,您可以在Windows(WAMP)或MacOS(MAMP)上运行而不是Linux OS。您可以运行IIS(WIMP),而不是Windows上的Apache Web服务器。
您可以运行PostgreSQL或SQL Server,而不是LAMP堆栈中的MySQL关系数据库。如果您需要全球分布,则可以运行CockroachDB或Google Cloud Spanner。可以使用Perl或Python代替PHP语言。如果要使用Java或C#进行编码,则需要考虑单独的堆栈系列。
您可以运行Couchbase或Azure Cosmos DB以获得更好的全局分布,而不是MEAN堆栈中的MongoDB文档数据库。可以使用十二个Node.js Web服务器框架中的任何一个来代替Express 。除了AngularJS前端框架,您还可以运行Angular 2或React。
选择数据库时要问的最重要的问题是:
这些问题中的几个会趋于缩小数据库的选择范围,但是与制定LAMP堆栈时相比,我们有更多选择。如果您要构建一个应用程序,并且该应用程序必须在99.999%的时间内对全世界的用户都具有高度的一致性,那么只有少数几个数据库适合您。如果您的应用程序将在工作日的上午9点至下午6点在一个国家/地区使用,并且可以容忍最终的一致性,那么几乎所有数据库都可以使用,尽管某些数据库对于开发人员和 *** 作员而言更容易,而某些数据库则可以为您的主要使用场景提供更好的性能。
虽然LAMP和MEAN堆栈一次是Web应用程序的良好解决方案,但现在都不是最佳选择。而不是盲目采用任何一种,您应该仔细考虑用例,并找到一种可在可预见的将来为您的应用程序服务的体系结构。
您什么时候需要关系数据库(例如MySQL)用于新应用程序?除了对标准SQL的明显支持外,关系数据库本身将数据强制为具有一致的强类型字段的表格模式,并且只要您利用规范化就可以帮助您避免数据重复。
另一方面,如果您还需要偶尔的自由格式文档,则MySQL和许多其他关系数据库也支持RFC 7159定义的JSON数据。如果您还想使用XML文档和XPath或XSLT,则大多数关系数据库都可以提供这种能力。
您何时需要像MongoDB这样的文档数据库?如果您的主要用例需要允许使用自由格式的数据,在文档之间更改类型的字段,随时间变化的架构或嵌套的文档,则NoSQL数据库将满足要求。另外,如果您的应用程序是用JavaScript编写的,那么文档数据库的JSON格式将很自然。
作者: Martin Heller是InfoWorld的特约编辑和审稿人。他曾担任Web和Windows编程顾问,从1986年至2010年开发数据库,软件和网站。最近,他担任Alpha Software技术和教育副总裁以及Tubifi董事长兼首席执行官。
OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软体和开放原始码项目。
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
OpenStack是一个旨在为公共及私有云的建设与管理提供软体的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设定及管理自己的公共云或私有云。
OpenStack云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模组:Nova 和 Swift,前者是 NASA 开发的虚拟伺服器部署和业务计算模组;后者是 Rackspace开发的分散式云存储模组,两者可以一起用,也可以分开单独用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台 Eucalyptus 的态势。
基本介绍中文名 :OpenStack云计算管理平台 外文名 :OpenStack 开发者 :NASA,Rackspace 程式语言 :Python 遵循标准 :Open 、AMQP、SQLAlchemy 运用范围,厂商支援,技术资料,项目,核心项目,社区项目,市场趋向,大型用户,内容详解,构建私有云,服务中心,概述,系统构成,服务内容,服务体验,服务价值,成员企业, 运用范围 OpenStack是IaaS(基础设施即服务)组件,让任何人都可以自行建立和提供 云端运算 服务。 此外,OpenStack也用作建立 防火墙 内的“ 私有云 ”(Private Cloud),提供机构或企业内各部门共享资源。 厂商支援 美国国家航空航天局的Nebula运算平台。 美国国家航空航天局的Nebula运算平台。 现时已表示支持OpenStack项目的大型硬体厂商包括:IBM、AMD、Intel和戴尔等。 微软在2010年10月表示支持OpenStack与Windows Server 2008 R2的整合。 2011年2月,思科系统正式加入OpenStack项目,重点研制OpenStack的网路服务。 Ubuntu未来在堆叠方面的云网路化方案。 2012年4月,IBM宣布加入OpenStack项目,并作为主要赞助商。 2012年10月,Viacloud互联云平台加入OpenStack项目,研制OpenStack公有云平台和私有云平台。 IBM在2013年举行的 IBM Pulse大会宣布将基于OpenStack提供私有云服务以及相关套用。 技术资料 以Python程式语言编写 整合Tornado 网页伺服器、Nebula运算平台 使用Twisted软体框架 遵循Open Virtualization Format、AMQP、SQLAlchemy等标准 虚拟机器软体支持包括:KVM、Xen、VirtualBox、QEMU、 LXC 等。 项目 核心项目 OpenStack覆盖了网路、虚拟化、作业系统、伺服器等各个方面。它是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目、孵化项目,以及支持项目和相关项目。每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟度和重要性,转变为核心项目。截止到Icehouse版本,下面列出了10个核心项目(即OpenStack服务)。 计算(Compute):Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等 *** 作,配置CPU、记忆体等信息规格。自Austin版本集成到项目中。 对象存储(Object Storage):Swift。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索档案。可为Glance提供镜像存储,为Cinder提供卷备份服务。自Austin版本集成到项目中 镜像服务(Image Service):Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。自Bexar版本集成到项目中。 身份服务(Identity Service):Keystone。为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到项目中。 网路&地址管理(Neork):Neutron。提供云计算的网路虚拟化技术,为OpenStack其他服务提供网路连线服务。为用户提供接口,可以定义Neork、Sub、Router,配置DHCP、DNS、负载均衡、L3服务,网路支持GRE、VLAN。外挂程式架构支持许多主流的网路厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。 块存储 (Block Storage):Cinder。为运行实例提供稳定的数据块存储服务,它的外挂程式驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。 UI 界面 (Dashboard):Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的 *** 作,例如:启动实例、分配IP位址、配置访问控制等。自Essex版本集成到项目中。 测量 (Metering):Ceilometer。像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。自Havana版本集成到项目中。 部署编排 (Orchestration):Heat。提供了一种通过模板定义的协同部署方式,实现云基础设施软体运行环境(计算、存储和网路资源)的自动化部署。自Havana版本集成到项目中。 资料库服务(Database Service):Trove。为用户在OpenStack的环境提供可扩展和可靠的关系和非关系资料库引擎服务。自Icehouse版本集成到项目中。 社区项目 (14个) 负载均衡:Atlas-LB(Rackspace) 讯息伫列:Burrow(Piston) 云管理工具:Clanavi(Drupal) 自动部署:Crowbar(Dell) 服务部署:Juju(Ubuntu) 关系型资料库:RedDwarf(Rackspace) ... 市场趋向 Rackspace以OpenStack为基础的私有云业务每年营收7亿美元,增长率超过了20%。 OpenStack虽然有些方面还不太成熟,然而它有全球大量的组织支持,大量的开发人员参与,发展迅速。国际上已经有很多使用OpenStack搭建的公有云、私有云、混合云,例如:RackspaceCloud、惠普云、MercadoLibre的IT基础设施云、AT&T的CloudArchitec、戴尔的OpenStack解决方案等等。而在国内OpenStack的热度也在逐渐升温,华胜天成、高德地图、京东、阿里巴巴、百度、中兴、华为等都对OpenStack产生了浓厚的兴趣并参与其中。自2010年创立以来,已发布10个版本。其中Icehouse版本有120个组织、1202名代码贡献者参与,而最新的是Juno版本。OpenStack很可能在未来的基础设施即服务(IaaS)资源管理方面占据领导位置,成为公有云、私有云及混合云管理的“云作业系统”标准 大型用户 美国国家航空航天局 加拿大半官方机构CANARIE网路的DAIR(Digital Aelerator for Innovation and Research)项目,向大学与中小型企业提供研究和开发云端运算环境;DAIR用户可以按需要快速建立网路拓扑。 惠普云(使用Ubuntu Linux) MercadoLibre的IT基础设施云,现时以OpenStack管理超过6000 台虚拟机器。 AT&T的“Cloud Architect”,将在美国的达拉斯、圣地亚哥和新泽西州对外提供云端服务。 内容详解 创建虚拟机(VM)需要各种服务的互动和配合工作。下图展示了OpenStack典型环境架构,各个服务之间的互动和职能。 OpenStack典型环境架构 OpenStack因Open而开放,因组件而灵活,因包容而博大。有计算、网路、对象存储、块存储、身份、镜像服务、门户、测量、部署编排、资料库服务等等组件,有的组件可以根据需要选择安装,组网结构也很灵活、多样。实现了支持接入多种主流虚拟机软体:KVM、LXC、QEMU、Hyper-V、VMware、XenServer,也可以自行开发外挂程式接入其他的虚拟化软体。 OpenStack Compute (Nova)是一套控制器,用于为单个用户或使用群组启动虚拟机实例。它同样能够用于为包含着多个实例的特定项目设定网路。OpenStack Compute在公共云处理方面堪与Amazon EC2相提并论;而在私有云方面也毫不逊色于VMware的产品。在公共云中,这套管理机制将提供预制的镜像或是为用户创建的镜像提供存储机制,这样用户就能够将镜像以虚拟机的形式启动。 OpenStack 对象存储(Swift)是一套用于在大规模可扩展系统中通过内置冗余及容错机制实现对象存储的系统。这些对象能够通过一个REST API或是像Cyberduck这样可以对接对象存储API的客户端加以恢复。 OpenStack镜像服务 (Glance)是一套虚拟机镜像查找及检索系统。它能够以三种形式加以配置:利用OpenStack对象存储机制来存储镜像;利用Amazon的简单存储解决方案(简称S3)直接存储信息;或者将S3存储与对象存储结合起来,作为S3访问的连线器。OpenStack镜像服务支持多种虚拟机镜像格式,包括VMware(VMDK)、Amazon镜像(AKI、ARI、AMI)以及VirtualBox所支持的各种磁碟格式。镜像元数据的容器格式包括Amazon的AKI、ARI以及AMI信息,标准OVF格式以及二进制大型数据。 OpenStack的开发周期是每年固定发布两个新版本,并且每一个新版软体发布时,开发者与项目技术领导者已经在规划下一个版本的细节。这些开发者来自全球70多个组织,超过1600人。他们采用高级的工具与开发方式,进行代码查看、持续的集成、测试与开发架构,让版本在快速成长的同时也能确保稳定性。 构建私有云 第一步是设定正确的硬体和网路环境。尽管OpenStack允许在一个单一的平面网路上部署一切,从安全的角度来看并不安全。取决于你所使用的管理程式以及虚拟网路接口,它会允许guest虚拟机嗅探管理流量。建议至少使用两个网路:一个用来管理流量,一个用来进行虚拟机之间的对话。这意味着所有的云计算结点中你需要两个网卡(一个运行实例)和网路管理者。这些应该运行在不同的IP范围中。计算结点和实例的网路也需要支持VLAN标记,因为这是在“项目”之间隔绝流量所使用的机制。一个项目等价于你的亚马逊EC2账户,除了你不能按照你所希望的数目创建和分配之外。每一个项目都有自己的管理员和用户,在既定项目中的所有实例可以彼此通信。通过指派每一个项目自己的VLAN以及内部和外部的IP位址池来执行。 一旦硬体和网路设定好,下一步就是确定在哪里部署所有的OpenStack组件。标准部署应有一个控制器和一系列计算结点。控制器运行讯息伺服器,资料库和其他的组件来编排云,同时计算结点运行实例。但是你也可以分解控制器为地理的部分,从而改善性能,像把MySQL放在不同的物理盒中。对于安全而言,最关键的是确保每一部分都安装在安全的主机上,你只需要将其附加在网路上,让云运转即可。 只有两部分需要暴露给外面的世界(即使那只是你的企业网路):API伺服器/Web 控制台(如果开启)和网路管理者。这些伺服器需要过硬,你甚至可以使用第三方网路接口来隔离后端管理用户连线产生的流量。 如果你遵循默认安装说明书,可能这些部分并不如他们应该的那样安全。下面是一些具体的改变: * MySQL伺服器使用指定的用户账户,不是根MySQL管理账户。这个账户和密码将会暴露在每一个云结点上,即使使用基于证书的认证,因此所有结点需要访问这个资料库伺服器。 * MySQL配置档案中,限制访问伺服器,OpenStack用户账户为唯一授权IP位址。 * 移除任何不需要的OS组件并确保你所设定的伺服器只支持通过SSH的基于密钥的登入。 * 默认MySQL和RabbitMQ(讯息伺服器)流量不加密。如果你隔离了管理网路和坚固的主机,这就不应该是一个很糟糕的风险。如果你的云网路易于嗅探(例如,它和其他伺服器共享网路),你需要加密流量。你可以使用OpenSSL来进行MySQL 和RabbitMQ处理。(我个人还没进行测试,因此配置可能有点难。) 下一步,记住如果支持Web管理控制台,默认不适用SSL。 服务中心 中国OpenStack服务中心 概述 2013年6月18日在南京召开了“中国云计算产业促进大会暨中国OpenStack服务中心发布会”,华胜天成在会上正式宣布推出中国首家OpenStack服务中心。OpenStack是全球开发者共同参与的一个开源项目,旨在实现“云作业系统”,即一个具有部署和管理公有云、私有云以及混合云基础架构能力的平台。 1、建设并运营中国第一也可能是唯一的Openstack支持中心。 2、为Openstack的研究者,开发者和使用者提供丰富的线上及现场专业支持服务和咨询服务,消除客户使用开源软体的后顾之忧。 3、提高国内云计算从业人员数量和素质,普及开源软体精神与技术。 4、打破云计算建设的垄断,大大降低云计算平台建设与运营成本,推动并保障国内云计算平台建设蓬勃发展。 系统构成 800电话支持中心(100坐席) Web线上支持平台(100坐席) 服务电子销售平台 知识库 CRM系统 专业咨询团队(10人) 专业现场技术支持团队(50人) 专业客户化开发团队(100人) 专业运维管理团队(300人) 全球实验室级支持团队(2个国际顶级核心代码实验室) 服务内容 提供完善的L1,L2以及L3实验室级别线上与现场服务 24*7电话咨询/支持服务,Web线上咨询服务/支持服务 版本发布与升级服务 测试服务 现场安装,升级/调优服务 定制开发服务 培训服务 知识库共享服务 运维服务 电子交易 服务体验 1、客户可以24小时通过电话或网路在支持中心获得帮助,包括云技术咨询,资料索取,购买服务包。 2、收费服务包分为级别(例) 基本服务包(5*8 电话支持服务) 标准服务包(7*24电话支持服务+现场服务) 高级服务包(7*24*6平台修复保证) 3、专业服务选项(例) 系统集成服务 专人值守服务 系统调优服务 系统迁移服务 巡检服务 运维管理服务 应急回响服务 培训服务 服务价值 1、对开源云计算的用户和潜在用户 提供了一个获得知识,指导和技术支持的渠道,解决了套用开源云技术找不到技术后盾的尴尬局面。 提供了一个高水平的技术团队对用户进行安装,配置,开发,最佳化,运维服务,使云计算平台可以正确的被部署和使用,真正产生效益。 2、对于Openstack产业链 促进Openstack在中国的落地生根,开花结果。解决了Openstack雾里看花的尴尬。 3、对于支持中心本身 获得大量的客户信息和项目机会,获得高利润的服务业务。聚合大量业内技术资源,形成技术资源池,并通过聚合效应使产业链共同成长。 4、对社会 大大促进云建设步伐,降低IT运营成本,提高业务敏捷度,节能减排,促进产业升级。 成员企业 华胜天成 Intel Canonical Rackspace 中国开源云联盟
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)