<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

    2007年,“SecondLife”三維虛擬風暴席卷了現實世界。原本定位為人生模擬類在線游戲的SecondLife,現在已經逐步演變成為一個國際化的在線模擬社區。人們在其中進行虛擬房地產交易,藝術家開辦自己的作品展覽,作為世界5大會計事務所之一的畢馬威展開招聘工作,BBC等老牌傳統媒體配備了SecondLife特派專職記者,時尚巨頭阿瑪尼也開了專賣店。現實世界中的一切,都可以在SecondLife中找到對應之物。不難想象,能夠產生如此巨大影響力的SecondLife,其龐大的虛擬世界背后必然有優秀的技術架構作為支持。接下來就讓我們一起來看看其中端倪。

    SecondLife服務器構成

    SecondLife(下簡稱SL)的服務器端包括這六大類服務器:Login server(登陸服務器);User server(用戶服務器);Space server(空間服務器);Data server(即數據服務器);Simulator(即模擬器),常被稱為SIM;Other servers(其他服務器),包含若干不同功能服務器,林登公司(Linden)似乎對它們的詳情有所保留。

       下面對這六大類服務器進行詳細解釋。

    1、Login server,登錄服務器。是運行在login.agni.lindenlab.com上的CGI腳本。顧名思義,就是用來驗證用戶名和密碼的。驗證后還要決定用戶登錄到什么區域:是用戶的家、還是上次離開SL時的區域或者URL指定的某個區域。接下來要找到運行該區域的模擬器,驗證用戶是否被允許連接到該區域。最后向模擬器發出連接請求,并告知客戶端連接到何處。

    2、User server,用戶服務器。曾被用來處理用戶登錄,即登錄服務器現在的功能?,F在負責管理即時通訊(instant message)會話,尤其是組內即時通訊。

    3、Space server,空間服務器。處理基于不同網格X,Y坐標間消息的路徑選擇。模擬器與空間服務器會話以便被其登記在案,還可以發現自己的鄰居是誰。作用與網絡概念中路由器相仿。

    4、Data server,數據服務器。處理與中心數據庫、日志服務器、倉庫數據庫以及搜索數據庫的連接(上述4種服務器屬于第6類其他服務器),代表模擬器運行查詢。(注: SL 服務器網格中只有一個中心服務器,日志服務器,而倉庫服務器以及搜索服務器分別有多個,或者在某個范圍內,前兩者與后兩者分別是一對多的關系。)

    5、Simulator,模擬器。這是SL最主要的服務器。每個模擬器模擬一個256*256平米的整塊區域。當SL客戶端瀏覽器滿虛擬世界轉悠時,實際上是在不同的模擬器間被倒手。模擬器的任務有:存儲物體狀態、土地狀態、地形海拔圖狀態。模擬器還負責計算物體和土地的能見度,并把計算數據傳送給客戶端。模擬器還使用優先級隊列傳送圖像數據。還有一種物理學模擬器專門掌管Hovak物理學例庫[1]。公共談話(Chat)和即時通訊(instant message)也由模擬器處理。全速運行時,模擬器可達每秒45幀,如果不能保持全速,它將在不減低幀速率的情況下嘗試時間膨脹[2],在Second Life中如果不能全速,則會以物體顯示延遲為代價,而不會影響已顯示物品的質量,這種效果也被叫做Lag。

      模擬器兩兩之間以UDP網絡連接進行通信,并由相鄰的模擬器保持通信連接。

        要注意的是:在Second Life中,模擬器與客戶端瀏覽器(Viewer)之間的區別與其他虛擬環境差異較大。模擬器負責運行物理引擎,碰撞檢測,跟蹤每一事物和用戶化身Avitar的位置,將物品的位置發送給客戶端,必要時將更新的數據發送給客戶端(只有當發生碰撞或者方向和速度變化等情況下才會有這種更新)。而客戶端負責處理本地物品的位置,獲取速度等物理學信息,進行簡單的物理學運算以跟蹤何物向何處移動,不進行碰撞檢測。

    6、Other servers,其他服務器,其中包含若干規模較小的服務器。下面一一說明:

    l         中央樞紐:在SL的官方網站上沒有給出說明,但根據字面意思推斷,應當與全局通訊、調度以及分布式運算有關。

    l         代理數據庫:掌管元數據與項目id(UUID)之間的映射。代理(Agent)一詞在SL中特指與用戶化身(Avatar)相對應的后臺底層的唯一表示,在SL計算機系統中有唯一識別號,簡稱UUID,該號碼與用戶是唯一對應且持久存在的。其他物品也有UUID,但物品的UUID是在物品放置于虛擬世界中時臨時生成的,不是持久的UUID。元數據是指在Second Life中不可分的數據,比如構成物體形狀的基本單元(prim),或者一張紋理(texture)。一個物體可能由多個元數據組成,因此需要記錄元數據與物體,也即是此處所稱的項目之間的關系,而代理數據庫就承擔此責任。同時,任何物體都有唯一擁有者,記錄物體的擁有者,也是代理數據庫的任務。

    l         中心數據庫:官方文檔描述該服務器存儲誰擁有什么,用于記錄賬單,而實際上遠不止這么簡單,但囿于目前所能取得的資料,很少有對其詳細的敘述。

    l         搜索數據庫:中心數據庫的副本,用于搜索??梢詳喽ǎ瑸榱颂岣咚阉餍?,此數據庫一定保有大量索引。而中心數據庫為了保證數據寫入和修改的效率,使用的索引肯定是比較少的。

    l         地圖服務器:使用OpenGL繪制全局地圖。Second Life客戶端也是使用OpenGL繪制的,此外普通網頁上的SL地圖使用的是Google的地圖API。

    l         RPC服務器: XML RPC(遠程過程調用)服務器。其作用包含:開發者需要的,不通過客戶端瀏覽器來操作Second Life的API,可將XMLRPC服務器代碼翻譯為in-world請求,與空間數據庫和中心數據庫通訊。

    SecondLife用戶登錄驗證步驟解析

    我們不妨通過分析登錄驗證的步驟,來看看這些服務器是如何進行互相通信的。流程可參見文后圖示。

    1.        客戶端對用戶服務器發出安全信息校驗和(Checnsum)請求,端口號:12036。

    2.        客戶端對登錄服務器發出登錄請求:

    a)       通過HTTP打包發送XML RPC進行登錄;

    b)       Web服務器(多數情況下是Apache)與SQL數據庫通話,獲得用戶信息,連接模擬器所需信息(比如IP地址)并生成連接;

    c)       用戶帳號名稱,MD5口令,客戶端版本,登錄地址請求。

    3.        登錄服務器從數據庫獲得授權證書。

    4.        登錄服務器與網格中的模擬器對話:

    a)      決定哪個模擬器負責該客戶端;

    b)      請求會話開始;

    c)      網格返回與客戶端通訊的UDP端口號 12035,13000-13050

    5.        SIM響應登錄服務器,告知用戶是否允許登錄到模擬器。

    6.        登錄服務器響應客戶端:

    a)       返回的信息有,用戶id,會話id,安全會話id,模擬器IP,模擬器端口號,全局坐標,用戶倉庫信息等;

    b)       大部分id都是UUID(比如用戶id,會話id,安全會話id);

    c)       用戶id是唯一的,并且是永久的。

    7.        客戶端與模擬器握手,并發送用戶id和會話id。

    8.        客戶端與用戶服務器握手:

    a)       發送出席信息,以便收到組及時消息(Group IM);

    b)       給用戶授予組權限;

    c)       用戶服務器驗證模擬器會話信息(在數據庫的Presence-Agent表中)。

    結語

      以上是對SecondLife架構的一個簡要介紹,目前國內已經出現了類似SecondLife的在線虛擬游戲/社區,希望本文能夠為大家提供一些啟示,同時也期待國內的架構師們出來分享自己的經驗與心得。

    說明:本文部分內容譯自SecondLife官方wiki。

    --------------------------------------------------------------------------------

    [1]簡單地說物理學模擬器負責物理學相關的運算,比如重力加速度的效果,不同物體的空間占位關系等。Hovak是服務器端系統(grid)的代號,即將發布的是Hovak4。

    [2]物理學名詞,來自相對論。時間并不是永遠以我們感受到的當前這種速度進行的,它也會發生變化;一般和速度有關。速度越快,越接近于光速,時間就會越慢

    posted on 2008-11-03 17:00 seal 閱讀(344) 評論(0)  編輯  收藏 所屬分類: 系統架構
    主站蜘蛛池模板: 亚洲一区二区三区播放在线| 久久免费看少妇高潮V片特黄| 久久久www成人免费毛片 | 亚洲人成网站色在线观看| 无码少妇精品一区二区免费动态| 亚洲午夜激情视频| 特黄aa级毛片免费视频播放| 韩国二级毛片免费播放| 亚洲久悠悠色悠在线播放| 曰曰鲁夜夜免费播放视频| 亚洲精品美女久久久久| 99精品视频在线观看免费专区| 亚洲情XO亚洲色XO无码| aaa毛片免费观看| 久久久亚洲精品蜜桃臀| av网站免费线看| 亚洲黄黄黄网站在线观看| 免费看又黄又爽又猛的视频软件| 国产乱弄免费视频| 欧洲亚洲综合一区二区三区| 成人国产mv免费视频| 亚洲成av人片在线天堂无| 日韩中文字幕在线免费观看| 亚洲成a∧人片在线观看无码 | 亚洲欧洲自拍拍偷综合| 18禁止看的免费污网站| 亚洲手机中文字幕| av免费不卡国产观看| 亚洲乱码在线观看| 午夜高清免费在线观看| 亚洲大尺度无码无码专线一区| 日韩在线a视频免费播放| 国产亚洲精品欧洲在线观看| 免费v片在线观看无遮挡| 人体大胆做受免费视频| 中文字幕久久亚洲一区| 在线毛片片免费观看| 亚洲电影中文字幕| 免费福利视频导航| 亚洲午夜无码久久久久小说 | 亚洲熟妇无码另类久久久|