好程式設計師Java學習路線分享SpringCloud
一、 Web 應用架構的演變
隨著網際網路的發展,網站應用的規模不斷擴大,Web應用架構也在不斷的演變四個階段:單一應用、垂直應用、分散式服務、流動計算
1. 單一應用架構
當網站訪問量很小時,只需要一個應用程式,將所有的功能都部署在一起,以減少部署節點和成本 此時關鍵問題:簡化資料庫操作,資料訪問框架ORM是核心
適用場景:小型網站、管理系統、簡易辦公系統
侷限:
- 擴充套件性差
- 不便於協同開發
- 不利於升級維護
2. 垂直應用架構
當訪問量逐漸增大,單一應用(單機)負載太大,此時可以增加伺服器來進行負載均衡,提高響應速度,即集
群
但是,當增加的伺服器到達一定資料時所帶來的加速度會越來越小,此時單純的增加伺服器已無法明顯提升響 應速度
此時,需要將系統業務拆分成多個 互不相關的 系統,分別部署在獨立的伺服器上,以提升效率,稱為垂直應
用
此時關鍵問題:加速前端頁面開發MVC框架(MVVM)
優點:透過拆分專案的業務,實現業務上的獨立,降低了開發和維護的難度,便於協同開發,提高了擴充套件性
侷限:每個垂直模組中都有相同的內容(entity、dao、service、web), 公共資源無法複用,且業務邏輯與界 面無法分離
3. 分散式服務架構
當垂直應用越來越多,應用之間的互動無法避免,有些業務系統無法完全拆分為獨立系統。
此時,可以將核心業務抽取出現,作為獨立的服務Service,逐漸的形成穩定的服務中心 ,使前端應用能夠更 好的適應市場需要的變化。
此時關鍵問題:提高業務的利用以及整合分散式服務框架RPC(Remote Procedure Call 遠端過程呼叫)
4. 流動計算架構
當服務越來越多,服務之間的呼叫和依賴關係也越來越複雜,誕生了面向服務聽架構體系(SOA : Service
Oriented Architecture )
容量的評估,小服務資源的浪費等問題開始出現,此時需要增加一個排程中心 ,基於訪問壓力實時的管理集 群容量,提高叢集利用率
此時關鍵問題:資源排程和治理中心,使用springCloud+zookeeper
二 、 RPC 簡介
1. RPC 是什麼
RPC : Remote Procedure Call 遠端過程呼叫是一種程式間的通訊方式
它允許應用程式呼叫網路上的另一個應用程式中的方法
對於服務的消費者而言,無需瞭解遠端呼叫的底層細節,透明的
2. 執行流程
執行流程:
- 客戶端發起呼叫請求
- 客戶端存根 對請求引數 (介面、方法、引數等)進行序列化(封裝)
- 客戶端存根向 伺服器存根 傳送訊息
- 服務端存根 對接收到的訊息 進行反序列化
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2652586/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java學習路線分享mybatis對映程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享Java框架怎麼搭建程式設計師Java框架
- 好程式設計師Java學習路線分享Java-String常用方法程式設計師Java
- 好程式設計師Java學習路線分享原生Ajax的使用程式設計師Java
- 好程式設計師Java學習路線分享finalize()方法詳解程式設計師Java
- 好程式設計師Java學習路線分享JVM相關概念程式設計師JavaJVM
- 好程式設計師Java學習路線分享MyBatis之Spring整合程式設計師JavaMyBatisSpring
- 好程式設計師Java學習路線分享Redis快速入門程式設計師JavaRedis
- 好程式設計師Java學習路線分享MyBatis之基本使用程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享maven是什麼程式設計師JavaMaven
- 好程式設計師Java學習路線分享SpringMVC之MVC概述程式設計師JavaSpringMVC
- 好程式設計師Java學習路線分享Java中的位移運算程式設計師Java
- 好程式設計師Java學習路線分享三大特性之多型程式設計師Java多型
- 好程式設計師Java學習路線分享Dubbo架構介紹程式設計師Java架構
- 好程式設計師Java學習路線分享多執行緒概念程式設計師Java執行緒
- 好程式設計師Java學習路線分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java學習路線之集程式設計師Java
- 好程式設計師Java學習路線JSP物件程式設計師JavaJS物件
- 好程式設計師Java學習路線分享Java弱引用的理解與使用程式設計師Java
- 好程式設計師Java學習路線分享Java案例-封裝JDBC工具類程式設計師Java封裝JDBC
- 好程式設計師Java學習路線分享怎麼理解Java物件導向程式設計師Java物件
- 好程式設計師Java學習路線分享SpringMVC之請求和響應程式設計師JavaSpringMVC
- 好程式設計師Java學習路線分享如何處理中文引數程式設計師Java
- 好程式設計師Java學習路線分享MyBatis之關聯查詢程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享JVM類載入機制程式設計師JavaJVM
- 好程式設計師Java學習路線分享Spring常見面試題程式設計師JavaSpring面試題
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師Java學習路線分享5分鐘瞭解計數排序程式設計師Java排序
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師Java學習路線分享實戰Tomcat效能最佳化程式設計師JavaTomcat
- 好程式設計師Java學習路線分享氣泡排序及最佳化程式設計師Java排序
- 好程式設計師Java學習路線分享Spring建立Bean的3種方式程式設計師JavaSpringBean
- 好程式設計師Java學習路線分享JavaScript基本資料型別分析程式設計師JavaScript資料型別
- 好程式設計師Java學習路線分享JavaEE的13種核心技術程式設計師Java
- 好程式設計師web前端學習路線分享Jsonp詳解程式設計師Web前端JSON
- 好程式設計師Python學習路線分享用pprint代替print程式設計師Python
- 好程式設計師Python學習路線分享Beeprint怎麼用程式設計師Python