架構師之路-創業互聯網公司如何搭建自己的技術架構

来源:http://www.cnblogs.com/husheng/archive/2017/10/12/7656564.html
-Advertisement-
Play Games

本文會對可能用到的相關技術進行技術選型的說明,以及技術的架構介紹 ...


適用範圍

本文主要針對中小型互聯網公司,特別適用於手機APP或者pc的後臺架構,基本可以支撐5萬日活
本文會對可能用到的相關技術進行技術選型的說明,以及技術的架構介紹,技術架構的介紹課程後面有地址,可以點進去查看。

技術指標

說一下一些技術指標的計算過程可以作為其他同學的參考

  • QPS, 如果是5萬日活,使用集中在每天的4小時,每個用戶大概產生100的請求,那麼平均下來,我們系統大概應該支撐的請求為:50000 * 100 / (4 * 60 * 60) = 350 qps/s

  • 業務數據 業務量,我們自己是新聞業務,可能會有其他的業務,比如游戲,商城等等,基本每天新增的業務數據都會在同一個量級, 每日10000, 另外跟用戶相關的信息也是比較大的一塊,比如用戶的訂閱等行為,一共5萬的用戶,保存相關信息可能大概需要100條的數據。

  • 緩存大小 主要業務數據和用戶相關的熱點數據限時保存在緩存中, 大概需要5個G左右。

  • 日誌大小 用戶日誌和請求日誌。 大概每天3個G左右

技術架構

images/A3HX74dDE4RSS3tTTR7FsGHnjkFw5H6h.png

整體架構因為是小公司,我們基於阿裡雲來搭建,對圖中的內容和技術選型進行一下說明:

負載均衡

可選方案: SLB, Nginx.

  • SLB要收錢,但是比較便宜,有保證,不會掛。 但是可配置的很少,不能根據功能變數名稱做ip映射

  • Nginx, 沒啥缺點,需要一定的知識。
    建議: SLB + Nginx, SLB綁定功能變數名稱作為統一的入口,然後每個伺服器上再搭建Nginx.

CDN

用於緩存靜態文件等等。 七牛和阿裡的都還可以。

  • 七牛要做的久一點, 各種圖片處理的介面要完善一些

  • 阿裡的CDN要稍微好一點點, 但是沒有不安全的訪問方式,訪問稍微沒有那麼靈活。 圖片處理功能弱一點。

分散式調用框架

目前可選的有ZK + dubbo. ZK + Motan, ZK + dubbox, edas。

  • dubbo, 阿裡的服務治理框架,已經不維護了,切換反應有點慢

  • dubboX, 噹噹基於dubbo搞的,還在維護可以一用,推薦。

  • Motan, 微博的服務治理礦建, 剛開源,需要學習一下, 推薦。

  • Edas, 阿裡雲服務,要收錢,侵入型很強,不推薦

MQ

可選的有: ActiveMQ, rocketMQ, robbitMQ,Kafka
各有好處, 但是考慮到運維的難度,推薦rocketMQ。

Redis

用來做緩存, 自建成本有點高,需要Codis, 分片,集群,主從等等,很麻煩。 建議直接用阿裡的

資料庫

主要基於讀寫分離和主從複製考慮,目前可以自建和選用阿裡的DRDS。

  • DRDS 要花錢,成本較高,沒有必要

  • 自建, 不用中間件,直接1寫2只讀, 然後配置讀寫分離的數據源,內網SLB進行讀集群。解決之。

搜索

建議ELK, 可以自動同步資料庫,除了搜索引擎的功能外,還可以做日誌搜索,監控系統。

一些典型的業務場景說明

把業務底層做成SOA模塊,通過分散式調用框架對外提供服務。

後期進行SOA到微服務的改造都會涉及。
單獨做一個小的系統來運行定時任務
熱點數據放緩存,然後通過MQ來更新緩存
日誌等數據有必要可以考慮上個Mongo

 參考內容:從無到有搭建中小型互聯網公司後臺服務架構與運維架構


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

-Advertisement-
Play Games
更多相關文章
  • jquery框架中提供了$.ajax、$.get、$.post方法,用於進行非同步交互,由於Django中預設使用CSRF約束,推薦使用$.get 示例:實現省市區的選擇 最終實現效果如圖: 將jquery文件拷貝到static/js/目錄下 打開booktest/views.py文件,定義視圖are ...
  • 考慮用靜態工廠方法替代構造器 考慮使用靜態工廠方法來替代構造器的原因: 考慮下麵的程式: 該代碼的含義是返回一個很有可能是質數並且長度為3的BigInteger對像,這裡的長度只的是將整數裝換成二進位後的長度;很有可能指的是:不是質數的概率不超過2-100。 但是如果使用的是構造函數:BigInte ...
  • 今天在一段程式中看到這樣一個很奇怪的語句: 博主查了之後發現業界稱其萬能頭文件,這個頭文件包含瞭如下等頭文件,幾乎包含了所有的C++標準庫頭文件,使用後代碼中省去了相當多的頭文件的書寫 但也有以下兩個缺點: 1、因其包含的頭文件的過多,導致程式編譯慢 2、其不屬於標準庫裡面的頭文件,只是gcc的內部 ...
  • 閑來沒事,想整理下一些知識。 這篇文章是關於spring的web程式的搭建,有什麼不對的地方希望大家批評指正。 首先我們要瞭解什麼是spring,這裡可能很多大家也都明白,無非是一個管理對象的一個容器,主要體現在IOC註入和AOP切麵編程。 關於上面的兩點在後面一點會給大家更具體的說明一下是什麼。 ...
  • 視頻直播是指利用互聯網及流媒體技術進行直播,視頻因融合了圖像、文字、聲音等豐富元素,聲形並茂,效果極佳,逐漸成為互聯網的主流表達方式。初期相關參考:HTTP 長連接和短連接灰度發佈A/B測試今天先到這兒,希望對您在系統架構設計與評估,團隊管理, 項目管理, 產品管理,團隊建設 有參考作用 , 您可能... ...
  • 十一宅了,也沒學習看啥書,所有時間花在了圍棋上,雖然很頹廢,不過令人欣慰的是居然升了3級,現在是6k水平,之前晚上下的多,停在9k挺長時間的,居然在10.1突破了,這麼看來我能升段的目標還是可能實現的,這麼看自信還真是挺重要的,而我一直不算個自信的人,本來打算10.1假期完成這個設計模式總結的,但是 ...
  • 是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織, 在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離, 從 ...
  • A代碼編輯器,線上模版編輯,仿開發工具編輯器,pdf線上預覽,文件轉換編碼B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開發利器)+快速表單構建器 freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶頁面、建表sql腳本,處理類,service等完整模塊C 集成阿 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...