Dubbo實現RPC呼叫使用入門
-
使用Dubbo進行遠端呼叫實現服務互動,它支援多種協議,如Hessian、HTTP、RMI、Memcached、Redis、Thrift等等。由於Dubbo將這些協議的實現進行了封裝了,無論是服務端(開發服務)還是客戶端(呼叫服務),都不需要關心協議的細節,只需要在配置中指定使用的協議即可,從而保證了服務提供方與服務消費方之間的透明。
另外,如果我們使用Dubbo的服務註冊中心元件,這樣服務提供方將服務釋出到註冊的中心,只是將服務的名稱暴露給外部,而服務消費方只需要知道註冊中心和服務提供方提供的服務名稱,就能夠透明地呼叫服務,後面我們會看到具體提供服務和消費服務的配置內容,使得雙方之間互動的透明化。示例場景
我們給出一個示例的應用場景:
服務方提供一個搜尋服務,對服務方來說,它基於SolrCloud構建了搜尋服務,包含兩個叢集,ZooKeeper叢集和Solr叢集,然後在前端通過Nginx來進行反向代理,達到負載均衡的目的。
服務消費方就是呼叫服務進行查詢,給出查詢條件(滿足Solr的REST-like介面)。應用設計
基於上面的示例場景,我們打算使用ZooKeeper叢集作為服務註冊中心。註冊中心會暴露給服務提供方和服務消費方,所以註冊服務的時候,服務先提供方只需要提供Nginx的地址給註冊中心,但是註冊中心並不會把這個地址暴露給服務消費方,如圖所示:
我們先定義一下,通訊雙方需要使用的介面,如下所示:01
package
org.shirdrn.platform.dubbo.service.rpc.api;
02
03
public
interface
SolrSearchService {
04
05
String search(String collection, String q, ResponseType type,
int
start,
int
rows);
06
07
public
enum
ResponseType {
08
JSON,
09
XML
10
}
11
}
基於上圖中的設計,下面我們分別詳細說明Provider和Consumer的設計及實現。
- Provider服務設計
Provider所釋出的服務元件,包含了一個SolrCloud叢集,在SolrCloud叢集前端又加了一個反向代理層,使用Nginx來均衡負載。Provider的搜尋服務系統,設計如下圖所示:
上圖中,實際Nginx中將請求直接轉發內部的Web Servers上,在這個過程中,使用ZooKeeper來進行協調:從多個分片(Shard)伺服器上並行搜尋,最後合併結果。我們看一下Nginx配置的內容片段:01
user nginx;
02
worker_processes 4;
03
04
error_log /var/log/nginx/error.log warn;
05
pid /var/run/nginx.pid;
06
07
08
events {
09
worker_connections 1024;
10
}
11
12
13
http {
14
include /etc/nginx/mime.types;
15
default_type application/octet-stream;
16
17
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
18
'$status $body_bytes_sent "$http_referer" '
19
'"$http_user_agent" "$http_x_forwarded_for"';
20
21
access_log /var/log/nginx/access.log main;
22
23
sendfile on;
24
#tcp_nopush on;
25
26
keepalive_timeout 65;
27
28
#gzip on;
29
30
upstream master {
31
server slave1:8888 weight=1;
32
server slave4:8888 weight=1;
33
server slave6:8888 weight=1;
34
}
35
36
server {
37
listen 80;
38
server_name master;
39
location / {
40
root /usr/share/nginx/html/solr-cloud;
41
index index.html index.htm;
42
proxy_passhttp://master;
43
include /home/hadoop/servers/nginx/conf/proxy.conf;
44
}
45
}
46
}
執行說明
首先保證服務註冊中心的ZooKeeper叢集正常執行,然後啟動SolrSearchServer,啟動的時候直接將服務註冊到ZooKeeper叢集儲存中,可以通過ZooKeeper的客戶端指令碼來檢視註冊的服務資料。一切正常以後,可以啟動執行客戶端SearchConsumer,呼叫SolrSearchServer所實現的遠端搜尋服務。
- 核心技術:Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx
1.專案核心程式碼結構截圖 專案模組依賴特別提醒:開發人員在開發的時候可以將自己的業務REST服務化或者Dubbo服務化
2.專案依賴介紹
2.1後臺管理系統、Rest服務系統、Scheculer定時排程系統依賴如下圖:
2.2Dubbo獨立服務專案依賴如下圖:
3.專案功能部分截圖:
zookeeper、dubbo服務啟動
dubbo管控臺 REST服務平臺
轉載於:https://my.oschina.net/grthrj/blog/729462