.Net網站架構設計(一)架構概念內容
一、什麼是網際網路架構
二、網際網路架構的目標
架構的核心目標:高可用,易擴充套件,高效能,安全性
涉及到內容:研發、測試、實施、監控
三、一個網站的架構演變。
Window+IIS+SQLServer
1、簡單的Web
IIS 和 Serversql 在一臺伺服器上面;
瓶頸
首先出在SQLserver資料庫上面;然後是IIS
硬碟I/O 和資料連線池。
2、訪問量增多時
IIS 在ServerA
SQLserver 在serverB
瓶頸
硬碟I/O,
網路I/O
3、訪問繼續增多
SQL 主從複製 (讀寫分離) 主伺服器負責(插入,修改,刪除)從負責查詢。
在應用程式內部指定,查詢訪問不同的伺服器,或使用不同的handle.
WebServer 需要負載均衡。
100w PV/day
4 ,
各個Slave伺服器,有的忙,有的閒。
業務資料表越來越大,查詢速度很慢。
這時候需要採取快取技術。
對錶進行水平擴充套件,進行表拆分。
Webserver 負載高,對靜態檔案快取。
5 系統分層
Web+Cache+DB+File
應用Memached,或者Redis進行快取
SQLserver 叢集。
1、HTML靜態化
其實大家都知道,效率最高、消耗最小的就是純靜態化的html頁面,所以我們儘可能使我們的網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的資訊釋出系統CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過資訊釋出系統來管理和實現的,資訊釋出系統可以實現最簡單的資訊錄入自動生成靜態頁面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。
除了門戶和資訊釋出型別的網站,對於互動性要求很高的社群型別網站來說,儘可能的靜態化也是提高效能的必要手段,將社群內的帖子、文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社群等也是如此。
同時,html靜態化也是某些快取策略使用的手段,對於系統中頻繁使用資料庫查詢但是內容更新很小的應用,可以考慮使用html靜態化來實現,比如論壇中論壇的公用設定資訊,這些資訊目前的主流論壇都可以進行後臺管理並且儲存再資料庫中,這些資訊其實大量被前臺程式呼叫,但是更新頻率很小,可以考慮將這部分內容進行後臺更新的時候進行靜態化,這樣避免了大量的資料庫訪問請求。
2、網站設計圖片伺服器分離
大家知道,對於Web伺服器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站設計都會採用的策略,他們都有獨立的圖片伺服器,甚至很多臺圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰,在應用伺服器和圖片伺服器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以儘量少支援,儘可能少的LoadModule,保證更高的系統消耗和執行效率。
3、網站設計資料庫叢集和庫表雜湊
大型網站都有複雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一臺資料庫將很快無法滿足應用,於是我們需要使用資料庫叢集或者庫表雜湊。
網站設計在資料庫叢集方面,很多資料庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什麼樣的DB,就參考相應的解決方案來實施即可。
上面提到的資料庫叢集由於在架構、成本、擴張性方面都會受到所採用DB型別的限制,於是我們需要從應用程式的角度來考慮改善系統架構,庫表雜湊是常用並且最有效的解決方案。我們在應用程式中安裝業務和應用或者功能模組將資料庫進行分離,不同的模組對應不同的資料庫或者表,再按照一定的策略對某個頁面或者功能進行更小的資料庫雜湊,比如使用者表,按照使用者ID進行表雜湊,這樣就能夠低成本的提升系統的效能並且有很好的擴充套件性。sohu的論壇就是採用了這樣的架構,將論壇的使用者、設定、帖子等資訊進行資料庫分離,然後對帖子、使用者按照板塊和ID進行雜湊資料庫和表,最終可以在配置檔案中進行簡單的配置便能讓系統隨時增加一臺低成本的資料庫進來補充系統性能。
4、網站設計快取
快取一詞搞技術的都接觸過,很多地方用到快取。網站架構和網站開發中的快取也是非常重要。這裡先講述最基本的兩種快取。高階和分散式的快取在後面講述。網站設計架構方面的快取,對Apache比較熟悉的人都能知道Apache提供了自己的快取模組,也可以使用外加的Squid模組進行快取,這兩種方式均可以有效的提高Apache的訪問響應能力。網站程式開發方面的快取,Linux上提供的Memory Cache是常用的快取介面,可以在web開發中使用,比如用Java開發的時候就可以呼叫MemoryCache對一些資料進行快取和通訊共享,一些大型社群使用了這樣的架構。另外,在使用web語言開發的時候,各種語言基本上都有自己的快取模組和方法,PHP有Pear的Cache模組,Java就更多了,.net不是很熟悉,相信也肯定有。
5、網站設計映象
映象是大型網站常採用的提高效能和資料安全性的方式,映象的技術可以解決不同網路接入商和地域帶來的使用者訪問速度差異,比如ChinaNet和EduNet之間的差異就促使了很多網站在教育網內搭建映象站點,資料進行定時更新或者實時更新。在映象的細節技術方面,這裡不闡述太深,有很多專業的現成的解決架構和產品可選。也有廉價的通過軟體實現的思路,比如Linux上的rsync等工具。
6、網站設計負載均衡
負載均衡將是大型網站解決高負荷訪問和大量併發請求採用的終極解決辦法。負載均衡技術發展了多年,有很多專業的服務提供商和產品可以選擇,我個人接觸過一些解決方法,其中有兩個架構可以給大家做參考。硬體四層交換第四層交換使用第三層和第四層資訊包的報頭資訊,根據應用區間識別業務流,將整個區間段的業務流分配到合適的應用伺服器進行處理。 第四層交換功能就象是虛IP,指向物理伺服器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物理伺服器基礎上,需要複雜的載量平衡演算法。在IP世界,業務型別由終端TCP或UDP埠地址來決定,在第四層交換中的應用區間則由源端和終端IP地址、TCP和UDP埠共同決定。在硬體四層交換產品領域,有一些知名的產品可以選擇,比如Alteon、F5等,這些產品很昂貴,但是物有所值,能夠提供非常優秀的效能和很靈活的管理能力。Yahoo中國當初接近2000臺伺服器使用了三四臺Alteon就搞定了。
網站設計軟體四層交換
大家知道了硬體四層交換機的原理後,基於OSI模型來實現的軟體四層交換也就應運而生,這樣的解決方案實現的原理一致,不過效能稍差。但是滿足一定量的壓力還是遊刃有餘的,有人說軟體實現方式其實更靈活,處理能力完全看你配置的熟悉能力。軟體四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基於心跳線heartbeat的實時災難應對解決方案,提高系統的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿足多種應用需求,這對於分散式的系統來說必不可少。
一個典型的使用負載均衡的策略就是,在軟體或者硬體四層交換的基礎上搭建squid叢集,這種思路在很多大型網站包括搜尋引擎上被採用,這樣的架構低成本、高效能還有很強的擴張性,隨時往架構裡面增減節點都非常容易。
分散式檔案儲存。
採用MogoDB,Hadoop/HDFS
程式碼釋出
靜態內容分佈
MySql同步
Memcached 同步(repcached/Mcproxy)
Cassandra同步
其他需要注意的地方
前端優化
資料庫訪問,儲存訪問,程式邏輯。
完善的產品環節監控體系。
Cacti/Nagios/Zabbix
相關推薦
.Net網站架構設計(一)架構概念內容
一、什麼是網際網路架構 二、網際網路架構的目標 架構的核心目標:高可用,易擴充套件,高效能,安全性 涉及到內容:研發、測試、實施、監控 三、一個網站的架構演變。 Window+IIS+SQLServer 1、簡單的Web IIS
Pulsar官方文件翻譯-入門必看-概念和架構-(一)概覽(Pulsar Overview)
官網原文標題《Concepts and Architecture--Pulsar Overview》 翻譯時間:2018-09-28 譯者:本文介紹了Pulsar的起源和現狀,以及主要特性。 後續閱讀:《Messaging Concepts》 譯者序言: 由
大型網站技術架構(一)--大型網站架構演化
看完了有一本書,就應該有所收穫,有所總結,最近把《大型網站技術架構》一書給看完了,給人的印象實在深刻,再加上之前也搞過書本上講的反向代理和負載均衡以及session獨立儲存和快取,因此書本看起來還是挺通俗易懂的,而且作者李智慧給人的印象(書本)也挺深刻的,
網站重構——輕量化的網站架構設計一,使用nodejs sqlite3查詢資料
http://www.ituring.com.cn/article/72659 終於可以試著開始重寫自己部落格的框架,這又是一個愉快的過程,不再需要去考慮網站被迫關閉幾天的問題,我們想要的結果就是從dev.db中讀取到我們想要的資料,這就是這篇文章所要表達的內容。 nodejs 如果你瞭解過nod
Go遊戲服務端框架從零搭建(一)— 架構設計
五邑隱俠,本名關健昌,10年遊戲生涯,現隱居海邊。 本教程以Go語言分割槽遊戲服務端框架搭建為例。 Go語言是Google開發的一種靜態強型別、編譯型、併發型、具有垃圾回收功能的程式語言。語法上近似C語言,支援介面、可通過struct
高性能服務器架構(一):緩沖策略
lin 特點 領域 思路 不能 查表 edi 操作 帶寬 原文鏈接:https://mp.weixin.qq.com/s?__biz=MzA5ODExMTkwMA==&mid=402675187&idx=1&sn=d240f6d1430b86bc00
從零開始學習OpenCL開發(一)架構
處理器 多媒體 c++ stl context 實驗 通用 必看 是你 同時存在 1 異構計算、GPGPU與OpenCL OpenCL是當前一個通用的由很多公司和組織共同發起的多CPU\GPU\其他芯片 異構計算(heterogeneous)的標準,它是跨平臺的。旨在充
Mvc+Hui+SqlSugar+Autofac+NLog+T4 架構設計(一)
寫博客 rdf 出現 god 菜鳥 前言 ica auto 攔截器 一、前言 作為小菜鳥第一次寫博客的我還有點小激動,最近開始打算著手寫一個屬於自己架構。算下來差不多最近花一周多的下班時間了來寫這個框架,本來想整體架構開發完成測試完成後才寫博客,怕自己沒時間或失
Android系統架構(一)
查詢 核心 手機 例如 ava 模塊 api 操作系統 運行 一、Android系統版本簡介 Android操作系統已占據了手機操作系統的大半壁江山,截至本文寫作時,Android操作系統系統版本及其詳細信息,已發生了變化,具體信息見下表,當然也可以訪問https:
Spring Cloud Spring Boot mybatis分布式微服務雲架構(一)快速入門
springboot springcloud mybatis eureka config 快速入門本章主要目標完成Spring Boot基礎項目的構建,並且實現一個簡單的Http請求處理,通過這個例子對Spring Boot有一個初步的了解,並體驗其結構簡單、開發快速的特性。 系統要求:J
ansible管理實現LNAMMP架構(一)
var path 分享 define 調度器 package 創建 運行 創建數據庫 ansible管理實現LNAMMP架構(一) keepalived主/備模式高可用{nginx(proxy)|lvs} 兩臺主機(主/備)高可用nginx(p
MySQL邏輯架構(一)
語法 登入 b- tee nlog chche tmp 單獨 表鎖 MySQL 邏輯系統架構: 可以分為連接器,連接池,Sql接口,解釋器,優化庫,緩沖區,緩存,引擎 MySQL邏輯結構刻意看成二層架構,第一層通常叫做SQL Layer 在數據庫系統處理底層數據 包括權限
Asp.net Core IdentityServer4 入門教程(一):概念解析
什麽 ica 統一 理解 給他 分享 目錄 .net 系統 目錄 1、IdentityServer4 是什麽 2、什麽是OpenID和OAuth 2.0協議 3、IdentityServer4 可以用來做什麽 其他 1、IdentityServer4 是什麽 Ident
(一)架構篇之架構概況總覽
1、總體架構 總結 1)接入層架構要考慮的問題域為:高可用、擴充套件性、反向代理+擴充套件均衡 2)nginx、keepalived、lvs、f5可以很好的解決高可用、擴充套件性、反向代理+擴充套件均衡的問題 3)水平擴充套件scale out是解決擴充套件性問題的根本方案,DN
bundle is not defined 手動搭建項目架構(一)
web ons filename conf node con dir alt 所在 bundle is not defined 報錯,即找不到 bundle.js,filename: ‘bundle.js‘,//輸出的文件名(將其所依賴的js打包成bundle.js) 創
Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介
Spring Cloud是一系列框架的有序集合。利用Spring Boot的開發模式簡化了分散式系統基礎設施的開發,如服務發現、註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等(這裡只簡單的列了一部分),都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring C
常見Nginx的中介軟體架構(一)
#一、靜態資源Web服務 #檔案讀取 Syntax: sendfile on|off; Default : sendfile off; Context:http,server,location,if in location #tcp_nopush配置語法 #作用:sendfile開啟的情況下
架構到底是什麼(架構學習一)
1.理解架構是什麼?我首先需要理解系統,元件,模組,框架,架構這幾者的區別。 系統(system):關聯,規則,能力 關聯:系統是由各個模組關聯組成一個統一的整體。不關聯的兩個東西,無法產生一個系統,例如pc和汽車輪胎無法組成一個系統。 規則:系統必須要按照一定規則組成,各負其職。
Ambari 架構(一)Ambari 介紹
作者:Base Ambari 是 Apache Software Foundation 的一個頂級開源專案,是一個集中部署、管理、監控 Hadoop 分散式叢集的工具。但是這裡的 Hadoop 是一個廣義概念,並不僅僅指的是 Hadoop(HDFS、MapReduce),而是指 Hadoop
京東技術架構(一)構建億級前端讀服務
作者:張開濤 從入職京東到現在,做讀服務已經一年多的時間了,經歷了各種億級到百億級的讀服務;這段時間也進行了一些新的讀服務架構嘗試,從架構到程式碼的編寫,各個環節都進行了反覆嘗試,壓測並進行調優,希望得到一個自己滿意的讀服務架構。 一些設計原則 無狀態 資料閉環 快取銀彈 併發化 降級開關