1、大的互聯網公司比如百度或者京東,他們的伺服器架構性能參數外部人員能知道么?
現在都是雲系列產品(幾百萬台級別)把資源共享到資源池,然後在合理的分配給不同內的應用,比如這款數容據中心伺服器,如果有1W台,那麼它的資源是累加的,也可以是其他配置的,都是累加(處理器,內存,硬碟,網路等)
產品型號:ZI2W6S8-8388HV
產品類型:雙路十二核機架式伺服器
處 理 器:Xeon Bronze
3204
內 存:8G DDR4 REG ECC
硬 盤:HD SAS
600G
網 卡:雙千兆
管 理:硬體監控、遠程管理
機 構:2U機架式
電 源:500W
操作系統:Linux免費版
/ VMware ESXi
服 務:全國聯保 叄年質保
2、怎麼在一台伺服器上架構多個網站
三種辦法:
一、互聯網上最常用的方法:虛擬主機,一般用APACHE實現專,只屬按一份軟體,只運行一次,只需要配置多個域名指向本機IP地址。APACHE能自動根據訪問者在IE輸入地址的域名,分別調用不同目錄下的文件進行反饋。這是最合理、最正宗的解決辦法。
二、如果你的網站在沒有域名服務的內部網路上運行,可以用多個IP配合APACHE來實現虛擬主機。方法同上。
三、你可以在不同的埠上啟動多個WEB伺服器,他們可以是同一套軟體,也可以是不同的軟體,比如你可以啟動兩個APACHE,或者一個APACHE、一個IIS、甚至再加一個RESION,但是他們偵聽的埠不能相同,一般默認是80,你需要修改。訪問的時候通過http://localhost:81/這樣的地址訪問。
3、互聯網伺服器架構設計包括那些內容??
1 伺服器購買和操作系統選擇
2 伺服器託管,分IP 電信/網通 帶寬 高度
3 伺服器軟體 例如WEB服務 郵局服務 資料庫 游戲服務等
4 伺服器安全配置
5 伺服器日常維護
4、幾種經典的網路伺服器架構模型的分析與比較
前言
事件驅動為廣大的程序員所熟悉,其最為人津津樂道的是在圖形化界面編程中的應用;事實上,在網路編程中事件驅動也被廣泛使用,並大規模部署在高連接 數高吞吐量的伺服器程序中,如 http 伺服器程序、ftp 伺服器程序等。相比於傳統的網路編程方式,事件驅動能夠極大的降低資源佔用,增大服務接待能力,並提高網路傳輸效率。
關於本文提及的伺服器模型,搜索網路可以查閱到很多的實現代碼,所以,本文將不拘泥於源代碼的陳列與分析,而側重模型的介紹和比較。使用 libev 事件驅動庫的伺服器模型將給出實現代碼。
本文涉及到線程 / 時間圖例,只為表明線程在各個 IO 上確實存在阻塞時延,但並不保證時延比例的正確性和 IO 執行先後的正確性;另外,本文所提及到的介面也只是筆者熟悉的 Unix/Linux 介面,並未推薦 Windows 介面,讀者可以自行查閱對應的 Windows 介面。
阻塞型的網路編程介面
幾乎所有的程序員第一次接觸到的網路編程都是從 listen()、send()、recv()等介面開始的。使用這些介面可以很方便的構建伺服器 /客戶機的模型。
我們假設希望建立一個簡單的伺服器程序,實現向單個客戶機提供類似於「一問一答」的內容服務。
圖 1. 簡單的一問一答的伺服器 /客戶機模型
我們注意到,大部分的 socket介面都是阻塞型的。所謂阻塞型介面是指系統調用(一般是 IO介面)不返回調用結果並讓當前線程一直阻塞,只有當該系統調用獲得結果或者超時出錯時才返回。
實際上,除非特別指定,幾乎所有的 IO介面 (包括 socket 介面 )都是阻塞型的。這給網路編程帶來了一個很 大的問題,如在調用 send()的同時,線程將被阻塞,在此期間,線程將無法執行任何運算或響應任何的網路請求。這給多客戶機、多業務邏輯的網路編程帶 來了挑戰。這時,很多程序員可能會選擇多線程的方式來解決這個問題。
多線程伺服器程序
應對多客戶機的網路應用,最簡單的解決方式是在伺服器端使用多線程(或多進程)。多線程(或多進程)的目的是讓每個連接都擁有獨立的線程(或進程),這樣任何一個連接的阻塞都不會影響其他的連接。
具體使用多進程還是多線程,並沒有一個特定的模式。傳統意義上,進程的開銷要遠遠大於線程,所以,如果需要同時為較多的客戶機提供服務,則不推薦使 用多進程;如果單個服務執行體需要消耗較多的 CPU 資源,譬如需要進行大規模或長時間的數據運算或文件訪問,則進程較為安全。通常,使用 pthread_create () 創建新線程,fork() 創建新進程。
我們假設對上述的伺服器 / 客戶機模型,提出更高的要求,即讓伺服器同時為多個客戶機提供一問一答的服務。於是有了如下的模型。
圖 2. 多線程伺服器模型
在上述的線程 / 時間圖例中,主線程持續等待客戶端的連接請求,如果有連接,則創建新線程,並在新線程中提供為前例同樣的問答服務。
很多初學者可能不明白為何一個 socket 可以 accept 多次。實際上,socket 的設計者可能特意為多客戶機的情況留下了伏筆,讓 accept() 能夠返回一個新的 socket。下面是 accept 介面的原型:
?
1
intaccept(ints,structsockaddr *addr, socklen_t *addrlen);
輸入參數 s 是從 socket(),bind() 和 listen() 中沿用下來的 socket 句柄值。執行完 bind() 和 listen() 後,操作系統已經開始在指定的埠處監聽所有的連接請求,如果有請求,則將該連接請求加入請求隊列。調用 accept() 介面正是從 socket s 的請求隊列抽取第一個連接信息,創建一個與 s 同類的新的 socket 返回句柄。新的 socket 句柄即是後續 read() 和 recv() 的輸入參數。如果請求隊列當前沒有請求,則 accept() 將進入阻塞狀態直到有請求進入隊列。
上述多線程的伺服器模型似乎完美的解決了為多個客戶機提供問答服務的要求,但其實並不盡然。如果要同時響應成百上千路的連接請求,則無論多線程還是多進程都會嚴重占據系統資源,降低系統對外界響應效率,而線程與進程本身也更容易進入假死狀態。
很多程序員可能會考慮使用「線程池」或「連接池」。「線程池」旨在減少創建 和銷毀線程的頻率,其維持一定合理數量的線程,並讓空閑的線程重新承擔新的執行任務。「連接池」維持連接的緩存池,盡量重用已有的連接、減少創建和關閉連 接的頻率。這兩種技術都可以很好的降低系統開銷,都被廣泛應用很多大型系統,如 websphere、tomcat 和各種資料庫等。
但是,「線程池」和「連接池」技術也只是在一定程度上緩解了頻繁調用 IO 介面帶來的資源佔用。而且,所謂「池」始終有其上限,當請求大大超過上限時,「池」構成的系統對外界的響應並不比沒有池的時候效果好多少。所以使用「池」 必須考慮其面臨的響應規模,並根據響應規模調整「池」的大小。
對應上例中的所面臨的可能同時出現的上千甚至上萬次的客戶端請求,「線程池」或「連接池」或許可以緩解部分壓力,但是不能解決所有問題。
總之,多線程模型可以方便高效的解決小規模的服務請求,但面對大規模的服務請求,多線程模型並不是最佳方案。下一章我們將討論用非阻塞介面來嘗試解決這個問題。
使用select()介面的基於事件驅動的伺服器模型
大部分 Unix/Linux 都支持 select 函數,該函數用於探測多個文件句柄的狀態變化。下面給出 select 介面的原型:
?
1
2
3
4
5
6
FD_ZERO(intfd, fd_set* fds)
FD_SET(intfd, fd_set* fds)
FD_ISSET(intfd, fd_set* fds)
FD_CLR(intfd, fd_set* fds)
intselect(intnfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
structtimeval *timeout)
這里,fd_set 類型可以簡單的理解為按 bit 位標記句柄的隊列,例如要在某 fd_set 中標記一個值為 16 的句柄,則該 fd_set 的第 16 個 bit 位被標記為 1。具體的置位、驗證可使用 FD_SET、FD_ISSET 等宏實現。在 select() 函數中,readfds、writefds 和 exceptfds 同時作為輸入參數和輸出參數。如果輸入的 readfds 標記了 16 號句柄,則 select() 將檢測 16 號句柄是否可讀。在 select() 返回後,可以通過檢查 readfds 有否標記 16 號句柄,來判斷該「可讀」事件是否發生。另外,用戶可以設置 timeout 時間。
下面將重新模擬上例中從多個客戶端接收數據的模型。
圖4.使用select()的接收數據模型
上述模型只是描述了使用 select() 介面同時從多個客戶端接收數據的過程;由於 select() 介面可以同時對多個句柄進行讀狀態、寫狀態和錯誤狀態的探測,所以可以很容易構建為多個客戶端提供獨立問答服務的伺服器系統。
圖5.使用select()介面的基於事件驅動的伺服器模型
這里需要指出的是,客戶端的一個 connect() 操作,將在伺服器端激發一個「可讀事件」,所以 select() 也能探測來自客戶端的 connect() 行為。
上述模型中,最關鍵的地方是如何動態維護 select() 的三個參數 readfds、writefds 和 exceptfds。作為輸入參數,readfds 應該標記所有的需要探測的「可讀事件」的句柄,其中永遠包括那個探測 connect() 的那個「母」句柄;同時,writefds 和 exceptfds 應該標記所有需要探測的「可寫事件」和「錯誤事件」的句柄 ( 使用 FD_SET() 標記 )。
作為輸出參數,readfds、writefds 和 exceptfds 中的保存了 select() 捕捉到的所有事件的句柄值。程序員需要檢查的所有的標記位 ( 使用 FD_ISSET() 檢查 ),以確定到底哪些句柄發生了事件。
上述模型主要模擬的是「一問一答」的服務流程,所以,如果 select() 發現某句柄捕捉到了「可讀事件」,伺服器程序應及時做 recv() 操作,並根據接收到的數據准備好待發送數據,並將對應的句柄值加入 writefds,准備下一次的「可寫事件」的 select() 探測。同樣,如果 select() 發現某句柄捕捉到「可寫事件」,則程序應及時做 send() 操作,並准備好下一次的「可讀事件」探測准備。下圖描述的是上述模型中的一個執行周期。
圖6. 一個執行周期
這種模型的特徵在於每一個執行周期都會探測一次或一組事件,一個特定的事件會觸發某個特定的響應。我們可以將這種模型歸類為「事件驅動模型」。
相比其他模型,使用 select() 的事件驅動模型只用單線程(進程)執行,佔用資源少,不消耗太多 CPU,同時能夠為多客戶端提供服務。如果試圖建立一個簡單的事件驅動的伺服器程序,這個模型有一定的參考價值。
但這個模型依舊有著很多問題。
首先,select() 介面並不是實現「事件驅動」的最好選擇。因為當需要探測的句柄值較大時,select() 介面本身需要消耗大量時間去輪詢各個句柄。很多操作系統提供了更為高效的介面,如 linux 提供了 epoll,BSD 提供了 kqueue,Solaris 提供了 /dev/poll …。如果需要實現更高效的伺服器程序,類似 epoll 這樣的介面更被推薦。遺憾的是不同的操作系統特供的 epoll 介面有很大差異,所以使用類似於 epoll 的介面實現具有較好跨平台能力的伺服器會比較困難。
其次,該模型將事件探測和事件響應夾雜在一起,一旦事件響應的執行體龐大,則對整個模型是災難性的。如下例,龐大的執行體 1 的將直接導致響應事件 2 的執行體遲遲得不到執行,並在很大程度上降低了事件探測的及時性。
圖7. 龐大的執行體對使用select()的事件驅動模型的影響
幸運的是,有很多高效的事件驅動庫可以屏蔽上述的困難,常見的事件驅動庫有 libevent 庫,還有作為 libevent 替代者的 libev 庫。這些庫會根據操作系統的特點選擇最合適的事件探測介面,並且加入了信號 (signal) 等技術以支持非同步響應,這使得這些庫成為構建事件驅動模型的不二選擇。下章將介紹如何使用 libev 庫替換 select 或 epoll 介面,實現高效穩定的伺服器模型。
使用事件驅動庫libev的伺服器模型
Libev 是一種高性能事件循環 / 事件驅動庫。作為 libevent 的替代作品,其第一個版本發布與 2007 年 11 月。Libev 的設計者聲稱 libev 擁有更快的速度,更小的體積,更多功能等優勢,這些優勢在很多測評中得到了證明。正因為其良好的性能,很多系統開始使用 libev 庫。本章將介紹如何使用 Libev 實現提供問答服務的伺服器。
(事實上,現存的事件循環 / 事件驅動庫有很多,作者也無意推薦讀者一定使用 libev 庫,而只是為了說明事件驅動模型給網路伺服器編程帶來的便利和好處。大部分的事件驅動庫都有著與 libev 庫相類似的介面,只要明白大致的原理,即可靈活挑選合適的庫。)
與前章的模型類似,libev 同樣需要循環探測事件是否產生。Libev 的循環體用 ev_loop 結構來表達,並用 ev_loop( ) 來啟動。
?
1
voidev_loop( ev_loop* loop,intflags )
Libev 支持八種事件類型,其中包括 IO 事件。一個 IO 事件用 ev_io 來表徵,並用 ev_io_init() 函數來初始化:
?
1
voidev_io_init(ev_io *io, callback,intfd,intevents)
初始化內容包括回調函數 callback,被探測的句柄 fd 和需要探測的事件,EV_READ 表「可讀事件」,EV_WRITE 表「可寫事件」。
現在,用戶需要做的僅僅是在合適的時候,將某些 ev_io 從 ev_loop 加入或剔除。一旦加入,下個循環即會檢查 ev_io 所指定的事件有否發生;如果該事件被探測到,則 ev_loop 會自動執行 ev_io 的回調函數 callback();如果 ev_io 被注銷,則不再檢測對應事件。
無論某 ev_loop 啟動與否,都可以對其添加或刪除一個或多個 ev_io,添加刪除的介面是 ev_io_start() 和 ev_io_stop()。
?
1
2
void ev_io_start( ev_loop *loop, ev_io* io )
void ev_io_stop( EV_A_* )
由此,我們可以容易得出如下的「一問一答」的伺服器模型。由於沒有考慮伺服器端主動終止連接機制,所以各個連接可以維持任意時間,客戶端可以自由選擇退出時機。
圖8. 使用libev庫的伺服器模型
上述模型可以接受任意多個連接,且為各個連接提供完全獨立的問答服務。藉助 libev 提供的事件循環 / 事件驅動介面,上述模型有機會具備其他模型不能提供的高效率、低資源佔用、穩定性好和編寫簡單等特點。
由於傳統的 web 伺服器,ftp 伺服器及其他網路應用程序都具有「一問一答」的通訊邏輯,所以上述使用 libev 庫的「一問一答」模型對構建類似的伺服器程序具有參考價值;另外,對於需要實現遠程監視或遠程遙控的應用程序,上述模型同樣提供了一個可行的實現方案。
總結
本文圍繞如何構建一個提供「一問一答」的伺服器程序,先後討論了用阻塞型的 socket 介面實現的模型,使用多線程的模型,使用 select() 介面的基於事件驅動的伺服器模型,直到使用 libev 事件驅動庫的伺服器模型。文章對各種模型的優缺點都做了比較,從比較中得出結論,即使用「事件驅動模型」可以的實現更為高效穩定的伺服器程序。文中描述的 多種模型可以為讀者的網路編程提供參考價值。
5、雲伺服器的架構應該是什麼樣的呢
1、雲主機內部硬體
雲伺服器的穩定性和內部硬體以及放置的機房環境都有不可分割的關系,首先雲主機的品牌和型號、配置是最主要的因素,而雲主機所處的環境又是其能不能發揮穩定的最重要的因素。
2、雲主機結構
雲主機的結構非常的復雜,對於操作的技術需求極高,升級過程顯得非常的困難。不過對於入門級的處理器而言,採用這一手段進行升級就方便容易很多,且安裝較為方便,無需太過考慮其他方面。雲主機硬碟一般多為入門級,也就是說能滿足日常運營的,當需求提升時,原始配置一定無法滿足新需求。因此,如果條件允許,可以用高轉速的硬碟。當然了,轉速自然越大越好,只是在散熱上需多做功夫。雲伺服器原理和電腦一樣,雲伺服器的內存也是增加數據運行的基礎,如果內存跟不上,數據處理速度一定不快。
因此,當出現處理緩慢的狀況時,可以適當的採用增加內存的方式來加大處理器的高效運行。而且現階段內存的價格降低,增加內存容量也很方便。
3、雲主機接入環境
雲主機的接入環境也是很重要的,雲主機託管時選擇共享帶寬還是獨享帶寬,通常當佔用資源小的時候,可以選擇共享帶寬,默認的帶寬就足夠用;而下載、視頻、電影類的網站則對帶寬的佔用量比較大,一般情況下推薦用獨享的帶寬,具體可以根據網站每天的訪問人數來決定。
6、網站伺服器怎麼個架構
你應該是說架設一個Web伺服器吧,也就是能讓別人瀏覽網站的伺服器
這個還比較簡單,如果說到更復雜的伺服器那就有些麻煩了
首先你要去為你的網站申請一個域名,也就是網址,然後你要在你的電腦上裝
一個IIS,Internet Information Sever 這樣就可以控制好你的網站,再具體
點就說不清楚了,你可以問你身邊的前輩們,不過你如果不會做網頁那麼架設
了伺服器也沒什麼用。 這個是Web 伺服器,瀏覽網站的。
如果你是說像網吧那樣架設那就麻煩點,要用網路操作系統,像2000sever 2003 sever或者是linux之類的操作系統才可以了,上面有一個動態主機伺服器可以假設(DHCP)裡面非常復雜,建議你去買一本相關的書看,或者是讓你身邊的人做現場輔導才可以,我光說是說不清楚的。
如果你想學習這些建議你還是先打好網路基礎,這個不是那麼容易做的,你可以去買一本相關計算機網路的書籍看
如果你了解了DNS HTTP FTP這些是怎麼回事的話那麼你就可以再去學習架設伺服器了,總體來說就是不太容易學就是了。
7、伺服器架構是什麼意思?
常見的伺服器架構有以下三種:
伺服器集群架構:
伺服器集群就是指將很多伺服器集中起來一起進行同一種服務,在客戶端看來就像是只有一個伺服器。集群可以利用多個計算機進行並行計算從而獲得很高的計算速度,也可以用多個計算機做備份,從而使得任何一個機器壞了整個系統還是能正常運行。
伺服器負載均衡架構:
負載均衡 (Load Balancing) 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴展網路設備和伺服器的帶寬、增加吞吐量、加強網路數據處理能力、提高網路的靈活性和可用性。
分布式伺服器架構:
所謂分布式資源共享伺服器就是指數據和程序可以不位於一個伺服器上,而是分散到多個伺服器,以網路上分散分布的地理信息數據及受其影響的資料庫操作為研究對象的一種理論計算模型伺服器形式。分布式有利於任務在整個計算機系統上進行分配與優化,克服了傳統集中式系統會導致中心主機資源緊張與響應瓶頸的缺陷,解決了網路GIS 中存在的數據異構、數據共享、運算復雜等問題,是地理信息系統技術的一大進步。
這個三種架構都是常見的伺服器架構,集群的主要是IT公司在做,可以保障重要數據安全;負載均衡主要是為了分擔訪問量,避免臨時的網路堵塞,主要用於電子商務類型的網站;分布式伺服器主要是解決跨區域,多個單個節點達到高速訪問的目前,一般是類似CDN的用途的話,會採用分布式伺服器。
8、文檔伺服器架構是什麼
文檔伺服器是用於政府、企業等機構安全共享文檔信息的整體解決方案,它依託書生 TESDI 數字許可權管理技術、 SEP 數字文檔技術,以集中管理的方式完整保存各單位日常產生的各類文檔,提供最大程度的共享機制,使文檔信息的價值得到最充分的利用,同時還能保證敏感文件不會被泄露 , 即使是對合法閱讀者也能進行拷貝、列印等許可權的管理和控制,從而徹底解決機構用戶的信息數字化率和信息使用率偏低的問題。
書生文檔伺服器是一個文檔集中存放,受限訪問的平台。系統採用了書生 SEPReader 作為文檔閱讀的終端,採用 SEPWriter 作為文檔轉換的工具。 SEP Writer 將不同格式不同應用程序生成的文檔轉換成統一的 SEP 格式,再通過客戶端將轉換後的文件提交給給安全文檔管理伺服器( SDP Server ),保存到專門的安全文檔資料庫中。伺服器統一控制每個文檔針對每個操作人員的瀏覽、復制、列印、傳播、摘錄等許可權,最大限度的保證電子文檔安全,而且又不妨礙合法和正常的閱讀以及操作。
書生文檔伺服器集成了多種主流的用戶身份機制,包括 Windows 域和活動目錄, Lotus 用戶集成, LDAP 用戶集成以及提供集成其他基於資料庫的應用系統用戶機制。可以和各種類型的應用系統無縫集成。系統提供 14 種不同粒度的訪問許可權,可以充分滿足復雜的管理需要。
傳統的文檔管理系統不同的是,書生文檔伺服器真正防止了非受限的傳播重要文檔,比如傳統的檔案系統,雖然有多級的用戶許可權管理機制,但文檔一旦被某個用戶訪問,用戶就可以不受限的將該文檔通過拷貝,郵寄等方式傳播給他人。而此系統採用的文檔的終生機制,文檔無論何時被訪問,除非管理員特別指定,文檔都受管理系統的控制。可以稱作是全程安全的文檔管理系統。
文檔伺服器可以與書生 Office 配合進行使用,會具有最佳的使用效果。用戶在用 Office 編輯定稿後輕松一鍵即可提交給文檔伺服器,便捷方便的操作最大程度地降低了使用者的負擔,使文檔集中共享的制度能得到最有效的貫徹執行。
9、幾種經典的網路伺服器架構模型的分析與比較
應對多客戶機的網路應用,最簡單的解決方式是在伺服器端使用多線程(或多進程)。多線程(或多進程)的目的是讓每個連接都擁有獨立的線程(或進程),這樣任何一個連接的阻塞都不會影響其他的連接。
具體使用多進程還是多線程,並沒有一個特定的模式。傳統意義上,進程的開銷要遠遠大於線程,所以,如果需要同時為較多的客戶機提供服務,則不推薦使用多進程;如果單個服務執行體需要消耗較多的 CPU 資源,譬如需要進行大規模或長時間的數據運算或文件訪問,則進程較為安全。通常,使用 pthread_create () 創建新線程,fork() 創建新進程。
10、公司網路里架構WEB伺服器,放在什麼位置啊
伺服器?--機房中的機櫃里!