日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

架构知识整理

發布時間:2025/7/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 架构知识整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

架構概念

一套系統的軟件架構就是這個系統所需的結構體的集合,包括:軟件元素軟件元素之間的關系,以及二者的屬性

從視角不同一般分為:

  • 邏輯架構

關注于各個組件之間的關系,如:用戶界面、數據庫、外部系統接口

如流行的N層架構:表現層,業務邏輯層,數據層

  • 物理架構

關注于如何將軟件元素放到物理設備上,如:代理服務器、Web服務器,緩存服務器、數據庫服務器、NoSQL服務器、隊列服務器、搜索服務器。

  • 系統架構

性能、可擴展性、伸縮性、可用性、安全性

有關軟件整體結構與組件的抽象描述,用于指導大型軟件系統各個方面的設計。

在平衡性能、擴展性、伸縮性、可用性、安全性這5個系統架構要素下,實現系統功能需求。

架構模式

為了應對高并發訪問、海量數據處理、高可靠運行等一系列問題,大型互聯網公司在實戰提了許多解決方案,以實現網站的高性能、高可用、易伸縮、可擴展、安全等各種技術架構目標,這些解決方案可以被重復使用,從而被抽煉成為大型網站的架構模式

分層

應用層 - 服務層 - 數據層

應用層:視圖層 業務邏輯層

服務層:數據接口層 邏輯處理層

分層是邏輯上的,物理布署上根據規模決定

從一開始就要分層,因為分層對網站日后向分布式方向發展至關重要

分割

也就是縱切,把不同功能的服務分割開,包裝成高內聚低偶合的模塊單元,一方面有助于軟件的開發和維護,一方面,便于不同模塊的分布式布署。 分割粒度根據網站規模來決定,如:用戶,搜索,反作弊,消息

分布式

將不同的模塊布署到不同的服務器上,服務器越多,CPU,內存,存儲空間資源就越多 分布式遇到的問題:

  • 性能:通過網絡
  • 可用性:服務器多,宕機
  • 一致性:多臺機器數據保持同步,分布式事務
  • 可維護性:機器多,網絡依賴復雜

分布式分類:

  • 分布式應用和服務 將分層和分割后的模塊布署到不同的服務器上。
  • 分布式靜態資源 將JS、CSS、圖片獨立分布式布署
  • 分布式數據和存儲 將產生和處理的海量數據存放到多臺機器上面,MySQL,NoSQL
  • 分布式計算 后臺業務,如:搜索引擎的索引構建,數據倉庫的計算,Hadoop、Mapreduce
  • 分布式配置、分布式鎖、分布式文件系統。。。。

集群

** 將多臺服務器布署相同的應用,這一堆服務器叫集群。** 使用集群的目的:

  • 高可用
  • 高性能

緩存

將數據放到離計算最近的位置,可以提高訪問速度,緩存后端的計算壓力

本機緩存由遠而近是:一級緩存,二級緩存、三級緩存、內存

** 緩存種類:**

  • CDN
  • 反向代理
  • 本地緩存
  • 分布式緩存

** 使用緩存的前提:**

  • 數據訪問熱點不均衡,部分數據會被頻繁訪問,需要使用緩存:HTML的最新20條動態
  • 數據不會很快過期,否則會產生臟數據

** 數據庫的設計都是按照有緩存的負載前提下設計的。**

異步

主要是為了解耦,使用隊列

類和類之間解偶:接口

模塊與模塊之間解偶:隊列

異步的好處:

  • 提高可用性

  • 增高響應速度

  • 消除并發訪問高峰

** 問題:可能會對用戶體驗、業務流程造成影響 **

冗余

高可用的手段:冗余

應用服務:集群

數據:定期備份、主從結構對數據實時熱備、災備數據中心

自動化

開發:

  • 自動化代碼管理

  • 自動化測試

  • 自動化代碼審查

  • 自動化布署

  • 自動化安全檢查

運維:

  • 自動化監控

  • 自動化報警

  • 自動化失效轉移

  • 自動化失效恢復

  • 自動化降級

  • 自動化分配資源

安全

程序實現安全:XSS、SQL注入、編碼轉換

  • 通過密碼、手機檢驗碼進行身份認證;

  • 登錄交易對通信數據加密

  • 驗證碼防止機器人程序對網站攻擊

  • 敏感信息過濾:反作弊

架構指標

性能

響應時間

** 執行一個操作需要的時間 **

打開一個網站 幾秒數據查查詢一次 10毫秒機械硬盤一次尋址定位 4毫秒機械硬盤順序讀1M數據 2毫秒SSD順序讀1M數據 0.3毫秒從Redis讀一個數據 0.5毫秒從內存讀1M數據 10多微秒Java程序本地方法調用 幾微秒

** CPU操作時間 **

從CPU到 大約需要的CPU周期 大約需要的時間(單位ns)寄存器 1 cycle L1 Cache ~3-4 cycles ~0.5-1 nsL2 Cache ~10-20 cycles ~3-7 nsL3 Cache ~40-45 cycles ~15 ns跨槽傳輸 ~20 ns內存 ~120-240 cycles ~60-120ns網絡傳輸2K數據 1微秒

** 并發數 **

同時處理請求的數目

** 吞吐量 **

單位時間內系統處理的請求數量,如請求數/秒,頁面數每秒,訪問人數每天,

一些高大上的指標:

  • TPS:每秒處理事務數

  • HPS:每秒HTTP請求數

  • QPS:每秒的查詢數

** 性能計數器 **

運維人員關注的指標,服務器或操作系統的性能指標,如:系統負載(top命令),對象與線程數、內存使用情況、CPU使用情況,磁盤IO,網絡IO。這些指標超出閾值后,系統都可能會出問題。

優化:

** 前端優化 **

  • 減少http請求/使用瀏覽器緩存/壓縮/CSS放上面,JS放下面/減少Cookie傳統

  • CDN加速/反向代理

  • 緩存優化

  • 異步隊列

  • 集群

** 代碼優化 **

  • 多線程/內存/

  • 存儲優化

  • SSD/分布式文件系統

擴展性

對現有系統影響最小的情況下,系統功能可以持續擴展和提升的能力。

高擴展性的關鍵是:高內聚,低耦合 -> 模塊拆分

  • 分布式消息隊列

  • 分布式服務

** 大型網站遇到的問題:**

  • 編譯、布署困難:代碼多,編譯時間長,布署機器多

  • 代碼分支管理困難:復用代碼的修改經常會造成沖突

  • 數據庫連接耗盡:

  • 新增業務困難:在一個亂如麻的系統中增加新業務,維護舊功能異常痛苦,一腳全是雷,大家干的熱火朝天,就是問題多多。

** 解決方法:拆、拆、拆 (重要的事情要說3遍) **

  • 拆成低耦合的模塊,獨立布署。

  • 縱拆:將大應用拆為多個小應用獨立布署

  • 橫拆:將復用的業務拆分出來,獨立布署,對外提供穩定的接口。

服務提供者啟動后在服務注冊中心注冊,服務消費者想使用某項服務時,先從服務注冊中心獲取服務提供者列表,找到服務的接口,然后根據負載均衡策略將服務請求發送到對應的服務器上。

** 可擴展的數據結構 **

NOSQL:CouchBase、MongoDB、HBase

** 利用開放平臺建設網站生態圈 **

OpenAPI

伸縮性

不需要改變軟件的軟硬件設計,只需要布署服務器數量就可以擴大或縮小服務處理能力。

根據功能進行物理分離實現伸縮:橫向分離:不同的業務模塊分離布署、縱向分離:業務流程分離布署

單一功能通過集群來實現伸縮:一頭牛拉不動時,不找更強壯的牛,而是找兩頭牛

** 應用服務器集群的伸縮性設計 **

  • Http重定向:302

  • DNS域名解析:二級域名

  • 反向代理負載:Nginx

  • IP負載均衡

  • 數據鏈路層負載均衡:LVS

** 分布式緩存集群的伸縮性設計 **

  • 一致性Hash算法

** 數據庫伸縮性設計 **

  • 主從架構

  • 讀寫分離

** NoSQL **

  • HBase的的HRegion的分裂

可用性

可用性就是不出故障。

不可用時間=故障修復時間點-故障發現時間點

** 可用性指標=(1-不可用時間/總時間)*100% **

2個9基本可用,88小時3個9是較高可用,小于9小時4個9是高可用,53分鐘5個9是極高可用,5分鐘

** 可用性 **

** 業務拆分 **

  • 無狀態應用:負載均衡、Session管理

  • 基礎服務高可用:分級管理、超時設置、異步調用、服務降級、冪等性設計

  • 數據高可用:數據備份、失效轉移

安全性

XSS(跨站點腳本攻擊):消毒

注入攻擊:請求參數消毒,參數綁定

CSRF(跨站點請求偽造):表單Token、驗證碼、Referer檢查

加密:

單向散列加密:Md5 SHA 使用彩虹表對稱加密:交換密鑰是難題非對稱加密:公鑰加密,私鑰解密

轉載于:https://my.oschina.net/gccr/blog/494296

總結

以上是生活随笔為你收集整理的架构知识整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。