關於優化

来源:http://www.cnblogs.com/shouce/archive/2016/02/25/5215692.html
-Advertisement-
Play Games

從老馬那摳出點東西,由於是個視頻,沒有文檔資料,遂觀後做下總結,以便以後自己遇到優化的時候可以考慮考慮這些方面,下麵我將總結的寫出來,供大家分享,可能有不對的地方希望指出 一.SOA服務的粒度的把控: 建議:服務在設計時應該是自上而下或者在服務開發之前做相應的調整,儘量的保證服務粗粒度化,這樣就能減


從老馬那摳出點東西,由於是個視頻,沒有文檔資料,遂觀後做下總結,以便以後自己遇到優化的時候可以考慮考慮這些方面,下麵我將總結的寫出來,供大家分享,可能有不對的地方希望指出

一.SOA服務的粒度的把控:

建議:服務在設計時應該是自上而下或者在服務開發之前做相應的調整,儘量的保證服務粗粒度化,這樣就能減少前端的調用次數,當然這跟減少頁面的http請求的效果是一致的.另外現在通過UML序列圖的方式也綜合了自上而下的開發方式,為底層業務模型修改完善提供了更好的契機,那麼在開發的時候也可以進一步去討論需要公開的服務,補充上粒度比較細的那一部分.也就是說先把握大局從上到下,然後把握住細節從下而上.

二.介面的定義:

介面是否代表了業務,是否是合適的粒度,是否會有性能問題,別小看介面設計,一旦確定以後很難修改,介面的好壞決定成敗.所以介面的設計很重要.介面設計的好壞也直接影響到了性能問題.

三.圖片伺服器跟web伺服器分離

目前圖片伺服器跟web伺服器在同一臺及其上,圖片的訪問量非常大,而沒有經過壓縮和縮略圖等處理,當然圖片的處理我們後面細說.圖片的請求占用資源比較多,而主web請求占用事件比較端,而在請求隊列中等待的時間卻很長,圖片的請求嚴重影響了web的正常註冊和找回密碼等請求.建議:圖片和web伺服器分開,web站點加一些客戶端緩存,以及服務端緩存等技術,將請求的處理提高一些併發性能,用apachebench測試我們的請求併發處理是4個/s,通過緩存相信能提高至少10倍.

四.關於圖片處理:

建議:前端壓縮和處理圖片,後臺取圖片時根據前端需要生成對應的縮略圖[第一次,後面直接返回]並返回,建議圖片的名字中可以做些文章加入一些元數據等記錄圖片的存放位置,格式,時間,大小,類型等,後面擴展時可以直接通過圖片名訪問對應的key資料庫,獲取到具體路徑[可以參考淘寶的圖片文件系統:tfs],圖片文件傳輸的時候可以做壓縮,但要考慮到壓縮解壓縮需要的cpu資源,在IO(磁碟,帶寬,傳輸能力)和CPU之間有一個平衡的考慮

五.關於分散式事務性能問題的探討

由於在soa架構的系統中,服務級別的分散式事務由於占用事務鎖的事件比較長,併發大的時候很容易導致死鎖.建議:採用非同步隊列的方式解決必須有事務保證的數據操作.分散式事務的替代方式是採用隊列,放到隊列中的東西就認為是一定可以成功的,對於不使用隊列的情況,如果調用失敗了則記錄日誌,不會進行回滾.除非涉及到錢或者非常中的數據的地方纔做分散式事務

六.關於緩存

建議:分散式緩存可以考慮使用Nosql db比如:MongoDB,此Nosql資料庫併發性能非常好,而且可以簡易的進行分散式部署,節點很容易進行擴展,另外當我們對資料庫的操作和查詢都是直接面對的數苦苦,而中間沒有響應的一級二級緩存,導致壓力還是直接給了資料庫,性能的瓶頸最終在資料庫端有所體現

七.關於資料庫

資料庫要求非常高,cpu和記憶體消耗都比較大,另外對IO的讀寫也要求比較高,當前資料庫的分配應該還算可以了.後面我們設計EDMX或者設計業務時,儘量考慮後期能進行的垂直分庫,水平分庫等.另外就是資料庫集群一定要利用起來,不管是發佈,訂閱,鏡像等技術實現讀資料庫間數據同步,一定在平臺級別解決讀寫分離

八.關於日誌

異常時我們才需要日誌,而正常的操作日誌可以通過行為分析等組建進行記錄,而並不需要記錄浪費性能[文件太大,十分占用磁碟的IO和磁碟的空間],而關閉日誌我們又捕捉不到異常,所以日誌這個還是需要我們平臺或者項目進行考慮一個解決方案.

總結

一切都是為了性能,穩定行,可維護性,儘量保證節點保持簡單邏輯,儘量減少同一層節點之間依賴,並實現功能分解,使用非同步進行整合,故障轉移,失效保護.數據方面實現讀寫分離,資料庫分離,功能劃分,緩存,鏡像.最終理想的可伸縮性架構是可以自由增加或替換伺服器,無需去停機維護或做很大的調整.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 安裝 Centos 7後, 習慣性的安裝 Xmanager 3或4, 都不能正常工作, 無奈之下開始安裝 VNCServer。 (個人習慣使用Xmanager, 因為不需要安裝,只要配置一下就能用, 而且一直很穩定) 為了節省以後安裝 vncserver 的時間,寫這篇文章作備忘用 安裝/配置: 使
  • 這是一個關於怎樣在你的 CentOS 7 上安裝配置 VNC 服務的教程。當然這個教程也適合 RHEL 7 。在這個教程里,我們將學習什麼是 VNC 以及怎樣在 CentOS 7 上安裝配置 VNC 伺服器 。 我們都知道 這是一個關於怎樣在你的 CentOS 7 上安裝配置 VNC 服務的教程。當
  • 【一些前言廢話】一名web開發尤其是後端不懂LAMP環境的搭建,那就攤上事了,有些人說他一直用win下的wampServer這種傻瓜式環境搭建,用的挺好的,也有人說他用雲伺服器,搭配“一鍵搭建LAMP環境”大法也挺好用的,是的,這些在初學的時候都是可以先用上的,但是“不知其所以然”的習慣一旦養成,很
  • 作者:r1ce 原創作品轉載請註明出處 《Linux內核分析》 MOOC課程http://mooc.study.163.com/course/USTC-1000029000 關於電腦是如何工作的,這是一個容易概括卻難以詳解的問題。大家非常清楚的馮諾依曼體系,以存儲程式為最重要的特性,實際上就是CP
  • 在linux環境下輸入getevent命令遙控器按一個鍵,出現的第二行,第二個數,就是這個鍵對應的16進位,轉成10進位之後放入system\usr\keylayout\Vendor_2389_Product_00a8_Version_0200.kl文件中,然後讓這個鍵對應1,2,DPAD_UP,C
  • 添加 yum 源 Centos 6.x 的源 # rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -Uvh http://rpms.famillecollet
  • 首先用Vs自帶的Nuget包管理器下載並安裝npoi 2.0,如果沒有NuGet程式包選項,在菜單-->工具-->擴展管理器中搜索NuGet。 然後寫一個方法讀取DataTable中的內容,並輸出到MemoryStream中 這是我的NPOIHelper 1 using System; 2 usin
  • 新年耽誤了不少時間,好久沒認真的坐下來學習了,新年也快完了,又要開始正式學習了,按著視頻教學學習,用了一天的時間,學習了下簡單的變數及其相關的輸入輸出和應用,學了幾種最基本的類型: int(整型) char(字元型) string(字元串類型)double(雙精度浮點數) decimal(貨幣值類型
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...