㈠ 如何通过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,那么写在这行代码前面的代码就是在业务代码前拦截了,写在之后的代码就是执行完业务代码后拦截了。