關於優化

来源: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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...