1、saas多租户的架构成熟度模型对未来有什么样的影响
Gianpulo原先的成熟度复模型分为:定制版制本和每个客户一个实例、所有的客户运行同一个版本的软件但是各自运行在不同的实例之上、让客户运行单一版本的软件而且具备可伸缩的实例。Dharmesh添加了“乌托邦”级别,在这个级别中可以轻松地为任何给定的客户发布“沙箱(sandbox)”实例。
在SaaS成熟度模型背后,当经济成本上升到很高的程度之后,会伴随有一些巨大的风险。当所有客户都共享同样的软件、硬件(无论是虚拟的还是物理的)和管理时,一个客户身上产生的任何小问题,都有可能会影响到整个的客户群体。
2、SaaS层的多租户和PaaS的多租户在实现技术上有什么区别呢?
P
3、SaaS服务模式管理系统有哪些特性
SaaS服务模式管理系统的特性:
1、互联网
SaaS服务通过互联网浏览器或
WebServices/Web2.0程序连接的形式为用户提回供服务,使得SaaS应用具备了答典型互联网技术特点;另一方面,由于SaaS极大的缩短了用户与SaaS提供商之间的时空距离,从而使得SaaS服务的营销、交付与传统软件相比有着很大的不同。
2、多租户
SaaS服务通常基于一套标准软件系统为成百上千的不同客户(又称租户)
提供服务。这要求SaaS服务要能够支持不同租户之间数据和配置的隔离,从而保证每个租户数据的安全与隐私,以及用户对诸如界面、业务逻辑、数据结构等的个性化需求。
3、服务特性
SaaS使得软件以互联网为载体的服务形式被客户使用,所以服务合约的签定、服务使用的计量、在线服务质量的保证、服务费用的收取等等问题都必须考虑。而这些问题通常是传统软件没有考虑到的。
SaaS是Software-as-a-service(软件即服务)。SaaS在业内的叫法是软件运营,或称软营。是一种基于互联网提供软件服务的应用模式。一种随着互联网技术的发展和应用软件的成熟,在21世纪开始兴起的完全创新的软件应用模式,是软件科技发展的最新趋势。
4、求教云海oa的私有云部署多租户saas化模式详细信息
多组织架构下的多租户saas化模式,对于云海oa软件为基础的项目方案发展来说已经成熟,数据库当前采用独立数据库模式,详情另外两种模式可以大家过来讨论。
5、什么是多租户模式?
SaaS现在已成为一股潮流,它将颠覆传统的软件交付方式
其实从架构层面来分析,SaaS区别于传统技术的重要差别就是Multi-Tenant模式。多租户就是说多个租户共用一个实例,租户的数据既有隔离又有共享,说到底就是如何解决数据存储的问题。
现在SaaS Multi-Tenant在数据存储上存在三种主要的方案,分别是—
方案一:独立数据库
这是第一种方案,即一个Tenant一个Database(见图3-14),这种方案的用户数据隔离级别最高,安全性最好,但成本也高。
优点:
为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。
缺点:
增大了数据库的安装数量,随之带来维护成本和购置成本的增加。
这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的。
方案二:共享数据库,隔离数据架构.即多个或所有租户共享Database,但一个Tenant一个Schema。
优点:
为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可以支持更多的租户数量。
缺点:
如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据;如果需要跨租户统计数据,存在一定困难。
方案三:共享数据库,共享数据架构.即租户共享同一个Database、同一个Schema,但在表中通过TenantID区分租户的数据。这是共享程度最高、隔离级别最低的模式。
优点:
三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。
缺点:
隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;数据备份和恢复最困难,需要逐表逐条备份和还原。如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合。
CRM系统未来将以中低端市场为主,所以采用第三种方案,只要做好数据隔离比较好了。千万不可掉以轻心,SaaS下的安全性设计很重要。一般常见的安全性设计分为两类:系统级和程序级。
系统级:
使用HTTPS协议以SSL(Security Socket Layer)交换数据,增强通信安全;通过数字签名防止传输过程篡改;对用户身份识别的UserToken使用DES算法数据加密;业务数据定时自动备份。
程序级:
完整的权限配置,包括功能权限和数据权限;客户端输入校验,防止JS攻击、XSS攻击、SQL注入等;辅助安全设计,比如密码控件、图片验证码、手机确认码等。
6、国内支持企业级多租户的SaaS平台有哪些?
中服软件的PaaS平台支持多租户,每个企业可以不受干扰的创建自己的系统并使用,不受其他企业用户的影响,服务开通大约10分钟
7、什么是SaaS应用OFBIZ多租户模式
SaaS现在已成为一股潮流,它将颠覆传统的软件交付方式
其实从架构层面来分析,SaaS区别于传统技术的重要差别就是Multi-Tenant模式。多租户就是说多个租户共用一个实例,租户的数据既有隔离又有共享,说到底就是如何解决数据存储的问题。
现在SaaS Multi-Tenant在数据存储上存在三种主要的方案,分别是—
方案一:独立数据库
这是第一种方案,即一个Tenant一个Database(见图3-14),这种方案的用户数据隔离级别最高,安全性最好,但成本也高。
优点:
为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。
缺点:
增大了数据库的安装数量,随之带来维护成本和购置成本的增加。
这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的。
方案二:共享数据库,隔离数据架构.即多个或所有租户共享Database,但一个Tenant一个Schema。
优点:
为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可以支持更多的租户数量。
缺点:
如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据;如果需要跨租户统计数据,存在一定困难。
方案三:共享数据库,共享数据架构.即租户共享同一个Database、同一个Schema,但在表中通过TenantID区分租户的数据。这是共享程度最高、隔离级别最低的模式。
优点:
三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。
缺点:
隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;数据备份和恢复最困难,需要逐表逐条备份和还原。如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合。
CRM系统未来将以中低端市场为主,所以采用第三种方案,只要做好数据隔离比较好了。千万不可掉以轻心,SaaS下的安全性设计很重要。一般常见的安全性设计分为两类:系统级和程序级。
系统级:
使用HTTPS协议以SSL(Security Socket Layer)交换数据,增强通信安全;通过数字签名防止传输过程篡改;对用户身份识别的UserToken使用DES算法数据加密;业务数据定时自动备份。
程序级:
完整的权限配置,包括功能权限和数据权限;客户端输入校验,防止JS攻击、XSS攻击、SQL注入等;辅助安全设计,比如密码控件、图片验证码、手机确认码等。
8、谁提出的saas这一概念,这一概念最早什么时间提出的(大致的时间段就好),感谢各位大神不吝赐教~~~~
saas理论上出现的时间在1998年或更早些,最早出现在欧美等发达国家,其最初的雏形是ASP,即应用专服务提供商,大属概在2008年左右发展成现在的SaaS,理论的提出者没有具体的人。
中服软件是专业做Iaas、PaaS和SaaS的,网上有在线免费SaaS服务。
中服软件有自主的IaaS、PaaS平台,支持在其上放入应用系统、应用插件,通过动态组装生成用户所需要的应用系统。目前有几十个丰富的办公组件,供用户选择。
中服软件的云计算平台CServer以资源库为基础,以多租户软件生产线组装框架为手段,以提供在线服务和云平台为目的,为用户提供自制、动态、随时、按需自己选择需要的云服务。系统涵盖SaaS、PaaS、IaaS各个层面。
9、如何开发SaaS软件,在架构设计、表字段设计上有什么特别之处?
1.分层设计
SaaS系统分层大概是:
租户识别>应用层>数据访问层>缓存层>数据库
业务代码都是写在应用层。
租户识别可以用spring拦截器实现,然后使用ThreadLocal传递给后端
数据库和缓存层对应用层应该是透明的。程序员在写代码的时候,只关心业务逻辑,不应该担心多租户的问题。
2.数据隔离要透明
SaaS系统说起来很简单,任何系统似乎加个tenant_id(租户id)就变成SaaS系统了。比如原来的用户登录是:
select username,password from users where email='[email protected]'改成
select username,password from users where email='[email protected]' and tenant_id =1;对于复杂业务的SaaS系统,这样做法非常危险,而且开发效率很低。你想想如果那个程序员写sql时候忘了加 “ and tenant_id =1” . 结果不堪设想。
比较好做法是在数据库访问层对SQL进行改写。
TenantContext.exec("select username,password from users where email='[email protected]' ");在连接池根据TenatnContext改写Sql.
这样做好处是,一来程序猿最多把系统搞down了,也不至于信息串了互相泄露。二来将来做分表分库也很方便,上层应用不用修改。
3. 租户识别方案
比较好做法是通过url识别租户。系统是给租户生成一个随机的三级域名,比如 abc.crm.baidu.com. 如果客户想使用自己的域名,可以在cname到我们生成的三级域名,并在管理系统里面做绑定。
这样一个租户可以有两个域名,访问SaaS,一个随机生成的三级域名,另外一个租户自己的域名.代码里面可以根据过来的域名,判断是那个租户然后初始化TenantContext.
如果不想通过域名来做,也可以通过登录名来判断。这种方式要涉及到租户切换问题。
4. 智能DNS
(以后补充。)
5. 租户管理系统(计费,订购,定制,充值,催缴)
SaaS系统是必须考虑计费系统和租户控制系统。这个系统需要都是独立设计。比如那个租户购买了那些模块,一个月多少钱。租户可以创建最多的用户数。计费到期邮件提醒等功能。
计费方式一般有两种,周期性计费,类似月租方案,和使用量计费,用多少付多少。 周期性计费比较简单。也可以两者结合起来。
6. 定制化开发
SaaS的优势在于一套系统多人使用,似乎和定制化开发有冲突。比如A客户想要A功能,B客户不想要。但定制化开发是无法避免的,比如CRM系统这样复杂的系统,不可能一套系统满足所有公司的要求。定制化开发尽可能分系统,分模块去做。然后通过控制台中配置不同租户订购不同模块,那些模块可以在前端页面上显示。不同的子系统需要分开部署。前端可通过nginx根据url分发,比如 abc.crm.baidu.com/bi/xxx/xx这个地址,就分发到BI子系统。不要尝试OSGI去搞模块化,这个是个大坑。
还有开发和产品,现有需求一定要分析清楚,不要一上线发现后患无穷。新功能尽量做的独立可以配置。
7. 灰度升级
SaaS付费企业客户对系统问题都特别敏感。 为了减少升级可能出现问题的影响范围,一般都采用灰度升级策略。如果使用了url来区分不同租户,灰度升级配置就会很方便。可以配置nginx 来根据域名做分发,比如租户A(aaa.com)到实例1(版本1.0),租户B(bbb.com)到实例2(版本). 当需要域名配置非常多的时候,nginx配置文档会乱。这块时候可以考虑使用nignx_lua来写一些扩展模块。
8. 容量估计