- 博客(22)
- 资源 (5)
- 问答 (4)
- 收藏
- 关注
原创 Dubbo源码学习--MergeableCluster集群容错(九)
MergeableCluster聚合集群,将集群中的调用结果聚合起来返回结果。比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项。比较鸡肋,小点的项目应该都用不到配置如:(搜索所有分组)按组合并返回结果,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需从每种group中调用一次返回结果,...
2018-03-29 20:36:57 1260
原创 Dubbo源码学习--ForkingCluster集群容错(八)
Forking Cluster并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。在ForkingCluster中是由ForkingClusterInvoker来帮助完成实现的。public class ForkingCluster implements Cluster { public final...
2018-03-27 18:58:03 1146
原创 Dubbo源码学习--FailsafeCluster集群容错(七)
Failsafe Cluster失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。在FailsafeCluster中服务的调用实现实在FailsafeClusterInvoker中完成的public class FailsafeCluster implements Cluster { public final static String NAME = "failsafe";...
2018-03-27 18:57:57 500
原创 Dubb源码学习--FailoverCluster集群容错(六)
Failover Cluster失败自动切换,当出现失败,重试其它服务器 1。通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。重试次数配置如下:<dubbo:service retries="2" />或<dubbo:reference retries="2" />或<dubbo:reference> ..
2018-03-27 18:57:50 1743
原创 Dubb源码学习--FailfastCluster集群容错(五)
Failfast Cluster快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。在FailfastCluster中是通过创建一个FailfastClusterInvoker来完成一次调用失败报错机制的。public class FailfastCluster implements Cluster { public final static String N...
2018-03-27 18:57:40 1614
原创 Dubbo源码学习--FailbackCluster集群容错(四)
Failback Cluster失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。FailbackCluster的实现类如下:public class FailbackCluster implements Cluster { public final static String NAME = "failback"; public <T> Invoker...
2018-03-27 18:57:30 707
原创 Dubbo源码学习--BroadcastCluster集群容错(三)
Broadcast Cluster广播调用所有提供者,逐个调用,任意一台报错则报错 2。通常用于通知所有提供者更新缓存或日志等本地资源信息。实现类:public class BroadcastCluster implements Cluster { public <T> Invoker<T> join(Directory<T> directory) t...
2018-03-27 18:57:21 857
原创 Dubbo源码学习--AvailableCluster集群容错(二)
AvailableCluster 简单的集群容错方式,如果服务提供者可用就直接调用服务,并且不需要任何负载均衡处理。public class AvailableCluster implements Cluster { public static final String NAME = "available"; public <T> Invoker<T&g...
2018-03-27 18:56:50 581
原创 Dubbo源码学习--Cluster集群容错(一)
集群容错在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。各节点关系:这里的 Invoker 是 Provider 的一个可调用 Service 的抽象,Invoker 封装了 Provider 地址及 Service 接口信息Directory 代表多个 Invoker,可以把它看成 List<Invoker> ,但与 List 不同的是,它的值可能是...
2018-03-27 18:56:40 777
转载 Dubbo源码学习--ConsistentHashLoadBalance负载均衡(五)
ConsistentHash LoadBalance一致性 Hash,相同参数的请求总是发到同一提供者。 当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。 算法参见:http://en.wikipedia.org/wiki/Consistent_hashing 缺省只对第一个参数 Hash,如果要修改,请配置 <dubbo:parame...
2018-03-26 20:19:39 2992 2
原创 Dubbo源码学习--RoundRobinLoadBalance负载均衡(四)
RoundRobin LoadBalance轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。1)获取轮询key 服务名+方法名获取可供调用的invokers个数length设置最大权重的默认值maxWeight=0设置最小权重的默认值minWeight=Integer.MAX_VALU...
2018-03-26 19:06:33 3871 2
原创 Dubbo源码学习--LeastActiveLoadBalance负载均衡(三)
LeastActive LoadBalance最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。public class LeastActiveLoadBalance extends AbstractLoadBalance { public static final String NAME = "leastacti...
2018-03-26 19:06:27 2727 1
原创 Dubbo源码学习--RandomLoadBalance负载均衡(二)
Random LoadBalance随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。RandomLoadBalance中会根据每个服务调用的权值次数来进行随机数,这样权值越大,动态调整越均衡。public class RandomLoadBalance extends AbstractLoadBalance {...
2018-03-24 17:11:08 1037
原创 Dubbo源码学习--LoadBalance负载均衡(一)
在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用。可以自行扩展负载均衡策略,参见:负载均衡扩展负载均衡策略Random LoadBalance随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。RoundRobin LoadBalance轮循,按公约后的权重设置轮循比率。存在慢的提供者...
2018-03-24 17:10:51 1922
转载 一致性Hash(Consistent Hashing)原理剖析
引入在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为: 图1:加入缓存的数据读取过程对于分布式缓存,不同机器上存储不同对象的数据。为了实现这些缓存机器的负载均衡,可以使用式子1来定位对象缓存的存储机器:m = hash(o) mod n ——式子1其中,o为...
2018-03-24 12:57:43 394
原创 Dubbo源码学习--Multicast 注册中心(四)
Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。提供方启动时广播自己的地址消费方启动时广播订阅请求提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了 unicast=false,则广播给订阅者消费方收到提供方地址时,连接该地址进行 RPC 调用。组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段: 224.0.0.0 - 239.255.25...
2018-03-22 20:49:43 5577
原创 Dubbo源码学习--Redis注册中心(三)
基于 Redis 1 实现的注册中心 2。使用 Redis 的 Key/Map 结构存储数据结构:主 Key 为服务名和类型Map 中的 Key 为 URL 地址Map 中的 Value 为过期时间,用于判断脏数据,脏数据由监控中心删除 3使用 Redis 的 Publish/Subscribe 事件通知数据变更:通过事件的值区分事件类型:register, unregister, subscri...
2018-03-22 20:10:39 5937
原创 Dubbo源码学习--Zookeeper注册中心(二)
Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 1。流程说明:服务提供者启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址服务消费者启动时: 订阅 /dubbo/com.foo.BarService/p...
2018-03-22 20:10:17 684
原创 Dubbo源码学习--注册中心(一)
目前Dubbo官方提供的注册中心有Multicast、Zookeeper、Redis和Simple注册中心,官方推荐使用Zookeeper作为生产环境的注册中心。 Dubbo官方也提供了扩展机制,开发人员可以根据自己的需要遵守一定的扩展规范开发自己的注册中心,扩展接口主要有如下几个接口:com.alibaba.dubbo.registry.RegistryFactorycom.ali...
2018-03-22 18:33:44 817
原创 Tomcat源码学习--servlet请求处理
当前tomcat 8.5.20中已经不再使用bio模型,默认支持NIO实现的org.apache.coyote.http11.Http11NioProtocol,当前tomcat支持的io模型如下: 在Tomcat启动时会启用一个端口来监听请求,并且会启动多个线程来处理相关的请求操作,如下图:相关线程介绍:(1)http-nio-8080-Acceptor为请求接收器,其只接收请求,不会对请求做任...
2018-03-20 19:38:28 4116
原创 Tomcat源码学习--Tomcat模块组成
1、Server.xml从tomcat的server.xml中我们可以看到tomcat的相关模块设计,从server.xml文件中解析出来的各个对象都是容器,比如Server、service、Connector和host等,这些容器都有新建、初始化、启动、停止、失败和销毁等状态。Server.xml示例:<?xml version="1.0" encoding="UTF-8"?>&...
2018-03-20 12:42:48 1536
原创 Tomcat启动停止慢问题查找解决
Tomcat启动停止慢问题查找解决一、概述 使用封装的tomcat组件进行web服务部署时,导致tomcat服务在服务启动和停止中用时比较长,结合tomcat的运行日志进行问题分析。运行日志如下: 二、tomcat服务停止慢问题1、现象根据tomcat的运行日志发现,进行了3次tomcat停止操作过程中,第一次tomcat服务停止用时接近5分钟,第二次和第三次tomc...
2018-03-01 18:46:29 10005
空空如也
Spring MVC注入的时候只能用@Autowired,不能使用set方法吗???
2016-04-11
求推荐linux文件共享软件
2015-09-06
java源码阅读方法以及经验
2014-11-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人