PHP RAL參數(shù)詳解
在使用PHP RAL進(jìn)行分布式接口調(diào)用的時候,RAL參數(shù)的設(shè)置是非常關(guān)鍵的一步。而在實(shí)際的開發(fā)中,我們也經(jīng)常會遇到RAL參數(shù)設(shè)置不正確,導(dǎo)致接口調(diào)用失敗的情況。因此,本文將詳細(xì)介紹php ral的參數(shù)設(shè)置,希望能幫助到廣大開發(fā)者。
1. RAL參數(shù)設(shè)置的基本概念
RAL參數(shù)是設(shè)置在config文件中的,用來控制分布式程序的一些運(yùn)行屬性、行為和目的等。
在RAL里面,參數(shù)又分為默認(rèn)參數(shù)和客戶端參數(shù)。默認(rèn)參數(shù)在RAL服務(wù)端和客戶端都生效,而客戶端參數(shù)僅對客戶端生效。
2. RAL參數(shù)設(shè)置的示例
下面以一個簡單的RPC請求為例,展示RAL參數(shù)怎樣設(shè)置。
(1)在config文件中設(shè)置默認(rèn)參數(shù)和客戶端參數(shù)
我們通過一個config.php文件來設(shè)置缺省的參數(shù)和$php_ral_config_path數(shù)組里的parameters.php文件來設(shè)置客戶端自定義的覆蓋參數(shù)。
(2)在業(yè)務(wù)代碼中調(diào)用接口
// 調(diào)用 $client = ral('my_service'); $result = $client->get('user info', array('id' =>'123456'));
上面這段代碼中,我們通過ral('my_service')來獲取service的實(shí)例對象,然后調(diào)用get方法來獲取'user info'。
3. RAL參數(shù)詳解
通過上面的兩個例子,我們可以看到php ral的參數(shù)設(shè)置有哪些項(xiàng)。下面就逐一的來詳細(xì)講解下。
(1)server_addr
如果我們的業(yè)務(wù)代碼需要調(diào)用一些遠(yuǎn)程的服務(wù),則必須設(shè)置server_addr參數(shù)。在設(shè)置時,我們可以使用分號分隔符鏈接多個遠(yuǎn)程服務(wù)器地址。
(2)service
RPC調(diào)用需要指定服務(wù)名字,而這個服務(wù)名字是由服務(wù)的提供者和使用者共同命名的。我們可以在config.php文件中設(shè)定service的名字。
(3)protocol
在RPC調(diào)用時,我們需要指定使用哪一種協(xié)議。如nami等。
(4)timeout
網(wǎng)絡(luò)IO的超時時間。
(5)request_timeout
RPC請求的超時時間。
(6)charset
RPC數(shù)據(jù)的字符編碼。
(7)compress_type
數(shù)據(jù)壓縮方式。
(8)retry
RPC請求的重試次數(shù)。
(9)is_async
是否異步調(diào)用。
(10)is_long
是否長連接。
(11)balancer
負(fù)載均衡算法。
在使用PHP RAL進(jìn)行分布式接口調(diào)用的時候,RAL參數(shù)的設(shè)置是非常關(guān)鍵的一步。而在實(shí)際的開發(fā)中,我們也經(jīng)常會遇到RAL參數(shù)設(shè)置不正確,導(dǎo)致接口調(diào)用失敗的情況。因此,本文將詳細(xì)介紹php ral的參數(shù)設(shè)置,希望能幫助到廣大開發(fā)者。
1. RAL參數(shù)設(shè)置的基本概念
RAL參數(shù)是設(shè)置在config文件中的,用來控制分布式程序的一些運(yùn)行屬性、行為和目的等。
在RAL里面,參數(shù)又分為默認(rèn)參數(shù)和客戶端參數(shù)。默認(rèn)參數(shù)在RAL服務(wù)端和客戶端都生效,而客戶端參數(shù)僅對客戶端生效。
2. RAL參數(shù)設(shè)置的示例
下面以一個簡單的RPC請求為例,展示RAL參數(shù)怎樣設(shè)置。
(1)在config文件中設(shè)置默認(rèn)參數(shù)和客戶端參數(shù)
# config.php return array( 'my_service' => array( 'server_addr' => '192.168.56.101:8080', 'service' => 'MyService', 'protocol' => 'nami', 'timeout' => '2000', # 默認(rèn)超時時間 'request_timeout' => '2000', # 請求超時時間 'charset' => 'utf-8', 'compress_type' => 'snappy', # 壓縮算法 'retry' => 2, # 失敗重試次數(shù) 'is_async' => false, # 同步調(diào)用 'is_long' => false, # 短連接 'balancer' => array( 'type' => 'random', # 負(fù)載均衡算法 'option' => array( 'connect_timeout' => 50, # 連接超時時間 'recv_timeout' => 100, # 接收超時時間 ), ), ), ); <br> // 客戶端 parameters.php 示例 return array( 'my_service' => array( 'timeout' => '5000', # 超時時間, 客戶端調(diào)用優(yōu)先 'retry' => 3, # 失敗重試次數(shù), 客戶端調(diào)用優(yōu)先 'request_timeout' => '10000', # 請求超時時間, 客戶端調(diào)用優(yōu)先 'is_async' => false, # 同步調(diào)用, 客戶端調(diào)用優(yōu)先 'is_long' => false, # 長連接, 客戶端調(diào)用優(yōu)先 ), );
我們通過一個config.php文件來設(shè)置缺省的參數(shù)和$php_ral_config_path數(shù)組里的parameters.php文件來設(shè)置客戶端自定義的覆蓋參數(shù)。
(2)在業(yè)務(wù)代碼中調(diào)用接口
// 調(diào)用 $client = ral('my_service'); $result = $client->get('user info', array('id' =>'123456'));
上面這段代碼中,我們通過ral('my_service')來獲取service的實(shí)例對象,然后調(diào)用get方法來獲取'user info'。
3. RAL參數(shù)詳解
通過上面的兩個例子,我們可以看到php ral的參數(shù)設(shè)置有哪些項(xiàng)。下面就逐一的來詳細(xì)講解下。
(1)server_addr
如果我們的業(yè)務(wù)代碼需要調(diào)用一些遠(yuǎn)程的服務(wù),則必須設(shè)置server_addr參數(shù)。在設(shè)置時,我們可以使用分號分隔符鏈接多個遠(yuǎn)程服務(wù)器地址。
(2)service
RPC調(diào)用需要指定服務(wù)名字,而這個服務(wù)名字是由服務(wù)的提供者和使用者共同命名的。我們可以在config.php文件中設(shè)定service的名字。
(3)protocol
在RPC調(diào)用時,我們需要指定使用哪一種協(xié)議。如nami等。
(4)timeout
網(wǎng)絡(luò)IO的超時時間。
(5)request_timeout
RPC請求的超時時間。
(6)charset
RPC數(shù)據(jù)的字符編碼。
(7)compress_type
數(shù)據(jù)壓縮方式。
(8)retry
RPC請求的重試次數(shù)。
(9)is_async
是否異步調(diào)用。
(10)is_long
是否長連接。
(11)balancer
負(fù)載均衡算法。