motan學習筆記 一 微博輕量級RPC框架Motan

前言







前幾年RPC+SOA,這幾年服務化,微服務


其實都大同小異,都是概念。dubbo是一款比較成功的開源項目,好多公司都在使用,去哪 京東 噹噹

但是,dubbo有點太繁瑣了,把rpc拆分的很細,利於大家擴展。同時綜合了服務治理。

motan,是微博基於dubbo的定製,同時框架接口比較清晰(當然dubbo也很清晰,相對而言)


不熟悉dubbo的同學,請看我之前寫的文檔   dubbo學習筆記 http://blog.csdn.net/akfly/article/category/6600674


motan

官方文檔


通過官方文檔可以看出

可以看出與dubbo很類似,之後我們會分析其的幾個模塊

register

用來和註冊中心進行交互,包括註冊服務、訂閱服務、服務變更通知、服務心跳發送等功能;Server端會在系統初始化時通過register模塊註冊服務,Client端在系統初始化時會通過register模塊訂閱到具體提供服務的Server列表,當Server 列表發生變更時也由register模塊通知Client。

protocol

用來進行RPC服務的描述和RPC服務的配置管理,這一層還可以添加不同功能的filter用來完成統計、併發限制等功能。

serialize

將RPC請求中的參數、結果等對象進行序列化與反序列化,即進行對象與字節流的互相轉換;默認使用對java更友好的hessian2進行序列化。、

transport

用來進行遠程通信,默認使用Netty nio的TCP長鏈接方式。

cluster

Client端使用的模塊,cluster是一組可用的Server在邏輯上的封裝,包含若干可以提供RPC服務的Server,實際請求時會根據不同的高可用與負載均衡策略選擇一個可用的Server發起遠程調用。
在進行RPC請求時,Client通過代理機制調用cluster模塊,cluster根據配置的HA和LoadBalance選出一個可用的Server,通過serialize模塊把RPC請求轉換爲字節流,然後通過transport模塊發送到Server端。


代碼構建

下載pherialize


motan支持protocol-yar  所以需要這個jar吧,簡單的看了下,裏面是java如何序列化成php識別的字符串

Example:

List list;

list = new ArrayList();
list.add("A string");
list.add(Integer.valueOf(12345));
list.add(Boolean.TRUE);
System.out.println(Pherialize.serialize(list));
The result is printed to stdout and looks like this:

a:3:{i:0;s:8:"A string";i:1;i:12345;i:2;b:1;}
Now you can use this string in PHP to unserialize it back into a PHP array:

$data = unserialize('a:3:{i:0;s:8:"A string";i:1;i:12345;i:2;b:1;}');
var_dump($data);
Result is a PHP array with exactly the data and types you have added to the array with Java:

array(3) {
  [0]=>
  string(8) "A string"
  [1]=>
  int(12345)
  [2]=>
  bool(true)
}


下載源碼    https://github.com/kayahr/pherialize   因爲motan使用1.2.1,切換分支,本地build即可 

下載motan


https://github.com/weibocom/motan   mvn clean install





發佈了111 篇原創文章 · 獲贊 3 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章