㈠ 如何通過aop攔截bbo介面
bbo的Filter在調用的什麼階段執行的
Dubbo的Filter是一個調用另一個的,最後再執行業務代碼。
在這一行調下一個Filter,那麼寫在這行代碼前面的代碼就是在業務代碼前攔截了,寫在之後的代碼就是執行完業務代碼後攔截了。
直連加不發布服務 DUBBO的配置屬性裡面對消費端提供了不從注冊中心發現服務的機制,直接配置遠程介面的地址,這樣可以保證消費端連接到制定的環境介面。
這樣消費端是解決了問題,但是服務提供端?如的B1它即是消費端也是服務提供端,它提供A1所依賴的介面,那麼如果B1將它的服務發布到注冊中心裏面(這里需要提醒,STABLE環境機制裡面所有子環境公用一個注冊中心),那麼勢必會導致stable環境裡面的A會發現B1提供的服務?勢必會導致stable環境的不穩定(stable環境的機制是stable環境只能進不能出,就是不能調用外部其他子環境的服務)?所以B1不能發布服務到注冊中心,bbo也提供了相關的配置屬性來支持這一點。
㈡ 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的配置文件寫到spring的配置文件里,如下xml文件:
<bbo:application name="anyname_provider" />
<!-- 使用zookeeper注冊中心暴露服務地址 -->
<bbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用bbo協議在20880埠暴露服務 -->
<bbo:protocol name="bbo" port="20880" />
<!-- 聲明需要暴露的服務介面 -->
<bbo:service interface="com.shxz130.provider.Provider"
ref="demoService" />
從官方文檔中,我們能看到如下:
啟動過程.png
也就是說spring啟動過程中,隨著Spring在初始化過程中,碰到bbo命名的標簽,如(<bbo:service>,<bbo:registry>)等標簽,會由DubboNamespaceHandler類處理,具體原理見鏈接Spring自定義標簽
DubboBeanDefinitionParser代碼如下:
public class DubboNamespaceHandler extends NamespaceHandlerSupport { static {
Version.checkDuplicate(DubboNamespaceHandler.class);
} public void init() {
registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));
registerBeanDefinitionParser("mole", new DubboBeanDefinitionParser(MoleConfig.class, true));
registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));
registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));
registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));
registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));
registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true));
registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));
registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false));
registerBeanDefinitionParser("annotation", new ());
}
}
遇到不同的標簽,會由不同的Parser處理,這里重點看服務發布,這行代碼:
registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));
也就是說,當Spring容器處理完<bbo:service>標簽後,會在Spring容器中生成一個ServiceBean ,服務的發布也會在ServiceBean中完成。不妨看一下ServiceBean的定義:
public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener<ContextRefreshedEvent>, BeanNameAware {
}
該Bean實現了很多介面,關於InitializingBean,DisposableBean,ApplicationContextAware,BeanNameAware,這些介面的使用介紹如下鏈接:
InitializingBean&DisposableBean
BeanNameAware& ApplicationContextAware
而在Spring初始化完成Bean的組裝,會調用InitializingBean的afterPropertiesSet方法,在Spring容器載入完成,會接收到事件ContextRefreshedEvent,調用ApplicationListener的onApplicationEvent方法。
在afterPropertiesSet中,和onApplicationEvent中,會調用export(),在export()中,會暴露bbo服務,具體區別在於是否配置了delay屬性,是否延遲暴露,如果delay不為null,或者不為-1時,會在afterPropertiesSet中調用export()暴露bbo服務,如果為null,或者為-1時,會在Spring容器初始化完成,接收到ContextRefreshedEvent事件,調用onApplicationEvent,暴露bbo服務。
部分ServiceBean的代碼如下:
在export(),暴露服務過程中,如果發現有delay屬性,則延遲delay時間,暴露服務,如果沒有,則直接暴露服務。
而在doExport()中,驗證參數,按照不同的Protocol,比如(bbo,injvm)暴露服務,在不同的zookeeper集群節點上注冊自己的服務。
作者:一滴水的堅持
鏈接:https://www.jianshu.com/p/7f3871492c71
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。
㈣ bbo main啟動為什麼wait
啟動的參數,有問題,是否傳遞了正確的命令行參數
————————————
㈤ 有用jo malone的親嗎
運行環境
Jdk-1.6.30以上版本
Tomcat-7.0.42
Duboo-2.5.3
Zookeeper-3.4.5
埠分配
序
系統/埠
http
https
shutdown
ajp
調度JMX
Dubbo
備注
1
Tomcat
8080
8443
8005
8009
原埠保留
2
bbo console
4000
4003
4005
4009
zookeeper注冊埠:2181 本地bbo埠通常是:2088x
3
bbo monitor
4010
4013
4015
4019
Dubbo監控中心安裝
1. 說明
Simple Monitor掛掉不會影響到Consumer和Provider之間的調用,所以用於生產環境不會有風險。
Simple Monitor採用磁碟存儲統計信息,請注意安裝機器的磁碟限制,如果要集群,建議用mount共享磁碟。
charts目錄必須放在jetty.directory下,否則頁面上訪問不了。
2. 安裝
wget http://code.alibabatech.com/mvn/releases/com/alibaba/bbo-monitor-simple/2.5.3/bbo-monitor-simple-2.5.3-assembly.tar.gz
tar zxvf bbo-monitor-simple-2.5.3-assembly.tar.gz
mv bbo-monitor-simple-2.5.3 /usr/local/bbo-monitor-simple-4010
3. 配置
cd /usr/local/bbo-monitor-simple-4010
vi conf/bbo.properties
bbo.container=log4j,spring,registry,jetty
bbo.application.name=simple-monitor
bbo.application.owner=
#bbo.registry.address=multicast://224.5.6.7:1234
#bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.registry.address=zookeeper://172.20.32.211:2181?backup=172.20.32.143:2181,172.20.32.143:2182
#bbo.registry.address=redis://127.0.0.1:6379
#bbo.registry.address=bbo://127.0.0.1:9090
bbo.protocol.port=7070
bbo.jetty.port=4010
bbo.jetty.directory=${user.home}/monitor
bbo.charts.directory=${bbo.jetty.directory}/charts
bbo.statistics.directory=${user.home}/monitor/statistics
bbo.log4j.file=logs/bbo-monitor-simple.log
bbo.log4j.level=WARN
4. 啟動
./bin/start.sh
5. 停止
./bin/stop.sh
6. 重啟:
./bin/restart.sh
7. 調試:
./bin/start.sh debug
8. 系統狀態
./bin/mp.sh
9. 總控入口:
./bin/server.sh start
./bin/server.sh stop
./bin/server.sh restart
./bin/server.sh debug
./bin/server.sh mp
10. 標准輸出
tail -f logs/stdout.log
命令行: (See: Telnet Command Reference)
11. 驗證啟動狀態
echo status | nc -i 1 127.0.0.1 7070
12. 訪問:
http://10.0.30.138:4010/
Dubbo管理控制台安裝
管理控制台為內部裁剪版本,開源部分主要包含:路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等管理功能。
1. 安裝
unzip apache-tomcat-7.0.42.zip -d /usr/local/
mv apache-tomcat-7.0.42 apache-tomcat-7.0.42-4000
cd /usr/local/apache-tomcat-7.0.42-4000
chmod -R +x *
wget http://code.alibabatech.com/mvn/releases/com/alibaba/bbo-admin/2.5.3/bbo-admin-2.5.3.war
unzip bbo-admin-2.5.3.war -d /usr/local/zhanglin/logistics/bbo-admin
2. 配置
修改tomcat的埠,修改host節點
server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="bbo-admin_access_log_4000." suffix=".txt" pattern="%t %h %l %u %r %s %b %I %D %{X-Cluster-Client-Ip}i" resolveHosts="false" />
<Context path="" docBase="/usr/local/zhanglin/logistics/bbo-admin" debug="0" reloadable="false"/>
</Host>
bbo.properties
#vi /usr/local/zhanglin/logistics/bbo-admin/webapps/ROOT/WEB-INF/bbo.properties
vi /usr/local/zhanglin/logistics/bbo-admin/WEB-INF/bbo.properties
#bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.registry.address=zookeeper://172.20.32.211:2181?backup=172.20.32.143:2181,172.20.32.143:2182
bbo.admin.root.password=root
bbo.admin.guest.password=guest
3. 啟動
./bin/startup.sh
4. 停止
./bin/shutdown.sh
5. 訪問:
(用戶:root,密碼:root 或 用戶:guest,密碼:guest)
http://10.0.30.138:4000/
㈥ bbo 服務啟動之後自動退出,為什麼
啟動的參數,有問題,是否傳遞了正確的命令行參數
————————————
㈦ bbo 遠程調用service介面方法必須要寫一份服務端service介面代碼才能注入嗎
Dubbo的Filter是一個調用另一個的,最後再執行業務代碼。 在這一行調下一個Filter,那麼寫在這行代碼前面的代碼就是在業務代碼前攔截了,寫在之後的代碼就是執行完業務代碼後攔截了。
㈧ 怎麼優雅關閉bbo服務命令
bbo 代碼已包含優雅關閉的代碼,非kill -9強行關閉,程序都執行優雅關閉,會先下zk,再完成剩餘任務後關閉。
windows不好模擬~
㈨ bbo 自定義filter有幾種配置方式
Dubbo的Filter是一個調用另一個的,最後再執行業務代碼。 在這一行調下一個Filter,那麼寫在這行代碼前面的代碼就是在業務代碼前攔截了,寫在之後的代碼就是執行完業務代碼後攔截了。