1. 程式人生 > >【從零開始學架構-李運華】07|低成本、安全、規模

【從零開始學架構-李運華】07|低成本、安全、規模

低成本

高效能和高可用架構通常都是增加伺服器來滿足要求,但低成本正相反,當然也不是首要目標。
往往“創新”才能達到低成本的目標!!

技術創新:

  • NoSQL(Memcache、Redis)等是為了解決關係型資料庫無法應對高併發帶來的訪問壓力。
  • 全文搜尋引擎(Sphinx、Elasticsearch、Slor)的出現是為了解決關係型資料庫Like搜尋的低效問題。
  • Hadoop的出現是為了解決傳統檔案系統無法應對海量資料儲存和計算的問題。

業界創新:

  • Facebook為了解決PHP低效問題,改為HHVM。
  • 新浪傳統的Redis/MC+MySQL,擴充套件為Redis/MC+SSDCachhe+MySQL方式,SSDCache解決了Redis成本過高容量小的問題,和DB穿透的壓力。
  • Linkedin開發了Kafka訊息系統。
  • 將Ruby on Rails改為其它語言框架的很多。

小公司引入新技術、大公司可創造新技術。

安全

安全舊聞:

  • 2016年雅虎資訊洩露,逾5億使用者資料在2014年被竊取。
  • 2016年10月美國遭到最大規模的DDoS攻擊、東海岸網站集體癱瘓
  • 2013年10月、浙江慧達驛站網路安全漏洞致使2千萬條酒店入住客戶資訊洩露。

安全分兩類:

1、功能安全

例如常見的XSS攻擊、CSRF攻擊、SQL注入、Windows漏洞、密碼破解等,本質上都是系統實現有漏洞,讓黑客有了可乘之機。功能安全就是“防小偷”

沒有無漏洞的系統,攻防不斷升級,沒有一勞永逸。

2、架構安全

“放強盜”,只要伺服器部署到網路中,攻擊可能從全球任意地點發起攻擊。
傳統架構安全主要依靠防火牆訪問控制策略,控制不同新人成都的區域間傳輸資料流。
這裡寫圖片描述

防火牆效能上不足以支撐高併發和海量使用者訪問。尤其是DDoS攻擊規模尤甚。
目前沒有太好的設計手段解決,更多是依靠CND雲服務等強大的帶塊和流量清洗的能力。

規模

量變引起質變,規模導致複雜

常見的規模帶來的複雜度有:

1、功能越來越多,導致系統複雜度指數級上升

功能見兩兩相關,增加功能複雜度則成指數增加。

2、資料的增長,導致複雜度發生質變

MySQL為例,單表儲存限度一般在5000萬左右,如果增加到10億就會出現以下問題:

  1. 新增索引極慢,導致不可用
  2. 修改表結構極慢
  3. 索引效能極低
  4. 資料備份耗時
  5. ……

可以通過拆表解決,但拆分過程會引入複雜行,如:

  • 拆表規則
  • 拆表查詢

無論什麼方案都會帶來一定的效能損耗

相關推薦

開始架構-07|成本安全規模

低成本 高效能和高可用架構通常都是增加伺服器來滿足要求,但低成本正相反,當然也不是首要目標。 往往“創新”才能達到低成本的目標!! 技術創新: NoSQL(Memcache、Redis)等是為了解決關係型資料庫無法應對高併發帶來的訪問壓力。

開始架構-03|架構設計的目的

架構設計的誤區     系統不一定需要架構設計;     架構設計不一定能提升開發效率;     好的架構設計能促進業務發展;     不是所有系統都需要架構設計;     等等…… 架構設計的真正目的     為了解決軟體複雜度帶來的問題 如何下手架構設計?

開始架構-10|架構設計流程:識別複雜度

架構設計第一步:識別複雜度 架構設計的本質目的是為了解決系統複雜性,所以要先了解。 【例】一個系統的複雜度來源於業務邏輯複雜,功能耦合度嚴重,架構師設計TPS達到50000/s的高效能架構沒有意義。 出現問題主要為了滿足“高可用”“高效能”“可擴充套件”三

開始架構-06|複雜地來源:可擴充套件性

可擴充套件性指系統為了應對將來需求的變化而提供的一種擴充套件能力,新需求出現時系統不需要或者僅需要少量修改就可以支援,無需整個系統重構或者重建。 面向物件就是為了解決可擴充套件性,後來的設計模式更是將可擴充套件性做到了極致。 具備良好擴充套件性的

Spring Boot使用模板freemarker開始Spring Boot(轉)

dep demo attach macro 使用 doctype com 地址 2016年 視頻&交流平臺:à SpringBoot網易雲課堂視頻http://study.163.com/course/introduction.htm?courseId=10

資料新增非同步解析重新整理大資料量redis (——)(三)Spring Boot普通類呼叫bean開始Spring Boot

部落格分類:  從零開始學Spring Boot 從零開始學Spring BootSpring Boot普通類呼叫bean    【視訊&交流平臺】 à SpringBoot視訊 http://stu

開始日文#4 15句日文基本生活問候語!學會讓日文變得更快樂

1,お早う(ございます)      おはよう 2,こんにちは(ございます)   こんにちは  3,お元気ですか 4,こばんは 5,おやすみなさい

開始日文#6 簡單文型:「請問那個是..」日語基礎文型教學

❶これはAです(這是A) ❷これはAのBです(這是A的B) ❸このAはBのです(這個A是B的) 具體發音請觀看Youtube https://www.youtube.com/watch?v=yDuH4pjWtXM&list=PLuNucubP18snvU3Zz8

開始日文#5 簡單文型:「初次見面我叫..」日文基礎文型教學★

A. 短劇會話中字翻譯(復習時念出來哦) ドリアン:「こんにちは」       (你好) さくら :「こんにちは」       (你好) ドリアン:「あ、初めまして、私はドリアンです。」 (啊,初次見面,我叫榴蓮) さくら :「初めまして

開始日文#2 搞懂日文發音的5個特徵!濁音,促音,拗音..etc + 日文Q&A回答初學者朋友問的問題!

片假名(片仮名 カタカナ katakana)是日文的一種,與平假名合稱"假名"。片假名在平安時代為了訓讀而產生,但片假名字形在明治時期才統一確定下來,此前一個發音往往有多個片假名對應存在。 具體發音請觀看Youtube https://www.youtube.com/wa

開始日文#1 日語50音的發音和寫法簡單教學!(平假名篇)

平假名是日語使用的一種表音文字,除一兩個平假名之外,均由漢字的草書演化而來,形成於公元9世紀。 圖片: 具體發音請觀看Youtube https://www.youtube.com/watch?v=GmRdUUVgSAA&index=1&list=PL

33. Spring Boot 監控和管理生產環境開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

(33)Spring Boot 監控和管理生產環境開始Spring Boot

spring-boot-actuator模組提供了一個監控和管理生產環境的模組,可以使用http、jmx、ssh、telnet等拉管理和監控應用。審計(Auditing)、 健康(health)、資料採集(metrics gathering)會自動加入到應用裡面。 首先,寫

8. 使用JPA儲存資料開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

103. Spring Boot Freemarker特別篇之contextPath開始Spring Boot

需求緣起:有人在群裡@我:請教群主大神一個問題,spring boot  + freemarker 怎麼獲取contextPath 頭疼死我了,網上沒一個靠譜的 。我就看看之前部落格中的 【Spring Boot使用模板freemarker】好像確實沒有介紹到在.ftl檔案

31. Spring Boot匯入XML配置開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

2. Spring Boot返回json資料開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

35. Spring Boot整合Redis實現快取機制開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

51. spring boot屬性檔案之多環境配置開始Spring Boot

【視訊&交流平臺】 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=40000000

(27)Spring Boot Junit單元測試開始Spring Boot

Junit這種老技術,現在又拿出來說,不為別的,某種程度上來說,更是為了要說明它在專案中的重要性。 那麼先簡單說一下為什麼要寫測試用例 1. 可以避免測試點的遺漏,為了更好的進行測試,可以提高測試效率 2. 可以自動測試,可以在專案打包前進行測試校驗 3. 可以及時發現因為