ASP.NET网页编程之创立年夜范围.NET使用程序:散布式盘算平台FatDB简介仓酷云
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。应战创立古代化的年夜范围使用程序是一件使人生畏的义务。客户希冀取得高功能及疾速的呼应,而且“随时随地能够会见”他们的数据。运营团队但愿使用程序易于设置、保护、迁徙及成绩诊断。开辟团队但愿能利用相似的手艺范式,利用复杂的API,有着易用的工具并能充实使用现有的职员及遗留的基本代码。最初,营业职员请求使用程序具有合作上风:他们但愿使用程序本钱适中,能疾速推向市场,并可以疾速应对不休变更的营业战略。在以往,我们基础能够断定,企业将不能不保持很年夜一部分的需求,以求将使用程序尽快公布。即使现在,也经常见到各类分歧的手艺被夹杂在一同,往打造一个拜占庭修建式(年夜范围)的年夜型项目。这类项目常常布局懦弱、速率迟缓而且过于庞大化。现现在,云端手艺、平台即服务(PaaS)和NoSQL这些相干手艺的大批出现恰好可以应对这部分的缺掉,而它们的呈现并不是偶尔。摆在长远的实际是,要想“依照准确的办法办事”,同时又要满意好处相干者的各类需求并不是易事,它必要我们摒弃陈腐的形式,接纳新的思索体例。
FatDB办理计划
约莫6年前,FatCloud的姐妹公司WilshireMedia为CBSRadio、AOL和Yahoo等公司供应了事先最年夜的流媒体Web服务。这些项目标开辟历程都有着近似的特性,面对的应战也几近不异。我们觉察本人在不休地做侧重复的事,却一直没有简化这些项目标开辟。我们急需一个完全的办理计划,它可以做到以下几点:
[*]以一种天真且容错性强的体例在多个结点间举行通讯。
[*]存储、猎取及查询数据和文件。
[*]缓存数据。
[*]为到达最年夜负载才能,尽量并行化并打消收集提早。
[*]为常常变动的营业逻辑供应同步与异步多线程处置两种事情体例。
[*]对集群举行扩容或从头设置时,将停机工夫降至最低。
[*]对年夜型集群完成主动化设置、监控及保护。
[*]假如产物投放市场工夫十分主要,能够严厉把持研发工夫。
我们随即意会到:我们能够充实使用之前事情中的履历,在此流程中只管满意好处相干人的请求并削减营业上的就义。办理这些成绩的关头是一个复杂的观点:将企业级使用的关头特性笼统归纳综合为一个已证实的、可重用的、高功能的、容错性强的、高度集成而且散布式的平台。完成这一体例的支点就是我们现在称为面向义务架构(MissionOrientedArchitecture)或MOA的办法。而这个通用框架现在已演变成为我们所知的FatDB平台手艺了。约莫两年前,FatDB这项手艺举行了初次次要的测试,事先美国的CricketWireless公司推出了一项挪动音乐服务Muvemusic,这项服务现在已有凌驾一百万定阅用户了。Muve的背景几近全体是基于FatDB平台搭建的,它运转在几百台服务器上。从当时起,我们环绕着这门手艺建立了FatCloud公司。可以基于FatDB平台创立的使用程序品种的数目是没无限制的,并且FatDB的使用局限也超过多个垂直行业。我们的任务是为微软开辟社区供应这项手艺,以简化企业开辟的庞大性和下降本钱。我们但愿匡助我们的客户制止那些我们已经犯过的毛病。经由过程为客户供应一系列壮大与成熟的构建块,就能够匡助他们完全改善创立年夜范围web使用的体例,而且克制每项应战。
那末FatDB平台都包括了哪些构建块呢?它的中心产物一共可分为九个部分:
[*]中心基本–这一部分为FatDB平台的一切组件供应了基础功效。
[*]FatDB/Cache–一个最优异的NoSQL数据库和内存缓存服务。
[*]FatFMS–一个散布式文件办理服务。
[*]FatWQ–一个异步批量义务的行列及处置服务。
[*]FatApps–一个软件开辟包(SDK)和一套撑持基于同步的WCF服务的架构。
[*]FatProcessors–一个SDK和一套供应了异步批量义务处置路由的架构,而且与FatWQ相集成。
[*]FatDBManagementStudio(FatDBMS)-一个图形用户界面,同意用户在他们的各类开辟情况(开辟情况,测试情况与临盆情况等等)中对他们的服务器、数据和营业逻辑举行设置、反省、监控、查询、公布和保护。
[*]与SQL集成–FatDB、FatWQ、FatFMS和FatDBMS的一个功效子集,它同意用户经由过程一系列体例使用FatDB中心服务的壮大功效,而且保存乃至增添了在SQLServer中的利用习气。
[*]Map/Reduce式剖析-FatDB、FatWQ、FatFMS和FatDBMS的一个功效子集,它同意用户举行数据发掘或在线剖析处置(OLAP)式的剖析,可以将数目伟大的原始数据举行提炼,作为下一步开展供应参考的贸易器度值。
中心基本:基础功效
中心基本部分由一系列的API所构成,而且对一切用户可见,这意味着创立FatDB或FatFMS这些中心服务所需的统统,都能够由用户自在利用,让他们创立属于本人的服务。以下是这个中心基本的基础功效:
[*]可移植的使用程序托管–FatCloud是一个作为Windows服务运转的使用程序托管,而通讯的闭幕点是由WCF完成的,这为微软手艺的开辟者供应了一个尺度而熟习的范式。FatDB平台集群能够将供应营业逻辑的WCF服务作为一等国民间接表露并供应托管服务。不但云云,FatDB平台服务端软件能够在任何假造或实体Windowsserver体系上运转、举行沙盒测试或间接托管。乃至能够把它迁徙就任何大众IaaS(基本架构即服务)平台、公司外部数据中央或某种二者的分离体情势的情况中运转。
[*]探究–集群能够经由过程服务器探究功效举行自我聚合,并可以经由过程两种分歧体例举行播送。一种是在可使用UDP多播手艺的恣意中央利用一个探究服务中介(discoveryservicebroker),好比Azure。另外一种是基于TCP的战略,包含“闲谈(gossip)”协定。
[*]代办署理及服务层–FatCloud中的一切服务都分为两层:代办署理层与服务层。代办署理层将服务挪用路由至得当的服务器上,并对了局举行聚合。而服务层则举行实践的事情,即运转营业逻辑大概存取数据。经由过程对二者举行明晰的存眷分别,我们使公布的战略变得复杂了,这有助于我们打消体系瓶颈。而且在将转发负载的义务交给代办署理层的同时,将沉重的本职事情把持在服务层内,使得各层职责明白。
[*]一致路由–FatDB平台可以将一切的服务挪用以一种一致的体例举行路由,再加上使用程序托管才能,这两种功效的一致分离恰是FatDB平台的关头上风和共同的地方。FatDB依附于一个20字节的hash键来供应一个定位器,它自己可以提防抵触,而且能够在每一个子集群组中匀称散布。这一观点处于FatCloud的MOA中心。每一个子集群,大概说每一个组都被分区为多个小块,并供应镜像服务以包管可用性和分区容错。服务器将构造成一个网格,每台镜像都可以作为一个主分区服务,以包管负载可以平衡地散布,这与传统的“ring”或“master-slave(主从)”架构等相干手艺都有所分歧。这类布局包管了优异的可伸缩性、容错性和呼应速率,而且不会发生部分过热征象。
[*]一致的API–FatDB平台表露了一系列API,因而开辟者能够构建本人的FatApps服务和FatProcessors,而且和它的中心服务具有一样的功效。它也包括了一切包管数据的分歧性的服务挪用会见战略,包含“仲裁”(quorum)会见、并行会见及按次会见。别的还包括了为反熵(anti-entropy)及保护机制所供应的钩子和回调函数。全部API列表普遍而周全。假定你创立的某个营业逻辑依附于“仲裁”会见,必要确保代码运转于数据地点的服务器上,这时候你只需在代办署理中到场一些复杂的基本代码,再加上一行回调函数便可!
FatDB/Cache:NoSQL数据库
FatDB是我们的旗舰服务。它是一个完成了终极分歧性的多模子NoSQL数据库,包含以下关头特征:
[*]天真的数据分歧性–客户能够为他们所创立的每一个数据库选择一种数据分歧性战略。分歧性级别从full到weak都可选择,而且我们很快会为多半据中央的场景供应一种环球分歧性战略。
[*]数据模子版本兼容–FatDB中的数据能够存储为原始的blob或通明的对象。关于后者,我们利用ProtoBuf作为序列化机制。因为我们保存了每一个对象版本的元数据,为数据模子保存了很高的兼容性。复杂地说,用户能够在从此随便地为对象界说增加或删除字段,而不用忧虑损坏现有的客户端功效,而且无需举行各类烦人的数据转换操纵。
[*]加锁–FatDB供应了一种对象级其余加锁功效,可以确保统一工夫只被修正一次,以此包管程序能在一个健壮的分歧性级别上事情。
[*]散布式LINQ–我们利用了LINQ作为查询语法,而且能够对对象界说中的字段举行索引。假如某个LINQ查询指向了某个未被索引的字段,它就会实行一品种似于SQL中的表扫描操纵。别的,它可以对二进制年夜对象举行索引,以供应一些基础的查询才能。以后版本的LINQ完成撑持对象映照、排序和分页,而且很快就可以够撑持联系关系查询。
[*]缓存–FatDB的中心是一个基于内存的缓存,并可选择性地耐久化到磁盘中。可使用它界说一个使用于任何数据库的绝对过时工夫或相对过时工夫。(注重:今朝的非耐久化内存缓存还不撑持LINQ查询。)
[*]与SQL集成–关于那些读取量很年夜的数据,假如已做好了迁徙的筹办,那FatDB能够匡助无效下降SQLserver的负载。关于迁徙后的SQL数据,FatDB能够作为一个高功能的耐久化仓储。FatDB还能够作为一个内存缓存,对SQLserver进进同步读取和同步写进。它还可以替换SQLserver担当散布式web会话缓存的职责。
[*]Map/Reduce–经由过程利用散布式LINQ,能够使用复杂的map/reduce查询。这就同意用户创立并实行基础的mapper和reducer语句,实行跨组的原始数据剖析。
FatFMS:文件办理服务
FatFMS是我们的散布式文件办理体系。在它的中心部分,FatFMS会在某个子集群里创立一切的间接附加存储内容,并把该子集群视为一个伟大的硬盘举行处置。FatFMS的以下方面功效值得一提。
[*]多个拷贝–在FatFMS中,用户能够在多个分歧的硬盘中保留某个文件内容的多份拷贝。
[*]天真的猎取体例–用户可使用UNC列表、URL列表大概流的体例猎取文件。
[*]元数据标签与搜刮–FatFMS用户可使用元数据对文件加上标签,而且搜刮满意某个指定标签集的文件
[*]与SQL集成–FatFMS能够将SQL中的年夜对象保留为物理文件,而不是保存在SQLserver数据库中,以此削减SQLServer的负载。
FatWQ:异步事情行列
FatWQ是一个高速的异步批量义务事情行列及实行引擎,这要回功于FatDB供应的壮大功效。用户必要供应复杂的FatProcessors的完成,以运转FatWQ中的每个独自步骤。开辟者编写的恣意C#代码都能够表露为一个义务处置器(processor)。而无效地利用这一手艺的中心就在于异步的“分而治之”(divideandconquer)哲学。
以下是一些使用场景的示例:
[*]为某个发卖团队处置输出的发卖线索(lead)。
[*]对商行的股票投资组合估价。
[*]媒体文件的格局转换。
[*]监测贸易买卖中的敲诈举动。
[*]视频内容中的脸部辨认处置。
[*]播放动画帧。
[*]盘算Pi的N次幂。
[*]摄取并规格化传感器的数据包。
[*]数据发掘或Map/Reduce处置。
[*]盘算数目伟大的协同过滤。
FatWQ还供应了以下这些壮大的特征:
[*]以FatDB为基本–由于FatDB是它的基础存储平台,它就能够在义务地点的统一结点举行牢靠的义务处置,而且可以包管到达不异的数据分歧性。
[*]数据当地化–由于利用了一致路由机制,它能够间接在输出数据地点的结点长进行义务处置,比起利用SOA举行相互通讯,这类体例可取得极年夜的功能提拔。
[*]可组合的义务收集–独自的义务步骤能够被组合为一种有向无环图布局,它的实行能够到达完善的同步性,如许就能够高度并行地实行庞大的事情流了。
[*]按优先级调剂–行列中的义务能够调剂优先级。
[*]义务处置器–用户能够编写本人的义务处置器,以处置一个或多个义务步骤。
[*]自力行列–假如用户盘算利用这套义务处置机制处置别的实体,大概以某种全新的体例使用个中的义务包装器,那末可使用FatWQ以代替MSMQ的功效。
[*]与SQL集成–FatWQ能够无效地排除SQLserver办理事情流的包袱,后者不但速率迟缓并且相称懦弱
FatApps与FatProcessors:使用程序平台
企业级使用的一个关头部分是它的营业逻辑,FatDB平台可以为投止用户的WCF服务供应第一等的撑持,并与它的中心严密集成。以这类体例表露营业逻辑,用户就能够取得底层平台的全体功效了。一切的设置和伸缩性、路由和冗余等这些庞大的事情间接成了服务的一个构成部分,而无需用户费心。这些功效长短常有代价的,当FatDB平台的使用程序托管功效与别的中心服务相分离利用时,用户将看到一个高度集成的平台的协同感化。关于同步的哀求/应对传输,用户只需编写一个传统的WCF营业逻辑服务,并将其托管为一个FatApps便可。而关于异步处置,用户必要创立一个程序集,该程序会合的某个类必要完成某个十分复杂的接口,它仅包含两个办法。FatApps和FatProcessors都将经由过程FatDBMS公布到子聚集组,并主动安装到准确的呆板上。随后全部企业使用都能够依照这类体例编写,这是一种全新的思绪……FatCloud在子集群或组的层面,把企业使用的各个功效方面作为一个内聚的全体举行构建、部署及调剂,数据及处置将作为一个全体举行处置。
将一切功效整合到一同:面向义务的架构
已往的使用程序架构偏向于将一切工具封装成一个伟大的黑盒,而现在的使用程序架构已演变成高度散布式的架构,以到达最年夜水平的存眷分别。这就是面向服务架构(SOA)的精华,同时也反应了面向对象编程的各种观点。存眷分别面前的观点是使人欣赏的,由于它断绝了各功效单位,而且增进了松耦合。不外正如OOP一样,存眷分别的标语开展得过火也会离开实践使用,在庞大性与功能之间一定存在一个均衡点。
[*]功能–假如数据与它的处置被阻遏开,那末存取时一定会招致分外的收集提早……不休积累的提早会终极招致体系的高吞吐,由提早招致失利的用例数目会不休增加。也许你不能不寻觅某种纵向扩大的办理计划,而这又增添了不用要的本钱开支。将数据与其处置分离在一同恰是创造存储历程的原因。
[*]设置与通讯–现在“混搭”风仿佛已成了支流,企业但愿将他们从分歧供给商那边猎取的手艺揉合在一同并让它们协同事情。但人们常常无视的一个复杂现实是:这些手艺组件不成制止地具有不兼容性,而为了让一切组件优秀地运转,用户不能不编写一系列的适配器与笼统层。因为缺少一个高度整合的路子,他们的产物就像是各类组件拼集起来的年夜杂烩,充溢着大批的通讯战略,对各类设置文件的保护也是一个噩梦。对这类生硬的体系举行保护、改动大概妨碍修复都长短常坚苦的,并且一定必要投进多名顶尖手艺职员对其举行保护。
[*]扩大与转型-在某个工夫点上,以后的企业使用必需举行扩大以满意不休增添的需求。假如接纳传统的“混搭”体例,那末每一个组件都必要举行分离扩大。这关于收集运维职员是件疾苦的事,由于他们不能不手动更新服务器与设置文件。为何增加了服务器却不克不及间接取得更强的才能呢?另外一个更糟的潜伏成绩是,用户大概会“把本人逼进逝世角”,由于使用程序架构常常会对营业逻辑做出各类假定,而当实践营业必要举行改动时,开辟团队为共同营业变化所举行的手艺转型常常开支十分年夜。将各类组件整合在一同举措常常必要损耗大批工夫和精神,而拆开这些组件,并依据分歧的设置从头整条约样必要损耗工夫。
假如把客户、数据与营业逻辑依照为它们所界说的义务聚合在一同,成为一个内聚的组的话,那末良多成绩都得以减缓。让我们以一个电子商务网站作为示例:一般必要办理的组件包含用户帐户、希望清单、喜好、不喜好与定单汗青等等。那末起首能够创立一个“用户组”,它包括了有大概挪用的一切营业逻辑和年夜多半数据。别的我们晓得产物目次是必需要有的,而且必要与数据供应方的feed相整合,那末我们再创立一个包括了这部分数据与营业逻辑的组。别的还必要处置定单和出货,一样能够在属于它们本人的组内举行界说。金融买卖与报表也能够独自成一组,不外它还会利用SQLServer的功效,究竟这一范畴是它的特长。
经由过程将数据与营业逻辑聚合在为它们所界说的组,在功能上的提拔上就可以够取得吹糠见米的效果。别的,扩大与转型都失掉了极年夜的简化,由于用户在举行晋级时只需往某个组里增加新的服务器,大概交换现有的FatApps大概FatProcessors就能够提拔全体处置才能了。最初,因为FatDB是在一个一致了路由、扩大、设置、探究与容错才能的尺度平台上创立的数据,它可以让用户专注于营业逻辑,而不会成为90-90法例的又一个受益者(最初10%的开辟事情占有了全部开辟工夫的90%!-由贝尔实行室的TomCargill所提出)。这是FatCloud对将来的散布式盘算的愿景,同时也是我们的MOA产物。
FatDBManagementStudio:关于工具
我们从客户那边收到的需求中,最多的就是请求供应一个优异的工具。关于运转情况举行办理的逐日事情必要完成一系列的义务,而FatDB就供应了一个切合用户习气的用户界面(看起来相似于SQLManagementStudio),以下是现有及企图中的特征:
[*]基础元素的操纵–用户能够在集群情况、组、服务器、数据存储、文件存储、行列、FatApps、FatProcessors与服务器实例等一系列中央对基础元素举行创立、检察、设置、更新和删除等操纵。只需复杂的拖放操纵就能够对元素举行从头构造,而且对服务器、数据、营业逻辑使用程序和处置器等举行分组操纵。
[*]反省与查询–用户可使用LINQ语法对数据存储、文件存储和行列举行反省、编纂与查询操纵。
[*]监控、保护、扩大及晋级–用户能够及时监控临盆情况、组与服务器的情形,实行各类保护事情。而且能够及时举行扩大、大概对组和情况举行从头设置,而无需将全部体系停机。
[*]在SQLserver与代码间创建绑定–用户不但能够便利地集成SQLserver,而且能够将FatDB作为缓存服务,与SQLserver之间完成数据的导进或导出,以此打消功能瓶颈。作为缓存,FatDB可以办理用户的数据模子,而且从对象干系映照(ORM)功效会合导进或导出数据迁徙对象(DTO)。SQLServer集成服务(SSIS)的数据包一样能够举行批量操纵。
[*]Map/Reduce式剖析–用户能够经由过程运转复杂的LINQ语句,大概可视化地创立静态的义务步骤图,以运转Map/Reduce剖析。这是FatDBMS中最使人镇静的壮大特征之一了,在接上去几个月中还会有关于这部分的一系列晋级和改善。
[*]别的特征–产物的线路图中也包含了对IaaS供应者的撑持,比方Amazon和Azure。别的,FatDBMS还将为VisualStudio创立一个插件。
结论
FatDB平台为开辟古代化散布式.NET使用创立了一个完全的生态体系。FatCloud供应了企业创立一个完全办理计划的一切基础构建块,这些计划能够是一个全新的体系,或是在现有架构、托管情况、软硬件设置的基本上对遗留体系举行加强与晋级。经由过程引进MOA这个观点,企业不但能创立出比传统体例或SOA体例更加乐成的使用,并且它更容易于迁徙到别的数据中央或IaaS平台,大概举行从头设置、保护、扩大与转型。不但云云,本钱、磁盘空间、让步及产物投放工夫都可以年夜幅缩减。FatCloud是高度整合的散布式盘算使用托管平台的前驱之一,它将对现今的年夜范围web使用开辟发生反动性的影响。
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦! 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗? ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
页:
[1]