Salesforce平台支持多租户Multi tenant的核心设计思路
Multitenancy is the fundamental technology that clouds use to share IT resources cost-efficiently and securely.

多租户支持是所有云服务提供商都需要着力实现的一种技术,用于云基础设施上在成本可控和保证安全性的前提下进行IT资源分享。
多租户支持面临的四大挑战:
- how to keep tenant-specific data secure in a shared database so that one tenant can’t see another tenant’s data?
如何保证共享数据库内不同租户间的数据隔离,通俗的说,一个租户不应该看到其他租户的数据。
- 当一个租户对其拥有的schema对象或者应用编程接口进行调整时,不应影响到其他租户的功能和整个系统的可用性。
How can one tenant customize various schema objects and an application’s user interface in real time without affecting the functionality or availability of the system for all other tenants?
- How can the system’s code base be patched or upgraded without breaking tenant-specific schemas?
系统基层实现发生变动,比如代码版本升级,或者新的补丁进来时,不应该破坏每个租户私有的对象。
- And how will the system’s response time scale as tens of thousands of tenants use the service?
随着系统租户数量的增加,整个系统的响应时间不应该急剧下降。

Force.com’s core technology uses a runtime engine that materializes all application data from metadata—data about the data itself. In Force.com’s well-defined metadata-driven architecture, there is a clear separation of the compiled runtime database engine (kernel), tenant data, and the metadata that describes each application. These distinct boundaries make it possible to independently update the system kernel and tenant-specific applications and schemas, with virtually no risk of one affecting the others.
Salesforce应对这些挑战的设计是,采取了一种运行时引擎的思路,所有的应用数据都通过元数据生成,即所谓元数据驱动的架构(metadata driven architecture)。这样一来,模型的元数据作为输入,交给运行时引擎加工,生成运行时使用的模型和数据,三者各司其职,有严格的区分,实现了一种高度动态的内核。


注:本文的英文文字和图片来自Salesforce官网:https://developer.salesforce.com/page/Multi_Tenant_Architecture
中文文字为本文作者原创内容。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Salesforce平台支持多租户Multi tenant的核心设计思路的更多相关文章
- 在ASP.NET Core中如何支持每个租户数据存储策略的数据库
在ASP.NET Core中如何支持每个租户数据存储策略的数据库 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: ht ...
- 从ASM迁移到ARM(1):平台支持的迁移服务
Azure上的ARM模式为用户带来更好的管理,更多新的特性,更好的体验,因此目前正在使用经典模式(ASM)的用户,在了解和使用了ARM之后,也在考虑如何将原来基于ASM模式的虚拟机,存储,网络等IAA ...
- 64位平台支持大于2 GB大小的数组
64位平台支持大于2 GB大小的数组 64位平台.NET Framework数组限制不能超过2GB大小.这种限制对于需要使用到大型矩阵和向量计算的工作人员来说,是一个非常大问题. 无论RAM容量有多大 ...
- 做了两年多salesforce平台开发,转Java的经历
2015年毕业,转眼已经三年多了.三年对于现在的我,真的很快,一开始对软件开发的执着一直没有变.我是一个很普通很普通长沙的一个专科毕业.刚进大学,对于软件开发真的是小白,仅仅只是存在对于游戏,和桌面软 ...
- 有关平台支持的从经典部署模型到 Azure Resource Manager 的迁移的技术深入探讨
本文将深入探讨如何从 Azure 经典部署模型迁移到 Azure Resource Manager 部署模型. 本文将介绍资源和功能级别的资源,让用户了解 Azure 平台如何在两种部署模型之间迁移资 ...
- 平台支持的从经典部署模型到 Azure Resource Manager 的 IaaS 资源迁移
本文介绍如何才能将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Resource Manager 部署模型. 用户可以阅读有关 Azure Resource Manager 功能和优点的更多 ...
- Office Add-In 应用类型及平台支持
原文地址: http://simpeng.net/office-add-in/office-add-in-%e5%ba%94%e7%94%a8%e7%b1%bb%e5%9e%8b%e5%8f%8a%e ...
- K8S-OVS使用Openvswitch为提供SDN功能支持单租户模式和多租户模式
k8s-ovs ============================== 最近在寻求一些工作机会,如果有kubernetes相关研发招聘的朋友,欢迎随时联系我.我的个人简历可以通过百度网盘:htt ...
- 开发平台支持Arm Cortex-M的微控制器上人工智能训练
开发平台支持Arm Cortex-M的微控制器上人工智能训练 Development platform enables AI training on Arm Cortex-M-based microc ...
随机推荐
- python实例:元组命名 频次统计 字典排序
1.为元组中元素命名 方法1.定义常量 NAME, AGE = 0, 1 student = ('乔峰', 29, 'qf@jinyong.com') name = student[NAME] age ...
- C#实现文件下载的几种方式
上篇博客也说了下C#中通过XML导出Excel,这些文件操作都挺有用的,下面是文件的下载,之前做项目都是把它写的空间日志中,以后有时间了把它们都弄出来 先把有问题的代码贴出来吧 using Syste ...
- C# HttpHelper
public enum HttpVerb { Get, Post } public class HttpHelper { private string _contentType = "app ...
- Swift函数_外部参数名,
//1________________ /** *没使用外部参数名的函数 */ func inputScore(name:String,score1:Int,score2:Int) { } /** * ...
- Java - 慎用tagged class
作者的原标题是<Prefer class hierarchies to tagged classes>,即用类层次优于tagged class. 我不知道有没有tagged class这么 ...
- 简单封装axios api
可以在代码逻辑中写axios请求,处理请求结果,但是随着项目越来越大,代码会很繁琐,不容易维护,所以,可以把一些在所有请求中都要处理的逻辑抽取出来,封装成api方法.比如每次请求中都要判断是否有权限, ...
- jQuery 表格中实现“删除线”的增进方法
之前做了一个删除线的效果,就是类似这样的,在内容的中间加一条线. 但是又有点不同的是,这种删除线不是单纯的在文字之上,而是给一个Table中的一行加上这种删除线效果. 这里有两个方法,是在不同时期写的 ...
- 基于Github搭建SrpingCloudConfig详解
最近在看SpringCloud,为了帮助自己学习和记忆,所以写下这篇文章. 从SpringCloud官方文档上看SpringCloudConfig其实为我们提供配置外部化的一个服务,可以理解成就是个w ...
- 网络安全之——DNS欺骗实验
---------------发个帖证明一下存在感,希望各位大牛们,别喷我!!谢谢-------------- DNS(域名系统)的作用是把网络地址(域名,以一个字符串的形式) ...
- docker 卸载
1首先搜索已经安装的docker 安装包 [root@localhost ~]# yum list installed|grep docker 或者使用该命令 [root@localhost ~]# ...