<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

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

    SecondLife服務(wù)器構(gòu)成

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

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

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

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

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

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

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

      模擬器兩兩之間以UDP網(wǎng)絡(luò)連接進行通信,并由相鄰的模擬器保持通信連接。

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

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

    l         中央樞紐:在SL的官方網(wǎng)站上沒有給出說明,但根據(jù)字面意思推斷,應(yīng)當與全局通訊、調(diào)度以及分布式運算有關(guān)。

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

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

    l         搜索數(shù)據(jù)庫:中心數(shù)據(jù)庫的副本,用于搜索。可以斷定,為了提高搜索效率,此數(shù)據(jù)庫一定保有大量索引。而中心數(shù)據(jù)庫為了保證數(shù)據(jù)寫入和修改的效率,使用的索引肯定是比較少的。

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

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

    SecondLife用戶登錄驗證步驟解析

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

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

    2.        客戶端對登錄服務(wù)器發(fā)出登錄請求:

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

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

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

    3.        登錄服務(wù)器從數(shù)據(jù)庫獲得授權(quán)證書。

    4.        登錄服務(wù)器與網(wǎng)格中的模擬器對話:

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

    b)      請求會話開始;

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

    5.        SIM響應(yīng)登錄服務(wù)器,告知用戶是否允許登錄到模擬器。

    6.        登錄服務(wù)器響應(yīng)客戶端:

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

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

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

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

    8.        客戶端與用戶服務(wù)器握手:

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

    b)       給用戶授予組權(quán)限;

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

    結(jié)語

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

    說明:本文部分內(nèi)容譯自SecondLife官方wiki。

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

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

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

    posted on 2008-11-03 17:00 seal 閱讀(344) 評論(0)  編輯  收藏 所屬分類: 系統(tǒng)架構(gòu)
    主站蜘蛛池模板: 久久99久久成人免费播放| 男性gay黄免费网站| 亚洲视频欧洲视频| 亚洲视频中文字幕在线| 久久黄色免费网站| 24小时免费直播在线观看| 免费一看一级毛片全播放| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲成av人片不卡无码久久| 精品久久久久久亚洲| 国产亚洲福利精品一区| 久久成人永久免费播放| 国产亚洲日韩一区二区三区| 国产在线观a免费观看| 国产啪精品视频网免费| 国产高清免费的视频| 亚洲成a人片77777kkkk| 免费一级毛片无毒不卡| 国产乱子影视频上线免费观看| 亚洲AV无码专区国产乱码电影| 亚洲AV日韩AV无码污污网站| 久久这里只精品国产免费10| 激情内射亚洲一区二区三区| 无遮挡呻吟娇喘视频免费播放| 亚洲综合免费视频| 精品国产综合成人亚洲区| 午夜精品射精入后重之免费观看| 亚洲第一黄色网址| 免费无码av片在线观看| 亚洲精品无码AV中文字幕电影网站| avtt天堂网手机版亚洲| 久久久免费观成人影院| 亚洲一区二区成人| 特级淫片国产免费高清视频| 亚洲免费中文字幕| 美女内射毛片在线看免费人动物| 在线精品亚洲一区二区 | a毛片在线看片免费| 亚洲福利精品电影在线观看| 国产色爽免费无码视频| 亚洲国产精品免费观看|