① java bbo配置文件中的$是哪個目錄
是找不到schema文件,解決方法如下:
1、下載一個bbo.xsd文件;
2、在windows->preferrence->xml->xmlcatalogadd->catalog entry ->file system 選擇剛剛下載的文件路徑;
3、修改key值和配置文件的http://code.alibabatech.com/schema/bbo/bbo.xsd 相同保存。
4、在xml文件右鍵validate就可以k解決了。
② cmd命令bbo 消費者 怎麼調用 提供者
現在很流行的Dubbo很多朋友都聽說過吧,最近我也在看這方面的東西,分享先我的心得筆記。
先說說我們團隊要做的項目框架,很簡單重在實現基於zookeeper的bbo注冊。
框架:springmvc+spring+zookeeper+bbo
項目分三層,model存放數據,view頁面展示、controller下面具體邏輯實現。通過bbo消費方和供應方注冊,供應方給消費方暴露介面,供消費方調用。
工程部署需要配置文件有:
applicationContext-bbo.xml
{--
<--
消費方應用名,用於計算依賴關系,不是匹配條件,不要與提供方一樣
-->
<--
使用zookeeper注冊中心暴露服務地址
-->
<--
生成遠程服務代理,可以像使用本地bean一樣使用demoService
-->
<bbo:reference
id="demoService"
interface="com.unj.bbotest.provider.DemoService"
/>
--}
bbo.properties
{--
<--基於ZooKeeper的Dubbo注冊中心直接部署tomcat,修改WEB-INF下文件-->
bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.admin.root.password=root
bbo.admin.guest.password=guest
--}
zoo_sample.cfg
{--
zookeeper/conf/下,修改zoo_sample.cfg為zoo.cfg,啟動bin/下zkServer.cmd
--}
因為引入bbo,摒棄了原有Web
Service項目的wdls暴露,由於項目依賴關系嚴重,項目使用maven構建,通過Maven
pom.xml三維坐標引入jar包,調用bbo暴露介面開發。
性能測試工具:LoadRunner、jmeter
介面測試工具:LoadRunner、jmeter、soapUI、Spotlight
安全測試工具:NStalker-Web、AppScan、TamperIESetup
自動化工具
:BadboyInstaller、QTP
/**
*
@author
wonter
*
<b>描述:</b>
一天學一個模式
更新中,請關注我的博客!
*
<b>博客:</b>
http://www.cnblogs.com/javame
*
<b>郵件:</b>
[email protected]
③ 調用bbo服務時事務配置在哪
bbo實現了分布式遠程調用框架,多運行節點既能提高可靠性,又能提升負載能力。bbo配置主要有注冊中心(推薦zookeeper或redis)、提供者provider、消費者consumer,注冊中心是第三方實現,所以主要配置好服務提供者和消費者就可以了。實際上服務介面和實現都是需要我們自己設計和實現的,bbo做的事情就是將服務實現發布到注冊中心,然後消費者從注冊中心訂閱服務介面,之後對介面的調用就由bbo調度提供者去執行並返回結果。以下配置都有源碼,見右側「免費資源」。
提供者provider的配置:提供者是獨立運行的節點,可以多實例運行,將服務注冊到注冊中心
必須要有application name,注冊中心配置zookeeper,協議bbo,超時6秒失敗不重試,提供者載入repository和service層bean,然後發布介面service。
<bbo:application name="ite-provider" />
<bbo:registry address="zookeeper://127.0.0.1:2181"/>
<bbo:protocol name="bbo" port="20880" />
<bbo:provider timeout="6000" retries="0"/>
<import resource="classpath:cache.xml"/>
<import resource="classpath:ite-repository.xml"/>
<import resource="classpath:ite-service.xml"/>
<import resource="classpath:ite-provider.xml"/>
ite-provider.xml,ref引用的bean是ite-service.xml已經定義好的介面實現,bbo:service就是把介面實現發布到注冊中心
<bbo:service ref="codeListService" interface="com.itecheast.ite.domain.service.CodeListService" />
<bbo:service ref="idService" interface="com.itecheast.ite.domain.service.IdService" />
<bbo:service ref="passwordService" interface="com.itecheast.ite.domain.service.PasswordService" />
<bbo:service ref="rolePermissionService" interface="com.itecheast.ite.domain.service.RolePermissionService" />
provider是可以獨立運行的,bbo.jar裡面有assembly目錄,運行mvn assembly:directory就可以生成能直接運行的provider目錄
assembly.xml內容,可以切換dir或tar.gz兩種格式
<assembly>
<id>assembly</id>
<formats>
<!-- <format>tar.gz</format> -->
<format>dir</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/assembly/bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>src/test/resources</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
bbo.properties,運行start.bat或start.sh時,將從屬性文件讀取bbo配置信息,provider節點可以多處復制並運行。
bbo.container=log4j,spring
bbo.application.name=ite-provider
bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.monitor.protocol=registry
bbo.protocol.name=bbo
bbo.protocol.port=20880
bbo.spring.config=provider.xml
bbo.log4j.file=logs/ite-provider.log
bbo.log4j.level=WARN
消費者consumer的配置,使用bbo:reference訂閱注冊中心裡的服務即可,然後就可以@Autowired注入服務介面了。
<bbo:application name="ite-consumer" />
<bbo:registry address="zookeeper://127.0.0.1:2181"/>
<bbo:reference id="codeListService" interface="com.itecheast.ite.domain.service.CodeListService" />
<bbo:reference id="idService" interface="com.itecheast.ite.domain.service.IdService" />
<bbo:reference id="passwordService" interface="com.itecheast.ite.domain.service.PasswordService" />
<bbo:reference id="rolePermissionService" interface="com.itecheast.ite.domain.service.RolePermissionService" />
如果前端項目是一個消費者,就可以在web.xml里直接載入consumer.xml訂閱服務了。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:consumer.xml,classpath:cache.xml,classpath:shiro.xml,classpath:front.xml</param-value>
</context-param>
實際上本地調試開發時,可以不必啟用分布式配置,只需要更改web.xml即可,所有的服務都已經是配置好了的。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:ite-repository.xml,classpath:ite-service.xml,classpath:cache.xml,classpath:shiro.xml,classpath:front.xml</param-value>
</context-param>
zookeeper的配置很簡單,
wget http://tool.xlongwei.com/softwares/zookeeper-3.4.6.tar.gz
tar -zxvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg #配置zookeeper參數
單機配置(集群配置待研究)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/bbo/zookeeper-3.3.3/data
clientPort=2181
運行或停止zookeeper
sh zkServer.sh start | stop
④ bbo客戶端和引用的服務端要配置在一個dobbu.xml文件中嗎
直連加不發布服務DUBBO的配置屬性裡面對消費端提供了不從注冊中心發現服務的機制,直接配置遠程介面的地址,這樣可以保證消費端連接到制定的環境介面。這樣消費端是解決了問題,但是服務提供端呢?如上圖的B1它即是消費端也是服務提供端,它提供A1所依賴的介面,那麼如果B1將它的服務發布到注冊中心裏面(這里需要提醒,STABLE環境機制裡面所有子環境公用一個注冊中心),那麼勢必會導致stable環境裡面的A會發現B1提供的服務?勢必會導致stable環境的不穩定(stable環境的機制是stable環境只能進不能出,就是不能調用外部其他子環境的服務)?所以B1不能發布服務到注冊中心,bbo也提供了相關的配置屬性來支持這一點。下面我例舉出通過哪些配置可以實現這種方案:服務消費端:DUBBO在消費端提供了一個url的屬性來指定某個服務端的地址默認的方式是從注冊中心發現介面為com.alibaba.bbo.demo.HelloWorldService的服務,但是如果需要直連,可以在bbo.properties下面配置bbo.reference.helloWorldService.url=bbo://ip:port/com.alibaba.bbo.demo.HelloWorldService可以通過配置bbo.reference.url=bbo://ip:port/來讓某個消費者系統的服務都指向制定的伺服器地址(關於配置信息可以參考《DUBBO配置規則詳解》)
⑤ 怎麼把mybatis的mapper介面通過bbo暴漏
項目分三層,model存放數據,view頁面展示、controller下面具體邏輯實現。通過bbo消費方和供應方注冊,供應方給消費方暴露介面,供消費方調用。
工程部署需要配置文件有:
applicationContext-bbo.xml
{--
<-- 消費方應用名,用於計算依賴關系,不是匹配條件,不要與提供方一樣 -->
<-- 使用zookeeper注冊中心暴露服務地址 -->
<-- 生成遠程服務代理,可以像使用本地bean一樣使用demoService -->
<bbo:reference id="demoService" interface="com.unj.bbotest.provider.DemoService" />
--}
bbo.properties
{--
<--基於ZooKeeper的Dubbo注冊中心直接部署tomcat,修改WEB-INF下文件-->
bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.admin.root.password=root
bbo.admin.guest.password=guest
--}
zoo_sample.cfg
{--
zookeeper/conf/下,修改zoo_sample.cfg為zoo.cfg,啟動bin/下zkServer.cmd
--}
因為引入bbo,摒棄了原有Web Service項目的wdls暴露,由於項目依賴關系嚴重,項目使用maven構建,通過Maven pom.xml三維坐標引入jar包,調用bbo暴露介面開發。
性能測試工具:LoadRunner、jmeter
介面測試工具:LoadRunner、jmeter、soapUI、Spotlight
安全測試工具:NStalker-Web、AppScan、TamperIESetup
自動化工具 :BadboyInstaller、QTP
/**
* @author wonter
* <b>描述:</b> 一天學一個模式 更新中,請關注我的博客!<br>
* <b>博客:</b> http://www.cnblogs.com/javame <br>
* <b>郵件:</b> [email protected] <br>
敏捷測試團隊,不再僅僅是在coding之後。而是和研發人員貫穿在需求分析、規格說明、自動化單元測試、自動化驗收測試、靜態代碼分析、技術債等環節中。所以敏捷項目必定在將來效率的趨勢下成為主流。
1. 使用阿里巴巴Druid連接池(高效、功能強大、可擴展性好的資料庫連接池、監控資料庫訪問性能、支持Common-Logging、Log4j和JdkLog,監控資料庫訪問)
2. 提供高並發JMS消息處理機制
3. 所有功能模塊化、所有模塊服務化、所有服務原子化的方式,提供可拓展的服務模型,使程序穩定運行,永不宕機
4. 提供Wink Rest、Webservice服務,故可作為獨立服務平台部署
框架整合:
Springmvc + Mybatis + Shiro(許可權) + REST(服務) + WebService(服務) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定時調度) + Bootstrap Html5(支持PC、IOS、Android)
框架簡介:
項目Maven構建,真實大型互聯網架構,做到高並發,大數據處理,整個項目使用定製化服務思想,提供模塊化、服務化、原子化的方案,將功能模塊進行拆分,可以公用到所有的項目中。架構採用分布式部署架構,所有模塊進行拆分,使項目做到絕對解耦,穩定壓倒一切~~
⑥ 如何更好地學習bbo源代碼
1、Dubbo與Spring的整合 Dubbo在使用上可以做到非常簡單,不管是Provider還是Consumer都可以通過Spring的配置文件進行配置,配置完之後,就可以像使用 spring bean一樣進行服務暴露和調用了,完全看不到bbo api的存在。這是因為bbo使用了spring提供的可擴展Schema自定義配置支持。在spring配置文件中,可以像、這樣進行配置。 META-INF下的spring.handlers文件中指定了bbo的xml解析類:DubboNamespaceHandler。像前面的被解 析成ServiceConfig,被解析成ReferenceConfig等等。 2、jdk spi擴展 由於Dubbo是開源框架,必須要提供很多的可擴展點。Dubbo是通過擴展jdk spi機制來實現可擴展的。具體來說,就是在META-INF目錄下,放置文件名為介面全稱,文件中為key、value鍵值對,value為具體實現類 的全類名,key為標志值。由於bbo使用了url匯流排的設計,即很多參數通過URL對象來傳遞,在實際中,具體要用到哪個值,可以通過url中的參 數值來指定。 Dubbo對spi的擴展是通過ExtensionLoader來實現的,查看ExtensionLoader的源碼,可以看到Dubbo對jdk spi做了三個方面的擴展:
(1)jdk spi僅僅通過介面類名獲取所有實現,而ExtensionLoader則通過介面類名和key值獲取一個實現;
(2)Adaptive實現,就是生成一個代理類,這樣就可以根據實際調用時的一些參數動態決定要調用的類了。
(3)自動包裝實現,這種實現的類一般是自動激活的,常用於包裝類,比如Protocol的兩個實現類:ProtocolFilterWrapper、ProtocolListenerWrapper。 3、url匯流排設計 Dubbo為了使得各層解耦,採用了url匯流排的設計。我們通常的設計會把層與層之間的交互參數做成Model,這樣層與層之間溝通成本比較大,擴展起來也比較麻煩。因此,Dubbo把各層之間的通信都採用url的形式。比如,注冊中心啟動時,參數的url為: registry://0.0.0.0:9090?codec=registry&transporter=netty 這就表示當前是注冊中心,綁定到所有ip,埠是9090,解析器類型是registry,使用的底層網路通信框架是netty。
二、Dubbo啟動過程
Dubbo分為注冊中心、服務提供者(provider)、服務消費者(consumer)三個部分。 1、注冊中心啟動過程 注冊中心的啟動過程,主要看兩個類:RegistrySynchronizer、RegistryReceiver,兩個類的初始化方法都是start。 RegistrySynchronizer的start方法:
(1)把所有配置信息load到內存;
(2)把當前注冊中心信息保存到資料庫;
(3)啟動5個定時器。 5個定時器的功能是: (1)AutoRedirectTask,自動重定向定時器。默認1小時運行1次。如果當前注冊中心的連接數高於平均值的1.2倍,則將多出來的連接數重定向到其他注冊中心上,以達到注冊中心集群的連接數均衡。 (2)DirtyCheckTask,臟數據檢查定時器。作用是:分別檢查緩存provider、資料庫provider、緩存consumer、資料庫 consumer的數據,清除臟數據;清理不存活的provider和consumer數據;對於緩存中的存在的provider或consumer而數 據庫不存在,重新注冊和訂閱。 (3)ChangedClearTask,changes變更表的定時清理任務。作用是讀取changes表,清除過期數據。 (4)AlivedCheckTask,注冊中心存活狀態定時檢查,會定時更新registries表的expire欄位,用以判斷注冊中心的存活狀態。如果有新的注冊中心,發送同步消息,將當前所有注冊中心的地址通知到所有客戶端。 (5)ChangedCheckTask,變更檢查定時器。檢查changes表的變更,檢查類型包括:參數覆蓋變更、路由變更、服務消費者變更、權重變更、負載均衡變更。
⑦ 怎麼設置bbo的xml配置讓maven載入進去
現在很流行的Dubbo很多朋友都聽說過吧,最近我也在看這方面的東西,分享先我的心得筆記。
先說說我們團隊要做的項目框架,很簡單重在實現基於zookeeper的bbo注冊。
框架:springmvc+spring+zookeeper+bbo
項目分三層,model存放數據,view頁面展示、controller下面具體邏輯實現。通過bbo消費方和供應方注冊,供應方給消費方暴露介面,供消費方調用。
工程部署需要配置文件有:
applicationContext-bbo.xml
{--
<-- 消費方應用名,用於計算依賴關系,不是匹配條件,不要與提供方一樣 -->
<-- 使用zookeeper注冊中心暴露服務地址 -->
<-- 生成遠程服務代理,可以像使用本地bean一樣使用demoService -->
<bbo:reference id="demoService" interface="com.unj.bbotest.provider.DemoService" />
--}
bbo.properties
{--
<--基於ZooKeeper的Dubbo注冊中心直接部署tomcat,修改WEB-INF下文件-->
bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.admin.root.password=root
bbo.admin.guest.password=guest
--}
zoo_sample.cfg
{--
zookeeper/conf/下,修改zoo_sample.cfg為zoo.cfg,啟動bin/下zkServer.cmd
--}
因為引入bbo,摒棄了原有Web Service項目的wdls暴露,由於項目依賴關系嚴重,項目使用maven構建,通過Maven pom.xml三維坐標引入jar包,調用bbo暴露介面開發。
性能測試工具:LoadRunner、jmeter
介面測試工具:LoadRunner、jmeter、soapUI、Spotlight
安全測試工具:NStalker-Web、AppScan、TamperIESetup
自動化工具 :BadboyInstaller、QTP
/**
* @author wonter
* <b>描述:</b> 一天學一個模式 更新中,請關注我的博客!<br>
* <b>博客:</b> http://www.cnblogs.com/javame <br>
* <b>郵件:</b> [email protected] <br>
⑧ bbo 配置文件中怎麼做聲明
Dubbo預設會在啟動時檢查依賴的服務是否可用,不可用時會拋出異常,阻止Spring初始化完成,以便上線時,能及早發現問題,默認check=true。
如果你的Spring容器是懶載入的,或者通過API編程延遲引用服務,請關閉check,否則服務臨時不可用時,會拋出異常,拿到null引用,如果check=false,總是會返回引用,當服務恢復時,能自動連上。
可以通過check="false"關閉檢查,比如,測試時,有些服務不關心,或者出現了循環依賴,必須有一方先啟動。
1、關閉某個服務的啟動時檢查:(沒有提供者時報錯)
<bbo:reference interface="com.foo.BarService" check="false" />
2、關閉所有服務的啟動時檢查:(沒有提供者時報錯) 寫在定義服務消費者一方
<bbo:consumer check="false" />
3、關閉注冊中心啟動時檢查:(注冊訂閱失敗時報錯)
<bbo:registry check="false" />
⑨ 連接zookeeper時pom.xml怎麼配置
在自己主機上面安裝zookeeper,然後就可以寫代碼了,我們計劃是將介面底層跟上層相互分離;
consumer.xml:
復制代碼
<?xml version="1.0" encoding="UTF-8"?>
<beansgframework.org/schema/beans"
xmlns:xsi="httporg/20 www.cshangzj.com 01/XMLSchema-instance"
xmlns:bbo="httpbatech.com/schema/bbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http:/framework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/bbo
http://code.alibabatech.com/schema/bbo/bbo.xsd
">
<!-- 消費方應用名,用於計算依賴關系,不是匹配條件,不要與提供方一樣 -->
<bbo:application name="consumer-of-helloworld-app" />
<bbo:registry
address="ip:port"
protocol="zookeeper" />
<!-- 生成遠程服務代理,可以和本地bean一樣使用demoService -->
<bbo:reference id="demoService" interface="net.datafans.exercise.bbo.DemoService" />
</beans>
復制代碼
provider.xml
復制代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bbo="http://code.alibabatech.com/schema/bbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
a/beans/spring-beans.xsd
http:/om/schema/bbo
http://code.alibaba
<!-- 提供方應用信息,用於計算依賴關系 -->
<bbo:application name="zookeeper-registry" />
<!-- 當前應用信息配置 -->
⑩ springmvc+bbo配置問題
換個javassist包,比如javassist-3.18.2-GA.jar,一定是某些版本的包中少了相關的類導致類載入失敗