對幾乎任何東西來說,如果過量了,都會造成嚴重的負面影響。例如,如果健身時間過長,會降低身體的免疫力,使人容易受病毒侵害。同樣,如果無論產品中發生了什么,都發布到一條或多條消息總線上,也會發生這種問題。解決方法是了解哪些消息具有價值,判斷它們具有多大的價值,以及這些價值是否值得發布。
在解釋過如何擴展消息總線后,為什么我們還要討論在幾乎能夠無限擴展的系統上發布多少信息呢?答案在于擴展方案的成本和復雜度。我們發現,客戶常常把幾乎每個服務執行的每個動作的消息都發布出來。在許多情況下,發布的信息是應用已經在本地日日志文件(或Web日志)中存儲過的。通常,這些客戶聲稱這些數據有助于查找故障或發現容量瓶頸(即使它們本身會造成這樣的瓶頸)甚至有一次,一個客戶聲稱因為我們他們才把所有消息都發布到總線上的,因為他們采納了我們的建議“把系統設計為可監控的”,他們認為這意味著要“捕捉系統的所有動作”。
首先,我們要解釋的是,并非所有數據對業務的價值都相等。顯然對于一個營利性的業務來說,用于完成產生利潤的交易的必要數據才是最重要的,在大多數情況下,它們比用于幫助我們分析的數據重要得多那些幫助我們在將來的業務上做得更好的數據可能比幫助我們識別的數據重要(盡管后者也非常重要)。顯然,大多數數據都有些“選擇性的價值”,我們可能以后會發現它的用途,但這種價值比當前對業務有顯的積極影響的數據的價值低。在某些情況下,只取一小部分數據,能夠提供的價值和取所有數據的價值是相當的,這種情況即在大量交易的系統中對價值較低的數據進行統計學抽樣。
在許多系統中,尤其是在跨多條消息總線的系統中,數據的成本是一致的。即使交易或數據元素的價值會根據交易類型甚至客戶的價值而改變,處理交易的成本仍然是一致的。這就事與愿違了。我們的理想狀況是系統中的任何元素的價值都遠遠超過該元素的成本,最壞的情況是價值等于成本。這種關系的簡單圖解,解釋了一個團隊應該如何處理數據。
即數據的價值大大超過了在總線上發送它的成本。在電子商務站點,這種交易的一個明顯例子就是購物車交易。右下象限區域中的數據是要拋棄的。一種可能的情況是,某人在社交網絡站點更改了他的頭像(假設頭像更改了,但并沒有生成消息)。發布信息的頻率也會對它在消息總線上的成本造成影響。隨著對總線需求的增加,總線的成本也會增加,因為需要擴展總線來滿足新的需求。利用采樣可以降低交易成本,而且如如前所述,某些情況下,還能讓我們保有100%的交易價值。抽樣可以降低交易成本,沿著橫軸從右到左會使數據價值超過數據成本,從而允許我們保留一部分數據。降低了交易成本,意味著我們可以減少消息總線的數量并降低它們的復雜度,因為要發送的消息總量減少了。
這里要傳達的總體信息是,只是因為你實現了一條消息總線,并不意味著你必須將其用于所有情況。你可能會遇到強烈的要求,即發送的消息要比需要的消息多,你應該抵制這種要求。要永遠記住,不是所有的數據價值都相等,盡管它們的成本可能相同。利用網站設計采樣技術可以降低處理數據的成本,拋棄(或者不發布)價值較低的東西。
本文地址:http://m.123beaconmarketing.com//article/3519.html