DUBBO是一個分佈式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,是阿里巴巴SOA服務化治理方案的核心框架,天天爲2,000+個服務提供3,000,000,000+次訪問量支持,並被普遍應用於阿里巴巴集團的各成員站點。
能夠看出在阿里內部普遍應用,相似的還有Spring Cloud。html
準備兩虛機,我這裏用了CentOS7.2,加上本機可組成多提供者和消費者(固然一個虛機和不用虛機也能夠)
我準備的兩臺IP爲:192.168.124.129(用於 dubbo-admin) 192.168.124.131(用於 zookeeper 註冊中心)git
在其中一臺虛機(192.168.124.131)中安裝zookeeper,我這裏安裝的是zookeeper-3.4.9github
下載後上傳到虛機任意目錄後解壓,我上傳到了 /usr/local 中文件夾名 zookeeper 後啓動web
/usr/local/zookeeper/bin/zkServer.sh start
[root@localhost ~]# /usr/local/zookeeper/bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
在另外一臺虛機(192.168.124.129)中部署dubbo-amdin 若是用的是duboo-admin 2.5.4的話是不能用jdk1.8,能夠從github下載源碼編譯,最新版是支持的
部署很簡單,
用編譯好的直接替換 Tomcat 下webapps/ROOT中文件,打開WEB-INF/dubbo.properties並進行以下修改spring
dubbo.registry.address=zookeeper://192.168.124.131:2181 註冊中心地址 dubbo.admin.root.password=root --管理員密碼 dubbo.admin.guest.password=guest --用戶密碼
打開 192.168.124.129:8080 出現登陸界面以下:json
用root帳號登陸界面以下:spring-mvc
登陸成功後看到以下界面,提供者和消費者都尚未,接下來的任務是註冊提供者服務器
先建項目:mvc
最格結構以下:app
提供者配置文件applicationProvider.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 具體的實現bean --> <bean id="demoService" class="io.kuaibao.provider.service.impl.UserServiceImpl" /> <!-- 提供方應用信息,用於計算依賴關係 --> <dubbo:application name="dubbo_provider" /> <!-- 使用zookeeper註冊中心暴露服務地址 --> <dubbo:registry address="zookeeper://192.168.124.131:2181" /> <!-- 用dubbo協議在20880端口暴露服務 --> <dubbo:protocol name="dubbo" port="20881" /> <!-- 聲明須要暴露的服務接口 --> <dubbo:service interface="io.kuaibao.provider.service.UserService" ref="demoService" /> </beans>
消費者配置文件applicationConsumer.xml
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方同樣 --> <dubbo:application name="dubbo_consumer" /> <!-- 使用multicast廣播註冊中心暴露發現服務地址 --> <dubbo:registry protocol="zookeeper" address="zookeeper://192.168.124.131:2181" /> <!-- 生成遠程服務代理,能夠和本地bean同樣使用demoService --> <dubbo:reference id="demoService" interface="io.kuaibao.provider.service.UserService" check="false" /> </beans>
MVC配置 spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 自動掃描 @Controller--> <context:component-scan base-package="io.kuaibao"/> <!--避免IE執行AJAX時,返回JSON出現下載文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 啓動SpringMVC的註解功能,完成請求和註解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter"/> <!-- JSON轉換器 --> </list> </property> </bean> <!-- 定義跳轉的文件的先後綴 ,視圖模式配置 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp"/> </bean> <!-- 文件上傳配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默認編碼 --> <property name="defaultEncoding" value="UTF-8"/> <!-- 上傳文件大小限制爲31M,31*1024*1024 --> <property name="maxUploadSize" value="32505856"/> <!-- 內存中的最大值 --> <property name="maxInMemorySize" value="4096"/> </bean> <!-- 處理請求時返回json字符串的中文亂碼問題 --> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> </beans>
運行提供者, 再看Dubbo Admin中提供者界面,已經註冊成功
運得消費者後再看Dubbo Admin中消費者界面,已註冊成功
打包提供者和消費者後發佈到 129服務器,後運行
在Dubbo Admin 中看到提供者和消費者都是兩個
增長負載,設置爲輪詢
把本地代碼修改返回加上 本地 兩個字後,咱們刷新消費者能夠看到,有這兩個字和沒有信息交替出現,證實咱們的負載成功了
相關代碼放到了Github中 地址:https://github.com/kuaibao/kuaibao-dubbo
只是最簡單的實現,若有好的建議請幫忙改進,謝謝!