2010-10-04 47 views
2

我正在研究一個解決方案,可以將大型數據庫中的某些數據提供給遠程網站。我的第一個想法是簡單地製作一些soap web服務來從數據庫中獲取某些數據。這可能在短短行完成,例如像這樣,與Zend_Soap_Server的用戶:PHP&SOAP什麼是消息代理?

class MyClass 
{ 
    public function getlastname($id) 
    { 
     $dbh = new PDO("oci:dbname=bigdb", "theuser", "thepass"); 

     $stmt = $dbh->prepare("select lastname from person where id = :id"); 

     if ($stmt->execute(array(':id',$id))) 
     { 
     $row = $stmt->fetch(); 
     return $row['lastname']; 
     } 
    } 
} 

$server = new Zend_Soap_Server(null, $options); 
$server->setClass('MyClass'); 
$server->setObject(new MyClass()); 

$server->handle(); 

現在有人告訴我,也看看消息代理/隊列。我一直在看一些像apache activeMQ,stomp和zend_queue這樣的軟件,但是我沒有真正清楚它們應該用於什麼,以及在這個項目中它們會有用。

我明白我的實現可能會有一些缺點,比如當數據庫沒有快速響應時數據庫緩慢,當數據庫有大量來自網站的請求時數據庫負載過重,消息代理能夠防止這種併發症?

回答

1

消息代理的作用是檢查請求並將其分派到正確的服務或從緩存返回響應。

如果您期待大流量,您可能應該考慮使用消息代理。

問候, 阿林

+0

是信息經紀人也有用像SOAP調用我所描述的情況嗎?在這種情況下,發件人(網站)期待立即回答。 – Erikl 2010-10-05 08:54:56

+0

我不認爲它與同步需要響應的事實有任何關係。經紀人只會從您的服務中獲取迴應並將其發送給客戶。如果緩存是可能的,你可以在代理中實現,也可以添加IP過濾,輸入驗證,輸出過濾器或任何你喜歡的。這是您如何設計應用程序的問題。就我個人而言,我會使用經紀人。 – 2010-10-05 09:14:28

+0

謝謝Alin,我認爲你是對的。 – Erikl 2010-10-05 12:03:04