[CareerCup] 10.1 Client-facing Service 面向客戶伺服器

Grandyang發表於2015-10-02

 

10.1 Imagine you are building some sort of service that will be called by up to 1000 client applications to get simple end-of-day stock price information (open, close, high, low). You may assume that you already have the data, and you can store it in any format you wish. How would you design the client-facing service which provides the information to client applications? You are responsible for the development, rollout, and ongoing monitoring and maintenance of the feed. Describe the different methods you considered and why you would recommend your approach. Your service can use any technologies you wish, and can distribute the information to the client applications in any mechanism you choose.

 

這道題是一道設計題,說是有一些資料資訊要給1000個客戶端應用訪問,問我們的用什麼樣的面向客戶伺服器來實現所有的功能。根據樹中描述,我們的伺服器需要易於使用者使用,也要易於自己使用,可以易於未來需要的變更修改,高效和可擴充套件性好,那麼主要有以下三種實現方法:

1. 使用txt檔案,這是最簡單的方法,使用者在FTP伺服器上下載這個文字檔案,這可能一定程度上方便了維護,因為文字檔案易於瀏覽和備份,但是訪問解析起來很麻煩,尤其是新增了新資料之後。

2. 使用SQL資料庫,讓客戶直接對資料庫操作。好處是我們可以利用資料庫強大的檢索功能找出我們想要的一些條件搜尋結果,資料庫可以回朔,且備份方便,便於客戶整合現有的應用程式。壞處是可能過載了,我們需要整個SQL資料庫的東西來維護,還需要實現額外層來瀏覽和維護資料,儘管資料庫很安全,但是我們不能讓使用者訪問一些他們不應接觸的資料。

3. 使用XML,如果我們的資料裡固定的格式和固定的大小,例如company_name, open. high, low, losing price. 那麼XML可以寫出如下這樣:

<root>
    <date value="2008-10-12">
        <company name="foo">
            <open>126.23</open>
            <high>130.27</hight>
            <low>122.83</low>
            <closingPrice>127.30</closingPrice>
        </company>
        <company name="bar">
            <open>52.73</open>
            <high>60.27</high>
            <low>50.29</low>
            <closingPrice>54.91</closingPrice>
        </company>
    </date>       
    <date value="2008-10-12">
    ...
    </date>
</root>

使用XML的優點是便於釋出,便於被機器和人讀取,大多數程式語言都有XML的解析,便於增加資料,不會影響到解析,可使用現有工具進行備份。缺點是會給客戶所有的資料,如果客戶只要部分資料,這種方法就不高效,而且對資料的查詢需要解析整個檔案。

不管我們用上述三種方法的哪種,我們可以提供一個網路伺服器讓客戶接觸到我們允許其訪問的資料,這樣用更便於控制。具體用何方法還是要權衡利弊,根據實際情況來做判斷。

 

相關文章