什麼是SOA編程
SOA:面向服務架構(Service Oriented Architecture)api
關注點在業務,而不是在對象的變化上
緩存
必然性:編程技術的發展服務器
也能夠當作是一個愈來愈抽象化的發展架構
功能浪費:多個系統中,各個系統有很多部分是相同或者相似的;SOA能夠經過共用服務,減小這部分的開發負載均衡
效率低下:由於重複作輪子,因此效率低下框架
架構複雜:由於各個系統架構都不一樣,增長複雜度ide
集成困難:不一樣系統是獨立的,要集成的時候很困難函數
設計複雜:設計的對象不止是一個系統,而是對一對系統的統籌考慮工具
缺少標準:業界缺乏SOA的規範
自上而下設計(全局推進):要領導說話,決定,才能這麼作
服務治理:不少服務開發出來,如何管理這些服務
提供了以上這些一些規範和原則
有你們都承認的契約,才能共同合做
服務本身管理本身,不該該和其餘功能耦合
本身能控制本身的運行環境
二、Protobuf,一個關於數據序列化,數據傳輸、存儲的一個工具,爲了在SOA中更高效地處理數據;不完整的RPC組件
三、Thrift,一個RPC組件
四、Dubbo
Protobuf和Thrift面向跨語言,對Java支持沒有那麼好
DubboRPC框架
出現背景:
RPC,是客戶端能夠動態請求不一樣服務器的服務
SOA,是對服務的管理和治理
RPC,上面2個組件能夠實現;而爲了實現SOA,阿里巴巴開發出了Dubbo
簡介和基礎實例:
實現第三層和第四層開發需求
服務註冊器,面向服務提供者,服務消費者
其中有一個包是api,這裏是十分穩定的包,須要給消費者和提供者引用。
而後在消費者和提供者中經過xml配置便可配置好這個關係。
Dubbo提供了3種協議
Dubbo使用3種傳輸方式,推薦Netty
Dubbo提供4種序列化方式
Dubbo提供2種動態代理方式,優先第一種,使用字節碼
Dubbo支持3種容器
Dubbo基本功能上
經過XML便可構建Dubbo架構,
通常建議經過XML集中管理
通常在設計上避免這種狀況,例如分開2個接口
dubbo提供4種註冊中心的實現
dubbo基本功能下
另一種配置方式:在類路徑下添加一個dubbo.properties便可
一、服務器角度控制,只有10個請求
二、客戶端角度控制,支持多少活躍客戶端
三、負載均衡,優先級
有3種緩存策略,能夠選用
直接經過GenericService,加上方法名,參數發送,暴露
客戶端消費:
通常不會經過API來作
服務治理:
Dubbo基本原理
其它暫略
架構設計原則(上)
總結上面的工具,如何設計這個框架
分包:如下是主流的方法論
分包中最重要的2塊
內聚:
爲了實現支持插件化,Dubbo從上往下發展,都進行了嘗試
微內核,Dubbo使用的架構風格
Dubbo的插件,配置都是使用微內核的SPI來實現
架構設計原則(下)
略: