首页 / 软件开发 / .NET编程技术 / 如何创建大规模.NET应用程序:分布式计算平台FatDB简介
如何创建大规模.NET应用程序:分布式计算平台FatDB简介2015-01-01 infoq 邵思华 译
挑战
创建现代化的大规模应用程序是一件令人生畏的任务。客户期望获得高性能及快速的响应,并且“随时随地可以访问”他们的数据。运营团队希望应用程序易于配置、维护、迁移及问题诊断。开发团队希望能使用类似的技术范式,使用简单的API,有着易用的工具并能充分利用现有的人员及遗留的基础代码。最后,业务人员要求应用程序具有竞争优势:他们希望应用程序成本适中,能快速推向市场,并能够快速应对不断变化的业务策略。在以往,我们基本可以确定,企业将不得不放弃很大一部分的需求,以求将应用程序尽快发布。即便如今,也时常见到各种不同的技术被混合在一起,去打造一个拜占庭建筑式(大规模)的大型项目。这种项目往往结构脆弱、速度缓慢并且过于复杂化。现如今,云端技术、平台即服务(PaaS)以及NoSQL这些相关技术的大量涌现正好能够应对这部分的缺失,而它们的出现并非偶然。摆在眼前的现实是,要想“按照正确的方法做事”,同时又要满足利益相关者的各种需求并非易事,它需要我们摒弃陈旧的模式,采取新的思考方式。FatDB解决方案
大约6年前,FatCloud的姐妹公司Wilshire Media为CBS Radio、AOL和Yahoo等公司提供了当时最大的流媒体Web服务。这些项目的开发过程都有着近似的特征,面临的挑战也几乎相同。我们发觉自己在不断地做着重复的事,却始终没有简化这些项目的开发。我们急需一个完整的解决方案,它能够做到以下几点:以一种灵活且容错性强的方式在多个结点间进行通信。存储、获取及查询数据和文件。缓存数据。为达到最大负载能力,尽可能并行化并消除网络延迟。为经常变更的业务逻辑提供同步与异步多线程处理两种工作方式。对集群进行扩容或重新配置时,将停机时间降至最低。对大型集群实现自动化配置、监控及维护。如果产品投放市场时间非常重要,可以严格控制研发时间。我们随即领悟到:我们可以充分利用之前工作中的经验,在此流程中尽量满足利益相关人的要求并减少业务上的牺牲。解决这些问题的关键是一个简单的概念:将企业级应用的关键特征抽象概括为一个已证明的、可重用的、高性能的、容错性强的、高度集成并且分布式的平台。实现这一方式的支点就是我们如今称为面向任务架构(Mission Oriented Architecture)或MOA的方法。而这个通用框架如今已经演化成为我们所知的FatDB平台技术了。大约两年前,FatDB这项技术进行了首次主要的测试,当时美国的Cricket Wireless公司推出了一项移动音乐服务Muve music,这项服务如今已经有超过一百万订阅用户了。Muve的后台几乎全部是基于FatDB平台搭建的,它运行在几百台服务器上。从那时起,我们围绕着这门技术成立了FatCloud公司。能够基于FatDB平台创建的应用程序种类的数量是没有限制的,而且FatDB的应用范围也跨越多个垂直行业。我们的使命是为微软开发社区提供这项技术,以简化企业开发的复杂性和降低成本。我们希望帮助我们的客户避免那些我们曾经犯过的错误。通过为客户提供一系列强大与成熟的构建块,就可以帮助他们彻底改进创建大规模web应用的方式,并且克服每一项挑战。那么FatDB平台都包含了哪些构建块呢?它的核心产品一共可分为九个部分:核心基础– 这一部分为FatDB平台的所有组件提供了基本功能。FatDB / Cache – 一个最优秀的NoSQL数据库以及内存缓存服务。FatFMS – 一个分布式文件管理服务。FatWQ – 一个异步批量任务的队列及处理服务。FatApps – 一个软件开发包(SDK)以及一套支持基于同步的WCF服务的架构。FatProcessors – 一个SDK以及一套提供了异步批量任务处理路由的架构,并且与FatWQ相集成。FatDB Management Studio (FatDBMS)- 一个图形用户界面,允许用户在他们的各种开发环境(开发环境,测试环境与生产环境等等)中对他们的服务器、数据以及业务逻辑进行配置、检查、监控、查询、发布以及维护。与SQL集成– FatDB、FatWQ、FatFMS以及FatDBMS的一个功能子集,它允许用户通过一系列方式利用FatDB核心服务的强大功能,并且保留甚至增加了在SQL Server中的使用习惯。Map/Reduce式分析 - FatDB、FatWQ、FatFMS以及FatDBMS的一个功能子集,它允许用户进行数据挖掘或在线分析处理(OLAP)式的分析,能够将数量巨大的原始数据进行提炼,作为下一步发展提供参考的商业度量值。