
dubbo
文章平均质量分 67
jjavaboy
这个作者很懒,什么都没留下…
展开
-
(一)dubbo容器和dubbo标签
容器总览通过配置文件dubbo.properties配置dubbo的容器(container):#dubbo.properties配置log4j,spring容器组件,dubbo在启动时会初始化组件dubbo.container=log4j,spring#spring容器加载的配置文件,多个文件可以用','分隔dubbo.spring.config=classpath:dubbo-l...原创 2017-05-06 17:54:03 · 637 阅读 · 0 评论 -
(十七)分组聚合
一般来说,消费者进行远程调用时,会调用远程的一个提供者。现在可以消费者调用一个方法,可以调用提供者多个方法再聚合结果返回。public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException { url = url.setProtocol(url.getParameter(...原创 2017-12-14 17:32:59 · 409 阅读 · 0 评论 -
(十六)优雅停机
dubbo的优雅停机,借助于java虚拟机的关闭钩子来实现。打开关闭钩子需要配置dubbo启动参数dubbo.shutdown.hook为true,才会使用关闭钩子启用优雅停机。在钩子里,调用dubbo的容器(有spring,log4j,jetty等容器,即com.alibaba.dubbo.container.Container的实现类)的stop方法,释放相关资源。spring在关闭时,...原创 2017-11-24 16:01:05 · 3023 阅读 · 0 评论 -
(二)负载均衡
负载均衡 1.加权随机配置:loadbalance="random"(默认是random),权重:weight="100"(默认权重是100)获取接口的权重,如果接口的启动时间大于10分钟(600000毫秒),则重新计算权重weightpublic class RandomLoadBalance extends AbstractLoadBalance { protect...原创 2017-05-06 18:10:02 · 650 阅读 · 0 评论 -
(十三)异常分析
调用dubbo服务,有时出现异常信息Forbid consumer xxx.xxx.xxx.xxx(ip) access service xx.xx(service全包的名称) from registry xxx.xxx.xxx.xxx(提供者的ip) use dubbo version xxx(dubbo的版本号), Please check registry access list (wh...原创 2017-08-11 01:43:20 · 492 阅读 · 0 评论 -
(三)集群容错
集群容错1.失败转移配置:cluster="failover"/** * 失败转移,当出现失败,重试其它服务器,通常用于读操作,但重试会带来更长延迟。 * <a href="http://en.wikipedia.org/wiki/Failover">Failover</a> * @author william.liangf */public cl...原创 2017-05-06 18:13:10 · 1516 阅读 · 0 评论 -
(十五)RpcContext对象
比如现在消费者A调用提供者B,在RPC调用之前,消费者可以调用RpcContext.getContext().setAttachment(key, value);设置一些隐含参数,然后在提供者B可以通过RpcContext.getContext().getAttachment(key);拿到key的value。如果B又接着调用C,那么RpcContext则会放着B的调用C的参数,而之前A调用...原创 2017-09-12 17:05:45 · 5570 阅读 · 0 评论 -
(十四)异步调用
异步调用可以通过文件配置:<dubbo:reference id="fooService" interface="com.alibaba.foo.FooService"> <dubbo:method name="findFoo" async="true" /></dubbo:reference>在我们的业务层调用dubbo原创 2017-09-12 17:01:28 · 722 阅读 · 2 评论 -
(九)监控模块-monitor
先用一张图来说明dubbo中的monitor模块结构:基于Filter来实现服务调用监控功能@Activate(group = {Constants.PROVIDER, Constants.CONSUMER})public class MonitorFilter implements Filter { private static final Logger logger ...原创 2017-07-08 11:37:15 · 6793 阅读 · 0 评论 -
(十二)服务雪崩-熔断器
由于分布式系统将不同模式做成不同的服务,在一个系统1中,可能会调用了不同服务,比如会调用服务A、B、C,而服务跟服务之间也会相互调用的,比如服务D、E会调用服务A;当调用服务A失败时,系统1、服务D、服务E都会失败了,这样由于一个服务有问题,从而导致多个系统或者服务不可用,产生了服务雪崩。因此,提出一个熔断器,快速返回一个失败值(而不是在阻塞等待服务的返回,或者服务失败抛出来的异常导致调用者...原创 2017-08-01 10:31:46 · 2784 阅读 · 0 评论 -
(八)过滤器-Filter
序前dubbo会扫描META-INF/dubbo/internal/,META-INF/dubbo/,META-INF/services/目录下的文件,比如,过滤器的扩展类,则会扫描com.alibaba.dubbo.rpc.Filter文件的扩展类,如该文件的内容:afterFilter=lam.dubbo.provider.filter.AfterFilterbeforeFil...原创 2017-07-08 11:09:36 · 428 阅读 · 0 评论 -
(十一)并发控制
一、消费者并发控制消费者对同一个方法可以进行并发数的控制,dubbo也是基于过滤器的设置功能来实现并发控制的。通过配置actives的值,在可以Consumer配置,也可以在Provider配置,一般可以在提供者配置的,可以在提供者配置,提供者比较清楚服务能够承受的并发数。actives默认 0 每服务消费者每服务每方法最大并发调用数@Activate(group = Constan...原创 2017-07-15 16:29:19 · 564 阅读 · 0 评论 -
(十)dubbo原理
本文讨论的原理是,假设dubbo框架使用protocol是"dubbo",server和client底层传输数据是"netty"。 原理机制远程调用时,发送请求的封装对象com.alibaba.dubbo.remoting.exchange.Request远程调用时,接收返回的封装对象com.alibaba.dubbo.remoting.exchange.Response请求发...原创 2017-07-14 11:52:50 · 1173 阅读 · 0 评论 -
(七)数据序列化-hessian2
使用hessian2协议,也就是传输对象序列化,它是二进制的RPC协议,与RMI不同的是,以标准的二进制格式定义请求的信息(请求的对象、方法、参数等),可以跨语言通讯,而RMI只局限于java间通讯。1.hessian2原理java-hessian2自定义的类使用默认的序列化类com.caucho.hessian.io.JavaSerializer(Class, ClassLoader)接...原创 2017-06-23 11:13:56 · 9350 阅读 · 0 评论 -
(五)禁用启用提供者
##禁用启用提供者禁用配置管理后台:dubbo-admin,或叫治理中心在dubbo的治理中心,动态配置上配置disabled=true此外,enabled=true覆盖规则是否生效,可不填,缺省生效。接口的动态配置 注册到zookeeper 的节点/dubbo/接口全包名/configuratorsoverride://192.168.204.79:20880/lam.dubb...原创 2017-05-06 18:26:02 · 1860 阅读 · 1 评论 -
(六)路由规则
路由规则功能配置路由功能,就是 消费者 -> 提供者即是根据配置的路由规则,找到提供者,比如,读写分离 路由规则:读路由:method = find*,list*,get*,is* => host = 172.22.3.94,172.22.3.95,172.22.3.96这条规则会判断读方法,会调用172.22.3.94,172.22.3.95,172.22.3.96...原创 2017-05-06 19:24:27 · 8345 阅读 · 2 评论 -
(四)服务降级
服务降级通过在dubbo的治理中心编辑动态配置:mock=force:return+null消费者不会调用提供者,消费者直接返回null强制降级,在dubbo的治理中心来配置降级mock=fail:return+null消费者调用提供者出现异常,指网络超时异常等,而不是指业务异常,这时dubbo返回null异常降级,在dubbo的治理中心来配置降级当然了,也可以定义返回true或fa...原创 2017-05-06 18:15:22 · 1484 阅读 · 0 评论