-
1 # 此生唯一
-
2 # java高階
分散式、微服務架構專題——成為架構師,你想要的都在這裡
分散式架構專題
成為架構師,你想要的都在這裡分散式架構思維
大型網際網路架構演進過程
架構師應具備的分散式知識
主流分散式架構設計詳解
架構開發基礎
多執行緒開發
高效能NIO框架
架構核心服務層技術
服務的前世今生
深入理解通訊協議
基於分散式RPC解決方案
dubbo全解析
架構關鍵技術設施
分散式環境指揮官zookeeper
分散式訊息通訊非同步與MQ
分散式快取
資料儲存SAL&NoSQL
高併發分流技術Nginx
分散式解決方案
分散式解決方案
Session跨域共享實戰
分散式事物解決方案實戰
分散式鎖解決方案實戰
分散式單點登入實戰SSO
分散式排程任務系統
分散式配置中心
分散式架構專題
分散式架構思維
架構開發基礎
架構核心服務層技術
分散式環境指揮官Zookeeper
分散式訊息通訊 非同步於MQ
分散式快取Nosql
Redis
Memcached
快取開發專題
MongoDB
資料儲存
高併發分流技術Nginx
分散式常見場景解決方案
微服務架構專題
你還不知道微服務?如何加(zhuang)薪(bi)SpringBoot
與微服務的區別於聯絡
快速構建SpringBoot工程
SpringBoot核心元件剖析
快速整合mybatis實戰
快速整合Dubbo及案例實戰
構建整合 redis及案例實戰
構建Swagger外掛實現API
管理及介面測試體系
SpringCloud
Zuul路由閘道器詳解原始碼探析
Ribbon客戶端負載均衡原理
Feign宣告式服務呼叫方式
Eureka註冊中心構件
Config配置服務中心
svn、git快速整合
Sleuth呼叫鏈路跟蹤
BUS訊息匯流排技術
Docker虛擬化技術
介紹、安裝與使用
compose部署指令碼
service服務編排
redis分散式叢集部署
docker file構建
透過maven外掛打包映象
部署及執行應用程式kubernetes編配
構建Mysql叢集實戰
高可用SpringCloud微服務與docker整合實現動態擴容實戰
微服務架構
Springboot
SpringCloud
Docker虛擬化技術
-
3 # mikechen的網際網路架構
分散式系統涉及到的理論知識及技術點比較多,以致於很多童鞋都說,分散式系統的學習是入門容易、深入難,透過網路搜尋到的知識點較為零散,難以系統化學習、融會貫通。本篇Mike將從以下幾個方面分享,帶著大家先窺探分散式的全貌,希望為大家釐清分散式學習之路的方向與具體路徑。
本篇主題分散式系統的概念分散式系統的作用分散式系統的特性分散式系統主流技術分散式系統專題合集及知識圖譜分散式系統的概念分散式系統是由一組透過網路進行通訊、為了完成共同的任務而協調工作的計算機節點組成的系統。有一種說法:分散式系統是若干獨立計算機的組合共同對使用者提供服務,但對於使用者來說,這些計算機就像是單個相關係統。
分散式系統的作用分散式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、儲存任務。其目的是利用更多的機器,處理更多的資料。
分散式系統的特性分散式系統特性主要有透明性、可擴充套件性、可用性、可靠性、高效能、一致性等。這幾個特性是分散式系統的主要衡量指標,開始分散式系統的學習,從瞭解分散式系統的特性開始。1、透明性
分散式的特徵之一是向用戶隱藏系統的內部組織結構,各種計算機之間的差別、通訊方式的差別都被隱藏了。使用分散式系統的使用者不關心繫統如何實現,以及看到的資料來自哪裡,使用者在任何時候都能以同一種方式與分散式系統進行互動。
2、可擴充套件性
可擴充套件性是指當增加或減少任務時,分散式系統的處理能力要能夠很方便地隨之增加或減少。即:能夠高效便捷地透過增加或減少機器的數量,來應對資料量的增長或減少。
3、可用性
可用性分散式系統的基本問題,可用性是指系統在各種情況下都能穩定地對外提供服務的能力,即高度可用的系統在任何時候都能正常地工作。
4、可靠性
可靠性是指系統可以無故障地持續執行,計算結果正確、儲存的資料不丟失。與可用性的差別在於,可靠性是依據時間間隔來定義,而不是任何時刻來進行定義的。
5、高效能
高效能是應用系統所需要具備的基本條件,不管是單機還是分散式系統,大家都非常關注效能。高效能是指應用系統對於客戶端請求的處理速度快,響應時間短,對於使用者來說就是該應用的操作流暢,擁有良好的使用者體驗。不同系統、不同業務型別對效能的衡量指標是不同的,譬如:淘寶交易系統可以是秒級別的響應,而網路遊戲則要保證在毫秒級別的響應。
6、一致性
通常情況下,我們所說的分散式一致性問題是指資料一致性問題。分散式架構的核心在於一致性的實現和妥協。一致性越強,對使用者越友好,但會制約系統的可用性;一致性越低,使用者端可能需要相容資料不一致的情況,但系統可用性會高出很多,具體實施時要考慮實際業務場景的需要去做取捨,不同場景下選擇合適的設計模式。
以上就是分散式系統的幾個主要特徵(基礎理論知識點)。接下來我們來了解下分散式系統在實現過程中可能用到的主流技術。
分散式系統主流技術關於分散式系統的實現,主要會使用到哪些技術呢?下面簡單羅列了一些供大家參考。
• 負載均衡:Nginx、LVS等
• webserver:Tomcat、Apache、Jboss等
• service:SOA、微服務、Spring boot,SpringCloud等
• 容器:Docker,kubernetes等
• cache:Memcache、Redis等
• 協調中心:Zookeeper、Etcd等
• RPC框架:Grpc、Dubbo、Brpc等
• 訊息佇列:Kafka、RabbitMQ、RocketMQ、QSP等
• 實時資料平臺:Storm、Akka等
• 離線資料平臺:Hadoop、Spark等
• dbproxy:Cobar等
• db:Oracle、Mysql、MongoDB、HBase等
• 搜尋:Elasticsearch、Solr等
• 日誌:Rsyslog、Elk、Flume等
分散式系統專題合集及知識圖譜Mike曾經輸出過一系列分散式系統相關的技術乾貨,主要包括:Kafka、Docker、Dubbo、Redis、負載均衡等專題,涉及到多種技術、理論知識以及協議。如果你期待對分散式系統有一個更全面的認識,想要了解各個技術在分散式系統中如何應用、分別解決哪些問題、有怎樣優秀的實現,最終將分散式系統中的相關技術與理論串聯起來,不妨瞭解下Mike免費分享的幾十期分散式系統專題合集及知識圖譜(長期持續更新)。
回覆列表
分散式是一種思想,旨在將原本的單節點應用分佈到不同的伺服器節點,以求獲得更大的運算能力和更高的效能。
分散式技術太廣了,涉及到將多個伺服器的CPU,記憶體硬碟等組成一個統一的整體,而服務,計算分佈在不同的伺服器上,服務之間的通訊,分散式之後的全域性唯一性,資料一致性,分散式事務等等,每一項可以說在實際工作中都會有大量的坑,不經歷過很難明白,下面是我的粗淺理解:
分散式儲存:
資料庫:資料庫的主從複製,讀寫分離,分庫分表這些東西,都是透過資料分佈在不同的節點,以實現資料查詢與修改的更高的效率,同時防止資料在單一節點上因為某些原因的丟失,推薦自己搭建mysql主從,使用spring aop程式碼開發或者元件搭建讀寫分離,使用mycat等元件實現分庫分表!
檔案:分散式檔案儲存系統,有HDFS和Gluster等大型的系統,提供更好的容錯性和擴充套件能力!
分散式服務:對外提供高度內聚,透明,內部靈活,分散的服務叢集!
前後端分離:將前後端的服務拆分在不同的叢集中,以保證前後端技術架構上的分離,使用node.js部署前端服務,與使用者進行互動,後臺透過某種通訊協議,提供動態資料給前端呼叫!
後端微服務:以單獨業務為導向,建立起細粒度的服務,同時服務之間透過服務發現元件進行通訊,在用的springcloud還不錯,集成了閘道器,熔斷器,負載均衡等,可以進行快速的搭建!
服務之間的通訊通常有服務暴露直接呼叫(zk.eureka等服務註冊與發現),非同步訊息傳輸(kafka等訊息佇列)!
分散式快取:快取通常是記憶體型快取,可以用來快速的存取資料,減少資料庫的壓力!分散式快取通常使用主從複製,高可用方式搭建起叢集,提高整個快取系統的容納能力,也避免單一快取節點宕機對整個服務的影響,用的較多的是redis叢集(基於redis的叢集搭建,請參考https://www.wukong.com/question/6493663252021510414/)
redis快取還因為單執行緒模型,可以用來做分散式鎖實現!
分散式計算:將一些大型的計算,使用策略分佈到不同的機器上,然後彙總得到計算結果,一般使用map-reduce模型,hadoop,spark等都是成熟而且大規模使用的框架!
分散式技術並沒有嚴格分類,技術也五花八門,作為一個程式設計師只能是每天不斷的學習才能得以入門,每個人的學習能力,領悟到的東西也有不同,今天就寫這麼多,更多的技術分享,敬請關注。。。