开发工具:
文件大小: 731kb
下载次数: 0
上传时间: 2019-03-23
详细说明:NULL
博文链接:https://lokki.iteye.com/blog/1041255大规模自动化服务,及以上以下的一些名词,但大多数都只实现了简单的服务和功能部件,也未能很
好地"动态化、按需化、快速化”。而在互联网服务新阶段,云计算基础设施里,分布式海量储存、
cache、 KeyValue、 KeyList、非关系式储存、 MapReduce、 Loadbalance、CDN、 ondemand等,这些名
词是常见和普及化的。用后面介绍的名词来说要有专业方向云技术部件”
“SLA服务品质保障协议”。云服务的可靠供给、不间断和“动态化、按需化、快速化(无缝切换)
是有具体数字指标和协议的,即使是自己公司内部开发给自己使用的基础设施。
12云计算情景
年青的时候,脑里经常幻想着机房里成千上万台 Server farm轰鸣所带来的浑身澎湃动力,也知道
google和 amazon的技术和结构很了不起,运算力/grid和内外存按需分配。但感性又简单的场景认识却
是没有的,直到几年前在这个网站看到这个感性的架构图
http://www.heroku.com/how/architecture
Routing
Mesh
Dyno
Grid
看起来真美!因此脑里随时在想具体软件结合的情景,怎么实现他。我还有一篇《內存数据层和商品
数据粒子化》PDF和一篇《 Redoflow说明和分布式事务》PDF,也是有实际意义的,但这架构做起来必
须要有管理细致的自动化OPS支撑,否则人力就疲于处理故障了
2云的名词、分类和组成
常见:在“云”这个字前面或后面加上自己的行业名词,就表示自己的系统和“大规模上关系了
(1)建造大系统,资源自用,为私有云”;将运算力和容量,将资源量化成价钱销售给客户,为云租用/
云服务平台。但无论怎样,都要能将资源量化单元化地控制好,才能知道怎控制"可伸缩
在 Gartner技术生命周期图(2010 Hype cycle里,分开为 Cloud/ Web platforms"、“ Cloud
Computing";、" Private Cloud Computing"。 Web platforms或许指的是下面说到的SaaS系统。
(2)“云这个计算机/网络/软件系统,自下而上可堆叠为这3部分组成:云计算基础设施、专业方向云
部件、云业务。无论“私有云”,“云服务平台”,都有这个堆叠结构
云业务是面向终端用户和企业的大规模商业服务。
专业方向云部件是处理大流量大数据的技术部件,包括处理型、储存型、网络接口型等,比如
第3页共15页
lucene及其卫星产品、 hadoop(及其卫星产品, HBase、Hive、HDFS、 zookeeper)、 mysql、 memcache、
cassandra.redis等等这些被各大互联网公司和架构证实成熟了的部件。网络接口型包括http接口的各
用途 webserver和专用接口的sere容器
这些基础的技术部件被业务数据和技术数据所广泛使用,技术数据包括日志系统、容灾系统、监控
和 profile/trace系统等。
海量的机器和技术部件需要有一个云粘合平台将这些有规则、高效地管理起来,也不能让硬件资源
太空闲。云粘合平台是云计算基础设施的软件环境。
(3)将资源提供给外部使用的云服务平台,按技术/服务的程度,可分为:SaS、PaaS和laS这3个
常见名词。由于本文主讲述的是底下“云计算基础设施中软件结构,所以没讨论这3个的前景等事宜
saS类似 salesforce,将业务功能都开发好,将运行资源都安装部署好给客户了,即连“云业务的
功能都交付了
PaS是由客户自己开发业务功能的主流程,由PaS平台安装/署运行,提供所需的资源,以及高
性能储存服务。交付了“云计算基础设施”、“专业方向云部件→高性能储存服务”
las是提供硬件基础设施给客户,客户可按需调整操作系统等环境,运行自己的功能。主要以交付
云计算硬件基础设施为主。
(4)无论是私有云,还是云服务平台中的PaS/SaS,都要管理/粘合好各种异构的软件坏境和软件技
术部件,所以“云粘合平台”是必须的,只是有些可能只是几份复杂的脚本
3云粘合平台
31云粘合平台交付的功能
(1)云计算基础设施软件要交付的功能,必须要交付的一项是:自动化发布部署系统
比如: linkedin的自动化部署系统gu(开源)
http://inkedin.github.com/glu/docs/latest/html/index.htm在g的旧文档,在overview这角度会
更清晰/简单,而新文档, overview图示没那么直观了,而在内部结构/生产环境的操作说明上更详细周
到了。gu用了she|本+ grail+java开发功能,用了 zookeeper做配置管理,支持多war部署到同一
P上。
(2)有的私有云平台,还可能交付了一些编程模型:即要求功能/云业务的开发者要按特定于本平台的
格式写代码,然后运行时进程内,会以特定的结构运行。 Java web server是wa格式的编程模型,同理
特定的 container总有一个编程模型。
比如: twitter新开发了一个 container: blender
http://engineering.twittercom/2011/04/twitter-search-is-now-3x-faster1656.html
这个 blender用java编写,没有粘合任何现成的 Java Web server( jetty/ tomcat),而是以net为网络
基础代码,实现了http和内部RPC网络接口协议,这个containe在内部还实现了单元化的service机制,
第4页共15页
以及用 workflow机制来表达 service间的依赖和 service间的处理衔接。那这个 container,没有用很多现
成的 Javaee标准,大部分机制和功能都是为自己的需要而写。这篇文章没有透露出单元化的 service是
怎么使用 Classloader的,也没透露出 service是怎么部署/ update的,但肯定有这两个机制
比如 hadoop,让业务开发者只继承 MapReduce Base写一个新类,编译后投入它的系统里就可以运
行了,而 hadoop为这个模型开发了一套复杂庞大的支撐系统。不过业务类里只有一个简单 MapReduce
子类的 hadoop业务系统也是很原始的,应该还要自己开发很多周边服务供 MapReduce取来源/放结果/
报告,这套系统才是细致/友好的
32云粘合平台的产品化和所用语言
云计算基础设施软件“云粘合平台的开发技术,和“开发云业务”所用的语言是分开的,可为she脚
本、 python、uby、java这几个。
而云粘合平台肯定要交付的自动化部署系统”,一个好的部署系统必须有可以记录部署操作过程/状
态的持久化功能,单纯的she|脚本比较难做到持久化复杂的信息,she|脚本也很难做到跨机处理衔接。
所以在云粘合平台里,she脚本肯定要有,但代码/重要性占的比例应该不高。
she脚本(自己写的)重要性高的系统,都可以称之为轻量级"的系统,肯定不会交付一个新的编程模
型,而是基于现有的war等标准编程模型,感觉上这样的系统,难改不敢改,或容易被得面目全非,产
品化程度就不高。而像 hadoop,虽然是一套组件非常多、非常复杂的重量级系统,但基于独特难替代的
业务功能( Mapreduce),众人拾柴火焰高发展了那么多年后,被全世界所认可,这个产品化是成功的。
所以开发“云粘合平台”,粘合,应该是从“轻量级粘合到“更多自定义化”,入侵应该是从无入侵”到
交付编程模型”。特别是在“私有云”系统里,比如 twitter blender,如果不涉及到JBC这一块,是在一个
Java application上自定义了自己进程内的运行结构,不怎么理会 JavaEE标准,所以他的性能非常高,团
队里云业务的开发效率经过培训后也是很好的,因为多余的东西少了。
33粘合程度:共享资源和充分利用的层次
要低成本,就要能共享一些硬件资源,共享硬件资源有几种层次/方式
(1)虚拟机方式:多个虚拟机共享同一台实体机,这种方式除了在网卡共享的安全性要确认好外,是最
现成最简易的,但资源利用率是最低的,因为同一实体机上有多个操作系统实例在运行,分母变大了
业务线程能分到的资源就小了。但安全性是最高的。
(2)多服务进程方式:一台机器上,多个不同的业务进程分别同时运行,用 chroot实现安全隔离,这个
安全性也是可接受的,资涼利用率也比(1扃高,自动化脚本复杂度和(1)差不多。如果是C语言开发的软件,
由于各软件间共用的资源不算多的,用这种方式也好的
(3)同- container进程多服务方式:如果是java开发的应用,在安全能接受的情况下,多个业务以不
同的 WebApplication方式或不同 OSGi bundle方式或不同 Service,在同一个 container jvm进程内一起运
行,能比较充分地共享/利用资源。但对业务程序的结构、代码质量、问题 profiling工具、OPS系统的要
求很高。
各方式,没有优劣,得看场景期望/要求
第5页共15页
34粘合程度:不间断/无缝切换的层次
将软件的功能,不影响用户地从旧功能升级到新功能,有几种方式
(1)重启进程方式:简单地将进程停掉,前鳊会连不上入口,而 failover到同—功能的其它C| uttering|P
上,部署好新代码后再重启。
(2)不停WM进程方式:只将某业务从前端入口避过此|P后,利用进程内更新执行代码的方式,升级到
新功能。
两种方式,无论哪种,最可靠的都要入口先停,业务代码后停,启动时要业务代码先起,入口后打
开。这都要控制开关,开关成本和复杂度其实差不多,不过(1已经有F5、 apache+modk支持简单的
htp端口的开关和 failover功能,如果端口 listen了很久,业务还未就绪,这就要计较问题大小和解决方
案了。
综合起来,(1)是现成的,(2)看起来更酷、复杂、开发成本高点,但有些软件结构需要这种不重启的
方式。
35本文的云粘合平台面对的情景和要达到的要求
私有云”,和“云服务平台中的PaS,在软件基础设施上的结构是差不多的,但PaaS在共享资源层
次、不间断层次上,达到多服务进程方式上就可以了,如果一个 container进程里复合运行了来自不同
客户的代码,安全性就成问题
而私有云和PaaS在资源单元化和量化上的要求也差不多,只是PaaS按运算力和容量向客户收钱,
私有云要各业务小组监测好容量规划。
所以说,私有云的技术要求,比PaS的要求更高,比如在“开关”支持的细致程度上,需要支持上百
台机器/几十应用联动和有先后顺序。
同时,在私有云系统里,几种共享资源的方式,几种不间断的方式,不同等级的安全性要求,都要
可选择才好,这样各业务小组才会满意。
本文云粘合平台要达到能实现复杂私有云系统的要求
(1)在资源利用上,要达到“同- container进程多服务方式”,达到更大的降低成本效果
(2)在发布新功能上,支持停进程和不停进程的方式。“不停进程就能更新运行代码”,肯定不是“完全透
明地”、“无入侵地”,有的业务团队(业务开发小组)的编程模型/技巧未达到不停进程的要求,那当然采用
旧模式
(3)有web界面的整体OPS,及自动部署系统,支持人性化地管理上百开关和先后联动,以及操作审计
所以会有开关的编程模型”,将本进程内的控制开关暴露岀去(拿岀去)给』M外的OPS控制
(4)以上3点功能,是本云粘合平台要交付的业务功能,要交付这些业务功能,就必须要有交付一个
灵活的单元化的编程模型。这个编程模型,指的是进程内的模型”,除了适合以上3点业务功能的进程外,
也适合其它一些业务功能的进程。要说明的是:像 monitor/ tracing/ profiling的专业功能不是单靠进程内
第6页共15页
的编程模型”就能解决的,还必须从专业方向深化
36是否需要云粘合平台
在章节“2云的名词、分类和组成中说到云的软件组成部分包括这3个:软件基础设施云粘合平
台”、专业方向云部件、云业务。其中后两者肯定必不可少,比如总要有个类似MSQL持久化的专业
方向云部件吧,而“云粘合平台是否必要,或是否能更轻量化点呢?
心里已经偏颇一方的比较性”文字和图示给不了读者明确结果的,这样说更简单
做好云粘合平台,是属于附加了磨刀工序的工作,只有已发展到大事情的情形才需要磨刀,或许有
的事情需要更大更利的刀。
在有资源的情况下,有云粘合平台和架构肯定好点,在资源不充裕时,应先投入到专业方向云部件
去,要玩转专业方向云部件已经需要不少精英花不少时间。如果你的业务已进入到大团队大流量大机器
数并分开多个应用的阶段(有5个以上相关应用,每应用有10台以上机器),就可以考虑投入3个精湛人
力开发云粘合平台,形成这方面的基础设施/架构。如果能再有额外的2人,投入对业务研发团队的培训
则更好
有云粘合平台和架构,能收到如下好处
()有规则:应用程序模型有规则,能迅速面对变化进行调整和切换。
(2)高效:在系统关联性复杂的情況下,对于SA来说,如果没有云粘合平台联合各部件来提供人性化的界
面和调整计划,SA的操作步步惊心
(3)充分利用硬件资源,降低成本:在应用程序模型能攴撐的情况下充分利用硬件资源,SA复合利用机器
而不乱。最高效使用实体机资源的方式是这机器上只有一个操作系统实例,里面只有一个大内存的vn
然后多个业务可以同存于这个m实例内。但如果没有应用模型支持和开发人员的承诺/计划,SA只会在
一个jⅦm实例上运行一个war应用,即使这个war消耗的资源不大
机器越多、业务越多越复杂,越能体现出有规则应用模型充分复合利用硬件资源的威力。
37开发本文云粘合平台的成本、实现步骤图示
当别人看到一个比较长的文档或比较复杂的架构图时,心里的感觉通常是这样:“这东西可能是好的
但成本和要花费的时间可能不少”,一个“复杂的说明给到人初步的感觉就是这样,红明同学表达了他对
第一版文档的感觉,这是给我提了意见“这份文档不够好”。所以第二版,在结构上更完整和承上启下了。
承上启下就“短不了”,唯有加入本章节,对实现云粘合平台的成本/时间和步骤,作一个图示,并且
图示出一些额外可以做的功能,显示出这东西可能有更大的价值
下图为一个 xmind作的图,在PDF页面上会压缩尺寸显示,可从以下链接看清全图
http://lokki.iteve.com/picture/89536
做好这个" OSGi container+RPC机制+OPS管理界面 OpsWeb",或许2个人3个月就能建
第7页共15页
出来。我从公司的RPC学到了透明使用RPC、透明寻址的经验。
部署了传统war
问分离依赖的方式1:手动编码连接上 Localservice
LocaleryicesBundle再连挠上 RpcProvider
能透明地离线更新依赖
分高依赖的方式2部了声月了rort位赖的新wr
方式乙和方式让结合林透明地使用
支持 Seryleteundle
ba是 container范围的
ocalservices能支持“sNA+ oscAche”中sNA的 update
编程模型
支持 ServiceComponent
安排好先后顺序就能安全地热替换 nstance
只有 Remotingcmd和mAt才能发出变更 request,所以需要 Apse或“s脚本+r
⊙R
将各专业方向云部件的客户端封装成unde,并以 zookeeper作统
catr,能讠
应用开发者更透明/更间便/更快地使用各专业云部件
并且控制种出了m和业务应用之外,这不算是基础走吗
①自动化测试环境支持
因为是RPC所以需费“P白名单位于扬收者端
用zook∈per实现 ResourceLocator
寻址透明
RPC service
④4避免9FcF:eorm/ ip swAtch by Opsweb
碌露出 OSGi configuration e
灭多开关控削
赖了 emoting
runbase上cps-f/s- verify这些机制和 bund e对可靠性相当重要
remotngamd-n
依 Irematingmsg
Ops web
因为是remg所以需要“白名单位于请求授收者端
基于 unbe9
⑤人性化,开发局期长
云粘合和控制平台
的建立过程
P白名单位于请求接收者端” whitelistAt Request Receiver
分割线:以上是完整的基础(优先级14),已具备支持快速调整、RPC和安全的功能,
以下是别入可以做的(优先级5)。以上花费时间其实不需要3个
发布/部署系统和 HostAgent是 Ops Web/ rumbas上面加上技术业务 bundle的演练,是云计算基础设施
remotingcmd控制的 instance factory总线 nstance sii总线
oler比较安全
控制功能控制系统是云计算基础设施
witchvalueToBean
避免sPoF: Data SourceSwitch
了只有很花时间开发的人性化和才是定和可靠的基础
其它的专业方向快送调整6分离依的方式3中包系”基于来换依和
HostAgent上有一个 bundle给监控 Center post监控
业务型rrb里安甚了 Monitor serv写入监控og
HostAgent上有一个 bundle可以在这host上按部署系统积累的经验快速安装 zookeeper或edis
HostAgent上有一个 bundle可以给Hado系统上传日志lag
业务型 nbase里安装了分布式文件服务或图片处理服务的 bundle
有那么多 bundle、各种业务的war和经验corg,肯定需要 repository server
☆对云粘合制平台,20pm作为统的配置管理,用好相当重要
有空玩玩 profiling/ trace不错
38图示云粘合平台的技术选型策略
同一 container进程多服务方式”,有几种方案可以达到,比如
第8页共15页
(1)用 JavaeE WebServer部署多个war
(2)如 twitter blender,用 Classloader,但是采用自己的机制搞定
(3)用 OSGi Container标准
这里不采用多war的方式,是因为 Javaee Web标准,没有涉及war间的互动,如果自定义
Webapp classloader建立互动,那不如更直接点,并且有一个 Web server这么重的太上皇在控制
死了整个进程的结构,要作出改变很难。
比较了3种方式后,作出了这个技术选型策略:云粘合平台用非标准的方式当然可以将众多开源部
件粘合在一起,但强力推行过程中团队内外总会遇到很多质疑和争论,那不如选取适用的、成熟的、常
见的、轻量化的标准去粘合。
其实OSGi对于产生这篇文档已经是“先入为主”,所以总会凑够理由来选定它。其实OSGi标准/技
术并不是那么难学,深入去体会, OSGi container/标准已经为业务开发制定/提供了很多合理的东西,
但OSGi在和 Javaee标准交叉的领域是遵守并扩展的,所以云粘合平台所用的技术会涉及到很多技术
组织。并且和所有标准给过我们的经历一样,选取适用的,抛弃不适用的,技术选型策略图示
JavaeE标准开发云粘合平台或类似开发
标准里常用和
ubuntu发行系统的方式
成功的部分
圆环
标准里的开源实现
标准里不太成功
的部分(圆环)
云粘合平台粘合和监管
( profile/trace)所需的自己
实现和web界面
OAS|S标准
OSGi标准
专业方向的云部件和概念(常见的)(技术上的业务上的)
个人期望:云粘合平台用美妙的web控制界面人性化地管理和维护众多和复杂的云机器云系统。
39内部结构图
以下有两张图,第一张显示了 OSGi Container内有Web业务组件、有RPC业务组件,一些开关和
instance会被外部OPS在线控制着,在线的意思是“外部直接和这个进程通信,这进程要活着”。第二张图
则重点表达了OPS功能、离线控制是通过 HostAgent控制,以及服务器端安全白名单”功能
HostAgent,是另一个小内存m进程不间断运行(有别于业务jm进程),因此它可以对其它 unease
instance进行 offline控制/本地 filesystem处理,并能达到SA脚本的功用。也能对c语言的专业部件作
外部控制。事情不是那么容易说清楚的,目前只是展示出两张图,还待时间开源可以了的源代码
在PDF页面上会压缩尺寸显示,可从以下链接看清全图
http://lokki.iteye.com/picture/89592
http://lokki.iteye.com/picture/89594
第9页共15页
」 avaOps和
unease架构图
打包系统
Clustering和
Zookeeper
应用A:
应用B
witch
手动御
web
rpc
manager
zookeeper
biz
biz
(and
( ResourceAnd
(SNA)
(SNA)
Lifecycle) INodeA iClassLoader
ClusterNode
DB
发指令
resource
instance switch
ps Exec tor稼验执行情况
value
instanceholder
/factory
(指令队列)
d坊/( psCenteropsWeb
每|P集一序
本地
储存夹
java runbase
Forcennector
web
file( config)
protocol
rpc
bundle
protocol
transfer
repository
Getty)
特殊颜色说明
rpc
WebBrowser
先实现/收获的环节
protocol
Node B
第二研究实现的环节
OSGi container
HostAgent和
」 avaOps架构图
key
DB
value
储存夹
war
3080
Jetty
web protocol
warl
repository
web expose
war deployer
config
服务器端
安全白名单
zookeeper
rpc protocol
psEXector
rpc expose
remotingcmd
打包系统
runbase w ith jetty
查询
offline deploy start/stop
deploy runbase
instance1
remotingcmd pushCommand
remotingcmd
Server
returnResut
Sender
more agent
Ops Erector
OpsCenter
components
服务器端
web
安全白名单
postResultFile
第10页共15页
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.