Fighting bird分享 http://blog.sciencenet.cn/u/tonia

博文

Force.com的多租户架构理解(五)

已有 5705 次阅读 2010-5-4 00:21 |系统分类:科研笔记| salesforce, architecture

10. Apex

Apex是一个强类型、面向对象的过程型编程语言,开发者可以声明程序变量和常量,执行传统的流控制语句(if-elseloops等),数据管理操作(insertupdateupsertdelete),以及事务控制操作(setSavepointrollback)。Apex在很多方面类似于Java 。开发者可以创建一个Apex例程,以向大部分应用事件添加自定义业务逻辑,包括按钮点击,数据更新,web服务请求,自定义批服务及其他。

    开发者可以以两种形式建立Apex程序:一是需要时执行的单独匿名脚本,二是在特定数据库管理事件(insertupdatedeleteundelete)发生之前或之后自动执行的触发器。无论哪种形式,Force.com都 将编译Apex代码并将其作为元数据存储在UDD中。当一个Apex例程在一个组织中第一次被调用,Force.com的运行时解释器就装载这个编译过的程序版本到该组织的MRU缓存。之后当同一组织的任何用户使用相同例程时,由于共享了一个已经存在于内存中的ready-to-run的程序,Force.com就节省了内存,且避免了重新编译程序的开销。

    Apex远不止是另一种过程型语言。Apex是一个使得平台发布可靠的多租户应用的完整的Force.com组件。例如,Force.com通过Apex类自动验证所有内嵌Sforce Object Query LanguageSOQL)Sforce Object Search LanguageSOSL)的语句,防止代码运行时失败。然后维护有效的Apex类相应的对象依赖性,并使用这一信息防止元数据的改变,这一改变会破坏相互依赖的应用。

    许多Apex标准类和系统静态方法提供了底层平台特性的简单接口。例如,系统的静态DML方法如插入、修改和删除都有一个简单的布尔型参数,开发者用它来指示期望的批处理操作选项(allnothingpartial save);这些方法也会返回一个调用例程的结果对象,该对象用于决定处理是否成功及失败原因。ApexForce.com平台特性之间联系的其他直接的例子,简单列举下,如内嵌的Apex email类,HTTPRESTful)服务类和XmlStream类等。

为了避免恶意或者非故意的共享的多租户平台资源的独占性,Force.com有一组可扩展的于Apex代码执行相关的管制和资源限制。例如,Force.com密切监控Apex脚本的执行,限制CPU时间和内存消耗,DML语句执行的查询数目,进行数学计算的数目,以及可能的web服务调用上限,等等。平台优化器认为单个查询执行时向调用者抛出一个运行时异常是相当高代价的。尽管这种限制可能听起来有点约束性,可是保护所有相关应用的共享平台的整体的扩展性和性能是非常必要的。从长远来看,这些指标有助于提升平台开发者更好的编码技能,并为每个人创建一个更好的用户体验。例如,一个开发者最初试图编写一个不太高效地一次一行地更新一千行数据的循环,由于资源限制得到一个运行时异常,并且开始使用Force.com的高效地批处理API调用。

    为了进一步避免编写不良的应用程序导致的潜在的平台问题,新产品应用的部署是一个需要严格管理的过程。在一个组织新自定义的应用从开发阶段转化到产品阶段之前,Salesforce.com需要单元测试来验证应用的Apex例程的功能性。已提交的单元测试必须覆盖不少于75%的应用程序源代码。Salesforce.comForce.com的沙箱环境中执行已提交的单元测试,以确保应用程序大体上不会对多租户的性能和扩展性造成不利影响。单个单元测试的结果暗示了一些基本信息,如执行的代码行数和测试中未被执行的代码的特定信息等。

    一旦一个应用程序由Salesforce.com确定为产品,应用的开发过程便由一个单一的事务组成,这个事务将所有应用的元数据复制到一个Force.com产品实例,并返回一个相应的单元测试。如果这个过程中任何一部分失败了,Force.com则简单地回滚事务,并返回一个异常来帮助追踪问题所在。

注:Salesforce.com发布每个平台开发应用程序并返回单元测试,从而积极了解新平台的特性和增强功能是否破坏了现有的应用程序。

    当有了一个产品应用程序以后,Force.com内嵌的性能分析器会自动分析并性管理者提供相关的反馈。性能分析报表包括慢查询、数据管理的信息,以及开发者可复审并用来优化应用程序功能的子例程。平台还使用了日志返回运行时异常的信息,有助于管理者调试它们的应用程序。

11. 历史统计数据

多年的经验使得Force.com已经转变成一个非常快速的、可扩展的、可靠地多租户互联网应用程序平台。图3展示了Force.com用于支持互联网规模应用的已经证明了的能力。需要特别注意的是,随着时间的推移,平均页面响应时间减少,或者当平均并发事务量增长(扩展性度量)时保持稳定(性能上度量)。

13: 随着Force.com日渐成熟,每年平台的性能和扩展性都持续提高

    对于更多的平台数据,如计划维护,事务量的历史信息,速度,等等,会访问trust.salesforce.com,它是Force.com社区主页上关于系统性能和安全性的实时信息。

12. 结论

平台即服务(PaaS的)和软件即服务(SaaS)都是当代应用软件开发和交付模式,越来越多的组织正在使用它们,改善其上市时间,减少资本开支,并在具有挑战性的全球经济中提高整体竞争力。基于因特网的共享的计算平台极具吸引力,因为它们让企业快速、按需地访问托管的、已管理的软件资产,同时完全避免了购买、安装、配置以及持续维护内部部署的数据中心和专用软硬件和相关的管理工作人员的复杂性与成本。

这种按需SaaS / PaaS的范式转变最成功的前沿公司就是salesforce.com,最近作为第一个按需软件厂商被加入S&P 500索引。走出salesforce.comCRM SaaS应用程序的巨大成功,Force.com是一个广义互联网应用开发和交付平台,个别企业和服务供应商建立所有类型的自定义业务应用,包括供应链管理,计费,会计,规格跟踪,人力资源管理,及索赔处理的申请。该平台的元数据驱动架构使任何人都能够有效地建立和发布精细的、可定制的、关键的、互联网规模的多租户应用。使用基于标准的Web服务API和本地平台的开发工具,Force.com开发人员可以轻松建立基于Web的应用所有组件,包括应用程序的数据模型(表,关系等等),用户接口(数据输入表单,报表等),业务逻辑(工作流程,验证等),与其他应用程序的集成等。

过去的10年里,salesforce.com的工程师们已经为多租户优化了Force.com平台的所有层,让平台发布者前所未有地扩展其应用,达每天170万个事务。诸如大容量数据处理APIApex编程语言,外部的全文搜索引擎,及其独特的查询优化器等功能,使多租户平台的应用变得高效率和可扩展性,而很少甚至没有考虑开发人员。

Salesforce.com对生产应用程序的部署的管理,保证了所有相关的应用程序一流的性能、可扩展性和可靠性。此外,salesforce.com不断监测和收集来自Force.com应用的业务信息,促进增量改进和立即有利于现有的和新应用的平台功能。

英文原文出处:

The Force.com Multitenant Architecture



https://blog.sciencenet.cn/blog-425672-319401.html

上一篇:Force.com的多租户架构理解(四)
下一篇:SPRINT分类算法
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 03:08

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部