nginx 一二事(1) - 簡單圖片伺服器解決方案

来源:http://www.cnblogs.com/leechenxiang/archive/2016/04/16/5398566.html
-Advertisement-
Play Games

最近經常有人問圖片上傳怎麼做,有哪些方案做比較好,也看到過有關於上傳圖片的做法,但是都不是最好的 今天再這裡簡單講一下上傳圖片以及圖片伺服器的大致理念 如果是個人項目或者企業小項目,僅僅只有十來號人使用的小項目,可以使用如下方案: 用戶訪問系統,使用上傳圖片功能,那麼圖片就上傳到你的當前項目所在的t ...


最近經常有人問圖片上傳怎麼做,有哪些方案做比較好,也看到過有關於上傳圖片的做法,但是都不是最好的

今天再這裡簡單講一下上傳圖片以及圖片伺服器的大致理念

如果是個人項目或者企業小項目,僅僅只有十來號人使用的小項目,可以使用如下方案:

用戶訪問系統,使用上傳圖片功能,那麼圖片就上傳到你的當前項目所在的tomcat伺服器上,在/image下,上傳成功後用戶可以直接訪問

http://ip:port/project/images/xxx.jpg

這樣做在用戶少的時候是沒有問題的

 

當你的企業發展起來了,業務量增多了,使用的這個項目開始大起來了,發現系統速度變慢了,那麼你就考慮到集群了對吧

那麼好,假設你增加了一個tomcatB,性能提高了一點,圖片也成功上傳了,做了負載均衡,假設圖片上傳的了tomcatA(用戶是不知道的)

第二次訪問的時候(先不考慮session粘性不粘性的問題,假設是共用的),用戶訪問到了tomcatB,圖片沒有了,是個大叉叉,

我的天吶!發什麼什麼事了,明明剛剛上傳的圖片沒有了,

再刷新一下,欸!又有了?這是什麼情況呢?

後臺知道咋回事,但是用戶不知道啊!!!

 

那麼解決方案是這樣的,tomcatA和B上傳至圖片伺服器,這用戶請求的時候只訪問圖片伺服器的路徑,這樣就沒問題了

有人會問圖片伺服器用什麼來搭建呢?

tomcat?可以,但是tomcat主要處理jsp比較好,圖片文件是靜態資源,處理起來性能一般般

Apache?可以,純C語言開發的,沒問題,但是還不夠好

nginx?對了,這個是目前比較流行的一個反向代理伺服器,我在之前的文章有簡單介紹過(http://www.cnblogs.com/leechenxiang/p/5327086.html

  理論的單台機子併發能達到5萬,非常的叼,實際測試是2w左右

安裝如下的方案去做,那麼圖片伺服器就問題不大了,

 

當然,圖片上傳後,需要把圖片的路徑地址保存到資料庫啊~~

我曾經見到過一套電子商務系統的圖片上傳是採用方案是類似1的,這麼做沒問題,

但是呢,圖片居然上傳到他喵的MySQL某個表的某個欄位中的,你妹啊,我的天吶!

怎麼可以這麼做,何況資料庫沒有分庫分表分區建索引,好吧,這也是我的一個吐槽點,誰叫我曾經參與過呢

 好吧,說了這麼多都是理論,接下來的文章會具體說說怎麼做。

 


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

-Advertisement-
Play Games
更多相關文章
  • 消息通信組件Net分散式系統的核心中間件之一,應用與系統高併發,各個組件之間解耦的依賴的場景。本框架採用消息隊列中間件主要應用於兩方面:一是解決部分高併發的業務處理;二是通過消息隊列傳輸系統日誌。目前業界使用較多的消息隊列組件有RabbitMQ、ActiveMQ、MSMQ、kafka、zeroMQ等 ...
  • 註:本文摘自劉偉老師的博客http://blog.csdn.net/lovelion/article/details/7838679,如有侵權,請聯繫本人! 1.類的UML圖示 在UML中,類使用包含類名、屬性和操作且帶有分隔線的長方形來表示,如定義一個Employee類,它包含屬性name、age ...
  • ENode架構圖 什麼是ENode ENode是一個.NET平臺下,純C#開發的,基於DDD,CQRS,ES,EDA,In-Memory架構風格的,可以幫助開發者開發高併發、高吞吐、可伸縮、可擴展的應用程式的一個應用開發框架。 開源項目地址:https://github.com/tangxuehua ...
  • 獲取【下載地址】 QQ: 313596790 【免費支持更新】三大資料庫 mysql oracle sqlsever 更專業、更強悍、適合不同用戶群體【新錄針對本系統的視頻教程,手把手教開發一個模塊,快速掌握本系統】 A 集成代碼生成器(開發利器)+快速構建表單; QQ:313596790 free ...
  • Atitit JAVA p2p設計與總結 JXTA 2 JXTA 2 是開放源代碼 P2P 網路的第二個主要版本,它利用流行的、基於 Java 的參考實現作為構建基礎。在設計方面進行了重要的修改,以獲得更高的性能、海量伸縮性和可維護的 P2P 網路。本文建立在 Sing Li 於兩年前發表的 JXT ...
  • Atitit .h5文件上傳 1. 上傳原理1 2. Html1 3. Js2 4. uploadV2.js2 5. upServlet & FileUploadService {3 6. 註意::去除struts的干擾3 7. 參考3 1. 上傳原理 FormData + apache io 2. ...
  • Atitit.提升軟體Web應用程式 app性能的方法原理 h5 js java c# php python android .net 1. 提升單例有能力的1 2. 減少工作數量2 2.1. 減少距離2 2.2. 添加索引2 2.3. Dma api2 2.4. Cdn2 2.5. Cache2 ...
  • 1.意圖 提供一個創建一系列相關或相互依賴對象的介面,而無需制定它們具體的類。 2.適用性 一個系統要獨立於它的產品創建、組合和表示時。 一個系統要由多個產品系列中的一個來配置時。 當你強調一系列相關的產品對象的設計以便進行聯合使用時。 當你提供一個產品的類庫,而只想顯示它們的介面而不是實現時。 3 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...