dubbo 作為一項分布式服務(wù)調(diào)度框架,可以將系統(tǒng)的服務(wù)組件化,將服務(wù)單獨抽取出來。提高系統(tǒng)的性能,當(dāng)然,這個也僅限于分布式的服務(wù)當(dāng)中。dubbo的架構(gòu)圖如下:
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的贛縣網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
dubbo的特性:
1 提供對多種基于長連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請求-響應(yīng)”模式的信息交換方式。
2 提供基于接口方法的透明遠(yuǎn)程過程調(diào)用,包括多協(xié)議支持,以及軟負(fù)載均衡,失敗容錯,地址路由,動態(tài)配置等集群支持。
3 基于注冊中心目錄服務(wù),使服務(wù)消費方能動態(tài)的查×××提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機器。
dubbo 可以做什么:
1 透明化的遠(yuǎn)程方法調(diào)用(就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,只需簡單配置,沒有任何API侵入。)
2 軟負(fù)載均衡及容錯機制(可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本,減少單點。)
3 服務(wù)自動注冊與發(fā)現(xiàn)(不再需要寫死服務(wù)提供方地址,注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑添加或刪除服務(wù)提供者。)
dubbo 應(yīng)用場景
1.RPC分布式服務(wù)
當(dāng)網(wǎng)站變大后,不可避免的需要拆分應(yīng)用進(jìn)行服務(wù)化,以提高開發(fā)效率,調(diào)優(yōu)性能,節(jié)省關(guān)鍵競爭資源等。
比如:為了適用不斷變化的市場需求,以及多個垂直應(yīng)用之間數(shù)據(jù)交互方便,我們把公共的業(yè)務(wù)抽取出來作為獨立的模塊,為其他的應(yīng)用提供服務(wù),系統(tǒng)逐漸依賴于抽象和rpc遠(yuǎn)程服務(wù)調(diào)用。
2.配置管理
當(dāng)服務(wù)越來越多時,服務(wù)的URL地址信息就會爆炸式增長,配置管理變得非常困難,F(xiàn)5硬件負(fù)載均衡器的單點壓力也越來越大。
3.服務(wù)依賴
當(dāng)進(jìn)一步發(fā)展,服務(wù)間依賴關(guān)系變得錯蹤復(fù)雜,甚至分不清哪個應(yīng)用要在哪個應(yīng)用之前啟動,架構(gòu)師都不能完整的描述應(yīng)用的架構(gòu)關(guān)系。
4.服務(wù)擴容
接著,服務(wù)的調(diào)用量越來越大,服務(wù)的容量問題就暴露出來,這個服務(wù)需要多少機器支撐?什么時候該加機器?等等……
dubbo官方推薦利用zookeeper來當(dāng)做服務(wù)注冊中心,至于zookeeper的特性及應(yīng)用場景在另外一篇文章中也有提到,這次利用zookeeper的windows版本進(jìn)行dubbo的入門學(xué)習(xí)。zookeeper的windows版本安裝比較簡單,主要可以分為三步。
1、下載zookeeper安裝包進(jìn)行解壓。
2、到解壓目錄的conf下面復(fù)制zoo_sample.cfg為zoo.cfg。修改zoo.cfg包括端口、數(shù)據(jù)路徑(dataDir)、數(shù)據(jù)日志路徑(dataLogDir)
3、運行bin下面的zkServer.cmd即可。
dubbo-helloworld 工程
縮寫的dubbo-helloworld工程結(jié)構(gòu)如下圖:
在api工程里面定義接口
package org.hzg.dubbo.api.service;
/**
* Created by hzg on 2019/3/13
*/
public interface DubboHelloworldApi {
//接口
public void helloWorldInterface();
}
在service工程里面實現(xiàn)接口
package org.hzg.dubbo.service.service.impl;
import org.hzg.dubbo.api.service.DubboHelloworldApi;
import org.springframework.stereotype.Service;
/**
* Created by hzg on 2019/3/15
*/
@Service("helloWorldImpl")
public class DubboHelloWorldApiImpl implements DubboHelloworldApi {
@Override
public void helloWorldInterface() {
System.out.println("調(diào)用成功。。。。。。。。。。。。。。。。。。。。。。。。。。。。");
}
}
在service工程里面進(jìn)行zookeeper相關(guān)配置
<!-- 為當(dāng)前服務(wù)提供者取個名字,并且提供給注冊中心 -->
<dubbo:application name="dubbo-helloworld-service"></dubbo:application>
<!-- 注冊中心的配置,使用zk暴露服務(wù) -->
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>
<!-- 定義暴露服務(wù)的端口號 -->
<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
<!-- 暴露具體的服務(wù)接口 -->
<dubbo:service retries="3" interface="org.hzg.dubbo.api.service.DubboHelloworldApi"
ref="helloWorldImpl"></dubbo:service>
在web工程里面進(jìn)行zookeeper配置
<!-- 為當(dāng)前服務(wù)提供者取個名字,并且提供給注冊中心 -->
<dubbo:application name="dubbo-helloworld-web"></dubbo:application>
<!-- 注冊中心的配置,用于消費者的監(jiān)聽 -->
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>
<!-- 監(jiān)聽服務(wù),通過注冊中心去進(jìn)行查找,查找到后進(jìn)行服務(wù)調(diào)用 -->
<dubbo:reference id="dubboHelloworldApi" interface="org.hzg.dubbo.api.service.DubboHelloworldApi"
retries="3" check="false" init="true"></dubbo:reference>
web工程里面的controller
package org.hzg.dubbo.web.controller;
import org.hzg.dubbo.web.service.HelloWorldService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Created by hzg on 2019/3/15
*/
@Controller
public class HelloWorldController {
@Autowired
private HelloWorldService helloWorldService;
@RequestMapping("/index")
public String index() {
return "index";
}
@RequestMapping("/hello")
@ResponseBody
public String sayHello() {
return "hello";
}
@RequestMapping("/helloDubbo")
@ResponseBody
public String sayHelloDubbo() {
helloWorldService.dubboHelloWorld();
return "this is the first step";
}
}
web工程里面的service
package org.hzg.dubbo.web.service;
import org.hzg.dubbo.api.service.DubboHelloworldApi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by hzg on 2019/3/15
*/
@Service
public class HelloWorldService {
@Autowired
private DubboHelloworldApi dubboHelloworldApi; //這里就是api里面定義的接口
public void dubboHelloWorld() {
dubboHelloworldApi.helloWorldInterface();
}
}
以上都是一些主要的配置,至于pom文件,tomcat,spring等配置,這里不再贅述,接下來,看效果:
1、啟動zookeeper
2、啟動service服務(wù)(可以看到啟動成功和一些注冊成功的服務(wù)信息)
3、啟動消費者,即web工程
訪問:127.0.0.1:8080/helloDubbo
可以看到服務(wù)提供方的日志打印
分享標(biāo)題:dubbo入門
文章地址:http://jinyejixie.com/article44/jjhoee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、靜態(tài)網(wǎng)站、搜索引擎優(yōu)化、品牌網(wǎng)站設(shè)計、電子商務(wù)、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)