SaaS+架構(gòu)設(shè)計(jì)_第1頁
SaaS+架構(gòu)設(shè)計(jì)_第2頁
SaaS+架構(gòu)設(shè)計(jì)_第3頁
SaaS+架構(gòu)設(shè)計(jì)_第4頁
SaaS+架構(gòu)設(shè)計(jì)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、夢(mèng)想成就未來 java學(xué)習(xí)筆記 李輝SaaS架構(gòu)設(shè)計(jì)SaaS架構(gòu)設(shè)計(jì)1SaaS成熟度模型分級(jí)1RUP “4+1視圖模式邏輯視圖/過程視圖/開發(fā)視圖/物理視圖+場(chǎng)景視圖2MDA(Model Driven Architecture)模型驅(qū)動(dòng)架構(gòu)2SaaS的平安性設(shè)計(jì)2平安性3SaaS下的平安性設(shè)計(jì)很重要。一般常見的平安性設(shè)計(jì)分為兩類:系統(tǒng)級(jí)和程序級(jí)。31系統(tǒng)級(jí):32程序級(jí):3現(xiàn)在SaaS Multi-Tenant在數(shù)據(jù)存儲(chǔ)上存在三種主要的方案31方案一:獨(dú)立數(shù)據(jù)庫42方案二:共享數(shù)據(jù)庫,隔離數(shù)據(jù)架構(gòu)43方案三:共享數(shù)據(jù)庫,共享數(shù)據(jù)架構(gòu)4數(shù)據(jù)庫層性能優(yōu)化5建立適宜的索引5消除大數(shù)據(jù)表連接5應(yīng)用層性能

2、優(yōu)化:Cache5日志記錄61行為日志記錄62數(shù)據(jù)日志記錄63日志記錄的平安6數(shù)據(jù)加密算法會(huì)犧牲一定性能6基于SaaS云計(jì)算網(wǎng)絡(luò)性能測(cè)試指標(biāo)71新建速率72并發(fā)數(shù)73吞吐量74響應(yīng)時(shí)間8SaaS成熟度模型分級(jí)根據(jù)SaaS應(yīng)用是否具有可配置性、高性能、可伸縮性的特性,SaaS成熟度模型被分成四級(jí)。每一級(jí)都比前一級(jí)增加以上三種特性的一種??膳渲酶咝阅芸缮炜s性特點(diǎn)Level 1定制開發(fā)×××設(shè)備托管Level 2可配置××設(shè)備共享、可配置化Level 3高性能的多租戶架構(gòu)Multi-Tenant×多租戶、數(shù)據(jù)隔離、高性能Level 4可伸縮

3、性的多租戶架構(gòu)RUP “4+1視圖模式邏輯視圖/過程視圖/開發(fā)視圖/物理視圖+場(chǎng)景視圖l 場(chǎng)景視圖:用例圖,描述用戶的業(yè)務(wù)場(chǎng)景,從用戶的角度標(biāo)識(shí)出業(yè)務(wù)需求,它是架構(gòu)設(shè)計(jì)的起點(diǎn)和終點(diǎn);l 邏輯視圖:就是對(duì)象模型。邏輯視圖重點(diǎn)在于功能,功能包括可見的業(yè)務(wù)功能,也包括不可見的系統(tǒng)功能如日志、權(quán)限、事務(wù)等。同時(shí)更重要的是確立邏輯分層、模塊劃分和模塊之間的依賴關(guān)系;l 開發(fā)視圖:用于描述開發(fā)環(huán)境下的靜態(tài)組織。從開發(fā)環(huán)境、技術(shù)架構(gòu)、分層策略和目錄結(jié)構(gòu)4個(gè)方面闡述;l 過程視圖:聚焦在進(jìn)程、線程等運(yùn)行時(shí)概念,以及相關(guān)的并發(fā)、同步、通信等問題。如果本系統(tǒng)不需要考慮這些方面,本視圖可以省略;l 物理視圖:也叫部

4、署視圖描述軟件如何映射到硬件,反映系統(tǒng)在分布/部署上的設(shè)計(jì)。MDA(Model Driven Architecture)模型驅(qū)動(dòng)架構(gòu)MDA利用元數(shù)據(jù)模型,可以方便靈活地實(shí)現(xiàn)可配置化。MDA(Model Driven Architecture)是模型驅(qū)動(dòng)架構(gòu),它是由OMG定義的一個(gè)軟件開發(fā)框架。它是一種基于UML以及其他工業(yè)標(biāo)準(zhǔn)的框架,支持軟件設(shè)計(jì)和模型的可視化、存儲(chǔ)和交換。和UML相比,MDA能夠創(chuàng)立出機(jī)器可讀和高度抽象的模型,這些模型獨(dú)立于實(shí)現(xiàn)技術(shù),以標(biāo)準(zhǔn)化的方式儲(chǔ)存。MDA把建模語言用作一種編程語言而不僅僅是設(shè)計(jì)語言。MDA的關(guān)鍵之處是模型在軟件開發(fā)中扮演了非常重要的角色。SaaS的平安性

5、設(shè)計(jì)一般常見的平安性設(shè)計(jì)分為兩類:系統(tǒng)級(jí)和程序級(jí)。系統(tǒng)級(jí):l 使用 S協(xié)議以SSLSecurity Socket Layer交換數(shù)據(jù),增強(qiáng)通信平安;l 通過數(shù)字簽名防止傳輸過程篡改;l 對(duì)用戶身份識(shí)別的UserToken使用DES算法數(shù)據(jù)加密;l 業(yè)務(wù)數(shù)據(jù)定時(shí)自動(dòng)備份;程序集:l 完整的權(quán)限配置,包括功能權(quán)限和數(shù)據(jù)權(quán)限;l 客戶端輸入校驗(yàn),防止JS攻擊、XSS攻擊、SQL注入等;l 輔助平安設(shè)計(jì),比方密碼控件、圖片驗(yàn)證碼、 確認(rèn)碼等;平安性平安壓倒一切。大多數(shù)用戶只是問問SaaS廠商是不是采用了平安套接層(SSL)技術(shù),而平安性涵蓋的不僅僅只有這個(gè)方面。要向潛在的SaaS廠商詢問以下問題:放置

6、效勞器的數(shù)據(jù)中心有沒有24×7全天候的物理平安措施?數(shù)據(jù)中心有沒有得到保護(hù)(保安是不是24小時(shí)在周圍至少巡視一次)?誰有權(quán)訪問這些效勞器(只有內(nèi)部員工可以訪問,還是承包商也可以訪問?)有沒有日志記錄誰何時(shí)進(jìn)入、何時(shí)離開?如果有日志,那么隔多長時(shí)間審計(jì)這些日志?應(yīng)用程序有沒有使用基于行業(yè)標(biāo)準(zhǔn)的128位加密技術(shù)?如果多個(gè)客戶使用的應(yīng)用程序放在同一臺(tái)效勞器上,那么它們有沒有采用邏輯或物理分隔,從而確保你的數(shù)據(jù)不被未授權(quán)的人所看到?SaaS廠商中可以訪問你企業(yè)數(shù)據(jù)的工作人員有沒有經(jīng)過犯罪背景調(diào)查?知道被定罪的重罪犯是不能訪問你企業(yè)那些敏感的個(gè)人數(shù)據(jù),這很重要。廠商有沒有正規(guī)的業(yè)務(wù)連續(xù)性方案(

7、BCP)?對(duì)方愿不愿意與你共享該方案、它能消除你的擔(dān)憂嗎?SaaS下的平安性設(shè)計(jì)很重要。一般常見的平安性設(shè)計(jì)分為兩類:系統(tǒng)級(jí)和程序級(jí)。(1) 系統(tǒng)級(jí): 使用 S協(xié)議以SSLSecurity Socket Layer交換數(shù)據(jù),增強(qiáng)通信平安; 通過數(shù)字簽名防止傳輸過程篡改; 對(duì)用戶身份識(shí)別的UserToken使用DES算法數(shù)據(jù)加密; 業(yè)務(wù)數(shù)據(jù)定時(shí)自動(dòng)備份。(2) 程序級(jí): 完整的權(quán)限配置,包括功能權(quán)限和數(shù)據(jù)權(quán)限; 客戶端輸入校驗(yàn),防止JS攻擊、XSS攻擊、SQL注入等; 輔助平安設(shè)計(jì),比方密碼控件、圖片驗(yàn)證碼、 確認(rèn)碼等?,F(xiàn)在SaaS Multi-Tenant在數(shù)據(jù)存儲(chǔ)上存在三種主要的方案(1)

8、方案一:獨(dú)立數(shù)據(jù)庫這是第一種方案,即一個(gè)Tenant一個(gè)Database見圖3-14,這種方案的用戶數(shù)據(jù)隔離級(jí)別最高,平安性最好,但本錢也高。優(yōu)點(diǎn):為不同的租戶提供獨(dú)立的數(shù)據(jù)庫,有助于簡化數(shù)據(jù)模型的擴(kuò)展設(shè)計(jì),滿足不同租戶的獨(dú)特需求;如果出現(xiàn)故障,恢復(fù)數(shù)據(jù)比擬簡單。缺點(diǎn):增大了數(shù)據(jù)庫的安裝數(shù)量,隨之帶來維護(hù)本錢和購置本錢的增加。這種方案與傳統(tǒng)的一個(gè)客戶、一套數(shù)據(jù)、一套部署類似,差異只在于軟件統(tǒng)一部署在運(yùn)營商那里。如果面對(duì)的是銀行、醫(yī)院等需要非常高數(shù)據(jù)隔離級(jí)別的租戶,可以選擇這種模式,提高租用的定價(jià)。如果定價(jià)較低,產(chǎn)品走低價(jià)路線,這種方案一般對(duì)運(yùn)營商來說是無法承受的。(2) 方案二:共享數(shù)據(jù)庫,隔

9、離數(shù)據(jù)架構(gòu)這是第二種方案,即多個(gè)或所有租戶共享Database,但一個(gè)Tenant一個(gè)Schema。優(yōu)點(diǎn):為平安性要求較高的租戶提供了一定程度的邏輯數(shù)據(jù)隔離,并不是完全隔離;每個(gè)數(shù)據(jù)庫可以支持更多的租戶數(shù)量。缺點(diǎn):如果出現(xiàn)故障,數(shù)據(jù)恢復(fù)比擬困難,因?yàn)榛謴?fù)數(shù)據(jù)庫將牽扯到其他租戶的數(shù)據(jù);如果需要跨租戶統(tǒng)計(jì)數(shù)據(jù),存在一定困難。(3) 方案三:共享數(shù)據(jù)庫,共享數(shù)據(jù)架構(gòu)這是第三種方案,即租戶共享同一個(gè)Database、同一個(gè)Schema,但在表中通過TenantID區(qū)分租戶的數(shù)據(jù)。這是共享程度最高、隔離級(jí)別最低的模式。優(yōu)點(diǎn):三種方案比擬,第三種方案的維護(hù)和購置本錢最低,允許每個(gè)數(shù)據(jù)庫支持的租戶數(shù)量最多。

10、缺點(diǎn):隔離級(jí)別最低,平安性最低,需要在設(shè)計(jì)開發(fā)時(shí)加大對(duì)平安的開發(fā)量;數(shù)據(jù)備份和恢復(fù)最困難,需要逐表逐條備份和復(fù)原。如果希望以最少的效勞器為最多的租戶提供效勞,并且租戶接受以犧牲隔離級(jí)別換取降低本錢,這種方案最適合。數(shù)據(jù)庫層性能優(yōu)化建立適宜的索引l 索引應(yīng)該創(chuàng)立在條件where、排序order by、分組group by等操作所涉及的列上;l 索引應(yīng)該有較強(qiáng)的選擇性,即應(yīng)盡可能建立在重復(fù)數(shù)據(jù)少的數(shù)據(jù)列中;l 如果多個(gè)條件經(jīng)常需要組合起來查詢,應(yīng)合理使用聯(lián)合索引;l 一次查詢中只能使用一個(gè)索引,可使用相應(yīng)的分析工具分析索引效果;l 索引不是越多越好一個(gè)表最好在5個(gè)索引以內(nèi),過多的索引可能導(dǎo)致CUD

11、新增、修改、刪除的性能降低,并且占用更多的空間。消除大數(shù)據(jù)表連接消除表連接的幾種解決方案解決方案適用場(chǎng)景例如場(chǎng)景冗余存儲(chǔ)關(guān)聯(lián)字段業(yè)務(wù)需求上可以接受冗余導(dǎo)致的不一致,或者冗余數(shù)據(jù)可以很容易被同步更新訂單列表查詢時(shí),希望查看到訂單的客戶名稱,原本訂單上只記錄了客戶ID,通過關(guān)聯(lián)客戶表查詢客戶名稱Cache緩存變動(dòng)概率不高,但是對(duì)于數(shù)據(jù)一致性要求較高用戶名USER_NAME被很多業(yè)務(wù)所關(guān)聯(lián)查詢,但是也不適用于冗余方案業(yè)務(wù)上不允許不一致,并且要保持所有冗余存儲(chǔ)的地方同步更新很困難直接刪除關(guān)聯(lián)字段不是必須包含的被關(guān)聯(lián)表的字段,可以直接從列表查詢中去除訂單列表中的產(chǎn)品型號(hào)等非關(guān)鍵字段,其實(shí)并不一定要包含在

12、訂單列表中拆分成屢次查詢對(duì)于單個(gè)數(shù)據(jù)的查詢,如果涉及多張關(guān)聯(lián)表,有時(shí)分屢次查詢會(huì)比一次復(fù)雜的關(guān)聯(lián)查詢更為適宜訂單表單中需要查詢到關(guān)聯(lián)產(chǎn)品的編碼、型號(hào)等很多字段應(yīng)用層性能優(yōu)化:Cache其實(shí)很難說Cache就是應(yīng)用層性能的優(yōu)化策略。因?yàn)榇缶植壳闆r下,Cache所緩存的內(nèi)容就是數(shù)據(jù)庫中存儲(chǔ)的內(nèi)容。采用Cache策略其實(shí)也是對(duì)數(shù)據(jù)庫層的一種優(yōu)化,因?yàn)槠浞乐沽藢?duì)于數(shù)據(jù)庫的頻繁訪問。MemCached和JBoss Cache應(yīng)該是兩類比擬典型的Cache。MemCachedJBoss Cache特性1、 基于Client/Server架構(gòu)2、 只有一份數(shù)據(jù)Copy,不需要數(shù)據(jù)同步基于JGroup多播的分

13、布式Cache優(yōu)勢(shì)不需要數(shù)據(jù)同步,防止復(fù)雜的多播等技術(shù)Cache讀取基于本地Memory,性能更高日志記錄日志記錄就是要對(duì)用戶在系統(tǒng)中的操作行為和操作的數(shù)據(jù)等進(jìn)行記錄,以便對(duì)用戶在系統(tǒng)中的操作進(jìn)行查證,以保證用戶行為是不可偽造的、不可銷毀的、不可否認(rèn)的。也就是說,用戶在系統(tǒng)中的行為是有據(jù)可查的,不能在系統(tǒng)中偽造自己的行為,或者偽造其他用戶的行為;同時(shí),用戶是不能銷毀這些證據(jù)的,不能否認(rèn)自己的行為。日志記錄具體包括兩局部:行為日志記錄和數(shù)據(jù)日志記錄。(1) 行為日志記錄行為日志記錄就是要對(duì)用戶在系統(tǒng)中所訪問的每一個(gè)頁面,在各頁面中所做的每一個(gè)行為都記錄下來,記錄用戶的身份和行為的時(shí)刻。例如,租戶

14、A的用戶A1在2021年7月13日 17:07:50訪問了XXX系統(tǒng)的重要客戶列表頁面,做了刪除客戶信息的操作。行為日志記錄的實(shí)現(xiàn),可以采用面向方法的方案來實(shí)現(xiàn),例如,通過過濾器或攔截器的方式Spring前置裝備,來對(duì)所有的頁面請(qǐng)求行為及頁面里的提交行為多進(jìn)行攔截,然后將其記錄在日志文件里或數(shù)據(jù)庫里。行為日志記錄是區(qū)分用戶在系統(tǒng)中行為的一個(gè)重要依據(jù),對(duì)于系統(tǒng)使用與系統(tǒng)運(yùn)營分開的SaaS系統(tǒng)就顯得尤為重要。(2) 數(shù)據(jù)日志記錄數(shù)據(jù)日志記錄,就是要對(duì)用戶在系統(tǒng)中所操作的數(shù)據(jù)進(jìn)行記錄,記錄數(shù)據(jù)的變更過程及變更的歷史。這在多人操作同一個(gè)數(shù)據(jù)的系統(tǒng)中顯得尤為重要??梢酝ㄟ^流程引擎記錄流程日志。例如,用戶

15、A在財(cái)務(wù)系統(tǒng)中提交了一張財(cái)務(wù)報(bào)銷單,報(bào)銷金額是1000元,在經(jīng)過了用戶B、C、D等一系列人的修改和審批后,用戶A看到的報(bào)銷金額變成了500元,如果沒有報(bào)銷金額的變更日志記錄,用戶A一定會(huì)很疑惑,是誰因?yàn)槭裁丛蛐薷牧诉@個(gè)報(bào)銷金額。那么,系統(tǒng)就很有必要對(duì)報(bào)銷金額的變更進(jìn)行日志記錄。(3) 日志記錄的平安日志記錄是對(duì)用戶在系統(tǒng)中行為進(jìn)行查證的依據(jù),是用來跟蹤和保障系統(tǒng)平安的,那么,日志記錄本身的平安性也是需要重點(diǎn)考慮的。首先,日志記錄應(yīng)該是只讀的,最好能加上時(shí)間戳,不應(yīng)該被認(rèn)為修改或者偽造;其次,日志記錄涉及用戶的隱私,應(yīng)該是保密的,要防止被非法使用。租戶的日志只向Tenant管理員開發(fā),并且Te

16、nant管理員也只能查詢租戶自己的日志。數(shù)據(jù)加密算法會(huì)犧牲一定性能1、 使用AES對(duì)稱加密算法;2、 每個(gè)企業(yè)生成一個(gè)數(shù)據(jù)密鑰生成后不能改變,否那么先前加密過的數(shù)據(jù)無法進(jìn)行解密;3、 企業(yè)key是利用企業(yè)管理員的密碼明文去加密存儲(chǔ)的,這就要求每個(gè)企業(yè)在建立時(shí),必須先建立一個(gè)管理員;4、 該企業(yè)下的每個(gè)用戶使用其自身的登錄密碼原文對(duì)數(shù)據(jù)密碼進(jìn)行AES加密,并存儲(chǔ)到用戶表中。密鑰加密;5、 用戶保存敏感數(shù)據(jù)時(shí),使用以準(zhǔn)備好的密鑰對(duì)數(shù)據(jù)進(jìn)行AES加密;加/解密過程:1、 企業(yè)注冊(cè)時(shí),為企業(yè)生成一個(gè)唯一的key,存放于企業(yè)表中;2、 用戶注冊(cè)后,用戶表中存放一個(gè)利用用戶密碼明文加密過的企業(yè)key;3、

17、 用戶登錄后,通過密碼明文,解密出企業(yè)key,并存放到相應(yīng)位置,待加/解密時(shí)使用;4、 用戶修改密碼時(shí),要使用原密碼將企業(yè)key解密,并用新密碼重新加密保存;基于SaaS云計(jì)算網(wǎng)絡(luò)性能測(cè)試指標(biāo) 衡量云計(jì)算的網(wǎng)絡(luò)性能根據(jù)使用的網(wǎng)絡(luò)設(shè)備不同擁有很多指標(biāo)。最常見最關(guān)鍵的性能指標(biāo)包括以下幾項(xiàng):新建速率CPS、并發(fā)數(shù)CC吞吐量GoodPut、響應(yīng)時(shí)間Response Time。(1) 新建速率 新建速率指通過數(shù)據(jù)中心中間網(wǎng)絡(luò)每秒可以處理的TCP Session速率,單位為CPSConnections Per Second。 新建速率中的“新建是指一個(gè)TCP Session成功建立并關(guān)閉的整個(gè)過程,將TC

18、P關(guān)閉方式選擇使用TCP FIN報(bào)文觸發(fā)的4次握手關(guān)閉方式。此種方式最符合當(dāng)前普遍的網(wǎng)絡(luò)協(xié)議應(yīng)用模型。在局部特殊業(yè)務(wù)需求的測(cè)試場(chǎng)景下,還可以采用TCP RESET方式進(jìn)行快速會(huì)話關(guān)閉,以檢驗(yàn)網(wǎng)絡(luò)系統(tǒng)能夠支持的極限性能。 新建速率指標(biāo)將主要表達(dá)數(shù)據(jù)中心網(wǎng)絡(luò)設(shè)備的CPU運(yùn)算處理能力。對(duì)新建速率測(cè)試開始前,應(yīng)記錄網(wǎng)絡(luò)處理設(shè)備的CPU/Memory等關(guān)鍵性能指標(biāo),測(cè)試過程中和結(jié)束后對(duì)這些指標(biāo)進(jìn)行監(jiān)控,實(shí)時(shí)了解整個(gè)網(wǎng)絡(luò)的運(yùn)行情況。(2) 并發(fā)數(shù) 并發(fā)數(shù)指通過數(shù)據(jù)中心中間網(wǎng)絡(luò)可以同時(shí)并發(fā)存在的最大TCP Session數(shù)量,單位為CCCurrent Connections。 并發(fā)數(shù)指標(biāo)表達(dá)了整網(wǎng)會(huì)話保持與表項(xiàng)存儲(chǔ)的能力,與網(wǎng)絡(luò)處理設(shè)備的內(nèi)存大小有直接關(guān)系。 對(duì)于并發(fā)數(shù)指標(biāo)測(cè)試來說,尤其需要關(guān)注其上層協(xié)議的具體應(yīng)用,一個(gè)Telnet連接保持1小時(shí)與一個(gè) 連接保持1小時(shí)在協(xié)議處理流程上是有很大不同的,應(yīng)盡量根據(jù)實(shí)際網(wǎng)絡(luò)中的業(yè)務(wù)流量設(shè)計(jì)測(cè)試模型。(3) 吞吐量 吞吐量指當(dāng)前網(wǎng)絡(luò)可以有效傳輸?shù)淖畲?數(shù)據(jù)量,也被稱為有效吞吐GoodPut,區(qū)別于傳統(tǒng)意義上的測(cè)試指標(biāo)吞吐量ThroughPut,結(jié)果

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論