• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            twzheng's cppblog

            『站在風(fēng)口浪尖緊握住鼠標(biāo)旋轉(zhuǎn)!』 http://www.cnblogs.com/twzheng

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              136 隨筆 :: 78 文章 :: 353 評論 :: 0 Trackbacks
            [轉(zhuǎn)]微軟msn服務(wù)器設(shè)計思想初步理解
            來源不明

            由于工作需要,我用了近2個月的時間去了解msn的協(xié)議,通過長時間的抓包和試圖實現(xiàn),我將我了解了的msn的服務(wù)器端的部分設(shè)計思想總結(jié)如下。

                    作為服務(wù)器設(shè)計,比較重要的幾個問題是:(不妥之處,希望大家修正)

                            1.安全性

                            2.并發(fā)服務(wù)能力

                            3.性能的可線性提高



                一、安全性

                        服務(wù)器的安全性包括兩部分,一是服務(wù)器本身軟硬件配置上的安全性,比如防止系統(tǒng)漏洞;二是服務(wù)器和客戶端通訊協(xié)議的安全性設(shè)計,防止通過協(xié)議本身導(dǎo)致密碼泄露、服務(wù)器被非法攻擊等。

                         在協(xié)議上,msn的密碼是通過ssl傳送到服務(wù)器的;我對ssl的內(nèi)部細(xì)節(jié)不是很了解,但是顯然,密碼經(jīng)過ssl傳輸過程到服務(wù)器端后,是被明文解出的, 因此安全性依賴于ssl本身提供。在這方面,我傾向于yahoo的設(shè)計,密碼不通過自身的明文或者任何本身的加密后密文傳輸,而是同服務(wù)器返回的 session和password結(jié)合,進(jìn)行混合的不可反向解密的md5密文進(jìn)行傳輸。這樣的加密結(jié)果被任何第三方截獲都是沒有意義的;因為不可能從這樣 的密文中分析出原來的密碼。

                        我認(rèn)為,傳輸協(xié)議中,密碼必須和服務(wù)器端協(xié)商的一個隨機(jī)seesion結(jié)合,通過不可恢復(fù)的加密方式進(jìn)行加密,傳送到服務(wù)器,服務(wù)器端也是按照session和passowrd進(jìn)行同樣方式的加密,比較加密結(jié)果,驗證用戶的合法性。

                         就軟硬件系統(tǒng)本身的安全性而言,我認(rèn)為盡量把系統(tǒng)中不需要的軟件和其它模塊去除,保留服務(wù)器系統(tǒng)運行需要的最小內(nèi)核;同時一臺服務(wù)器應(yīng)該只提供該服務(wù)器需 要提供的服務(wù),不開多余的網(wǎng)絡(luò)端口,對telnet方式禁止,而使用更安全的ssh進(jìn)行遠(yuǎn)程管理。



                        二、并發(fā)服務(wù)能力

                        服務(wù)器的并發(fā)服務(wù)能力是服務(wù)器程序設(shè)計的一個重要內(nèi)容。

                        1、在單臺服務(wù)器上,服務(wù)器軟件的性能設(shè)計應(yīng)考慮以下問題:

                                        數(shù)據(jù)拷貝

                                        內(nèi)存管理

                                        線程間的鎖控制

                        數(shù)據(jù)拷貝:

                                 通常來說,避免數(shù)據(jù)拷貝是個非常頭疼的問題。我在平時的工作中,盡量把緩沖區(qū)的指針使用范圍限定在一定的作用域內(nèi),如果需要在作用域外使用,我通常會通過 數(shù)據(jù)拷貝的方式進(jìn)行,這樣可以避免令人頭疼的內(nèi)存泄露問題,一塊內(nèi)存一旦在多個作用域使用或者在分配該內(nèi)存的作用域之外使用時,很容易搞不清楚何時該釋放 該內(nèi)存。

                                一個比較好的辦法是利用在COM里使用的引用計數(shù)技術(shù),把該內(nèi)存的釋放時機(jī)交給內(nèi)存自己管理;也就是說把內(nèi)存封裝進(jìn)一個結(jié)構(gòu)體或者類里,本身對自己被使用進(jìn)行管理,一旦發(fā)現(xiàn)自己沒有人使用了,就釋放自己。

                        內(nèi)存管理:

                         內(nèi)存的處理也是很需要注意的一部分,頻繁的new /delete內(nèi)存會讓內(nèi)存出現(xiàn)大量碎片,對服務(wù)器軟件的性能也是有不小的影響的;通常的做法我們可以一開始申請一個比較大的內(nèi)存區(qū)域,然后自己負(fù)責(zé)管 理,把這塊內(nèi)存劃分成很多小塊(64B/ 128B/ 256B),然后按照申請內(nèi)存的需要,分配合適的內(nèi)存區(qū)域。這樣可以不用每次都到系統(tǒng)申請內(nèi)存,也把內(nèi)存泄露的可能性限制在很小的范圍內(nèi)(內(nèi)存泄露應(yīng)該被 解決)。

                        另外,對于一些對象,在我們使用完后,可以暫時不把它真正的從內(nèi)存里釋放掉,而是把它掛到一個list上去,下次對于通用的對象,完全可以重用這快內(nèi)存。這也是減少內(nèi)存分配次數(shù)的一個辦法。但是這可能會導(dǎo)致使用很耗的加解鎖。

                        線程間的鎖控制:

                        涉及到鎖控制的,主要是因為共享問題。共享分為兩種:一是代碼共享部分;一是數(shù)據(jù)共享部分。其中做主要的還是數(shù)據(jù)共享部分。但是沒有什么好的解決辦法,唯一的辦法就是檢查這個共享是不是真正必要的,這些數(shù)據(jù)可不可以分成兩部分以形成不是共享的。


                    當(dāng)然,這部分為軟老大做了什么我不清楚。


                     三、性能的可線性提高

                       這主要指服務(wù)器群組的服務(wù)能力可以通過增加服務(wù)器的方式線性提高性能。這就要求服務(wù)器的服務(wù)能力分擔(dān)是均衡的,即實現(xiàn)良好的負(fù)載平衡。新加入的服務(wù)器能均衡的被負(fù)載平衡服務(wù)器分配服務(wù)。

                        當(dāng)然,這也設(shè)計到服務(wù)器集群、數(shù)據(jù)庫服務(wù)器的集群,我想找個時間專門研究這些問題。

                        在這方面,微軟的設(shè)計思想很好的體現(xiàn)了這個原則,能夠把負(fù)載均衡的交給新服務(wù)器。

                        msn 的認(rèn)證服務(wù)器、聊天服務(wù)器分開的。即每次聊天時,都需要向認(rèn)證服務(wù)器申請一個聊天服務(wù)器地址,然后在通過認(rèn)證服務(wù)器邀請對方加入到這個聊天服務(wù)器,這就 保證了聊天的人會在同一臺服務(wù)器上,不用再到數(shù)據(jù)庫服務(wù)器查找對方的地址,也避免了頭疼的服務(wù)器數(shù)據(jù)同步問題。

                        如果新加入一個服務(wù)器,那么這太服務(wù)器只要在負(fù)載平衡服務(wù)器注冊,就可以和其他服務(wù)器不相干的為客戶端提供可靠的服務(wù),當(dāng)然群組的服務(wù)能力就線性提升了。

                        寫文專為與朋友們交流,對于內(nèi)容中不妥之處,請多多指教:)
            posted on 2007-05-27 12:02 譚文政 閱讀(1048) 評論(1)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程

            評論

            # re: 微軟msn服務(wù)器設(shè)計思想初步理解 2010-03-31 13:58 re: 微軟msn服務(wù)器設(shè)計思想初步理解
            垃圾,浪費時間  回復(fù)  更多評論
              

            无码国内精品久久人妻蜜桃 | 性做久久久久久免费观看| 18岁日韩内射颜射午夜久久成人 | 亚洲精品久久久www| 国产成人精品三上悠亚久久| 国产精品99久久免费观看| 久久久久女教师免费一区| 久久久久亚洲av综合波多野结衣 | 国内精品久久久久影院一蜜桃| 国产精品99久久精品| 精品视频久久久久| 午夜精品久久久久久毛片| 青青草原综合久久大伊人精品| 亚洲国产成人精品91久久久| 久久久久国产一级毛片高清版| 青青青青久久精品国产h久久精品五福影院1421 | 欧美粉嫩小泬久久久久久久 | 久久婷婷五月综合色高清| 久久久WWW成人| 久久久久夜夜夜精品国产| 久久久午夜精品| 亚洲国产精品一区二区三区久久 | 午夜天堂精品久久久久| 婷婷久久综合九色综合绿巨人| 国产精品久久免费| 久久精品国产日本波多野结衣| 久久99精品久久久久久齐齐| 777久久精品一区二区三区无码| 亚洲AV日韩精品久久久久久久| 久久久亚洲AV波多野结衣| 2021国产精品午夜久久| 性高朝久久久久久久久久| 亚洲国产成人精品女人久久久 | 亚洲综合婷婷久久| 久久精品国产影库免费看| 精品熟女少妇av免费久久| 久久综合给合久久狠狠狠97色69 | 色综合久久久久无码专区| 亚洲色大成网站www久久九| 中文字幕乱码久久午夜| 色欲综合久久躁天天躁蜜桃|