Dubbo作為分布式服務(wù)治理框架在企業(yè)級(jí)應(yīng)用開發(fā)中運(yùn)用的特別廣泛独令,它打破了傳統(tǒng)垂直項(xiàng)目架構(gòu)的開發(fā)模式,將各個(gè)模塊更細(xì)粒度的切分部署,在解耦的同時(shí)也提高了代碼的重用性丧肴。
2018-01-09_111925.png
部分代碼,
service-product工程
TestTbServiceImpl.java
@Service("testTbService")
@Transactional
public class TestTbServiceImpl implements TestTbService {
@Autowired
private TestTbDao testTbDao;
public void insertTestTb(TestTb testTb){
testTbDao.insertTestTb(testTb);
}
}
dubbo-provider.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- Dubbo提供方 -->
<!-- 1:名稱 計(jì)算機(jī) 區(qū)別 唯一 -->
<dubbo:application name="babasport-service-product"/>
<!-- 2:設(shè)置注冊(cè)中心 地址 zookeeper在哪里 redis ...(集群的zk執(zhí)行以“胧后,”相隔芋浮,寫入ip即可) -->
<dubbo:registry address="192.168.90.201:2181" protocol="zookeeper"/>
<!-- 3:dubbo://192.168.39.80:20880 默認(rèn) 設(shè)置提供服務(wù)的端口號(hào) -->
<dubbo:protocol port="20881" name="dubbo"/>
<!-- 4: 暴露實(shí)現(xiàn)類-->
<dubbo:service interface="cn.babasport.core.service.TestTbService" ref="testTbService"/>
<!-- 5:服務(wù)端的全局配置 -->
<dubbo:provider></dubbo:provider>
</beans>
區(qū)別zk啟動(dòng),并發(fā)布服務(wù)
2018-01-09_113627.png
看日志很明顯壳快,服務(wù)接口以及在zk中注冊(cè)成功纸巷,我們可以去dubbo的控制臺(tái)確認(rèn)
2018-01-09_113808.png
console工程調(diào)用
controller.java
@Controller
public class CenterController {
@Autowired
private TestTbService testTbService;//注意這里注入的是接口,interface工程的
//入口
/**
* ModelAndView : 跳轉(zhuǎn)視圖+數(shù)據(jù) 不用
* void : 異步時(shí) ajax
* String : 跳轉(zhuǎn)視圖 + Model
*/
@RequestMapping(value = "/test/index.do")
public String index(Model model){
TestTb testTb = new TestTb();
testTb.setName("zhangsan");
testTbService.insertTestTb(testTb);
System.out.println("-----------");
return "index";
}
}
dubbo-consumer.xml調(diào)用配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- Dubbo消費(fèi)方 -->
<!-- 1:名稱 計(jì)算機(jī) 區(qū)別 唯一 -->
<dubbo:application name="babasport-console"/>
<!-- 2:設(shè)置注冊(cè)中心 地址 zookeeper在哪里 redis ...(集群的zk執(zhí)行以“眶痰,”相隔瘤旨,寫入ip即可) -->
<dubbo:registry address="192.168.90.201:2181" protocol="zookeeper"/>
<!-- 3: 調(diào)用此接口對(duì)應(yīng)的實(shí)現(xiàn)類-->
<dubbo:reference interface="cn.babasport.core.service.TestTbService" id="testTbService"/>
<!-- dubbo全局設(shè)置超時(shí)時(shí)間 -->
<dubbo:consumer timeout="600000" check="false"></dubbo:consumer>
</beans>
當(dāng)然 在springMVC的配置中也少不了對(duì)dubbo消費(fèi)配置的讀取
springMVC.xml配置
//引入即可
<import resource="dubbo-consumer.xml"/>
以上要注意的是在dubbo服務(wù)暴露接口的配置中ref屬性的值要與service實(shí)現(xiàn)類在注入service中的值相同@Service("testTbService"),當(dāng)然凛驮,這里用的是spring中的service注解裆站,而非dubbo中的service注解
<dubbo:service interface="cn.babasport.core.service.TestTbService" ref="testTbService"/>
dubbo優(yōu)化
我們知道,dubbo需要注冊(cè)中心,在開發(fā)過程中宏胯,我們完全可以使用dubbo直連的方式避開注冊(cè)中心羽嫡,這樣就不用去啟用ZK了,另外去check也可以提高dubbo的效率
優(yōu)化1肩袍,直連
//即將服務(wù)提高和服務(wù)消費(fèi)方的注冊(cè)中心設(shè)為“N/A”即可
<dubbo:registry address="N/A"/>
優(yōu)化2杭棵,停止檢查
<!-- dubbo全局設(shè)置超時(shí)時(shí)間 -->
<dubbo:consumer timeout="600000" check="false"></dubbo:consumer>