- 博客(20)
- 收藏
- 关注
原创 13. dubbo分析
RoundRobinLoadBalance 的最终形态前文我们介绍了RoundRobinLoadBalance的多次重构,接下来即RoundRobinLoadBalance 先版本的最终形态public class RoundRobinLoadBalance extends AbstractLoadBalance { public static final String NAME = "roundrobin"; private static int RECYCLE_PERIOD
2021-12-27 13:05:09 61
原创 12.dubbo分析
2021SC@SDUSCRoundRobinLoadBalance 的改进上文说到,RoundRobinLoadBalance对invoker的返回时机有问题,会造成性能缺陷。以下是社区对该问题的改进方法。public class RoundRobinLoadBalance extends AbstractLoadBalance { public static final String NAME = "roundrobin"; private final ConcurrentMap
2021-12-19 21:56:12 186
原创 11.dubbo分析
2021SC@SDUSCRoundRobinLoadBalance先来了解一下什么是加权轮询。所谓轮询是指将请求轮流分配给每台服务器。举个例子,三台服务器 A、B、C。s将第一个请求分配给服务器 A,第二个请求分配给服务器 B,第三个请求分配给服务器 C,第四个请求再次分配给服务器 A。这个过程就叫做轮询。轮询是一种无状态负载均衡算法,实现简单,适用于每台服务器性能相近的场景下。但现实情况下,我们并不能保证每台服务器性能均相近。如果我们将等量的请求分配给性能较差的服务器,这显然是不合理的。因此,这个时候
2021-12-19 21:50:25 80
原创 10.dubbo分析
2021SC@SDUSCConsistentHashLoadBalance一致性 hash 算法的工作过程是这样的,首先根据 ip 或者其他的信息为缓存节点生成一个 hash,并将这个 hash 投射到 [0, 232 - 1] 的圆环上。当有查询或写入请求时,则为缓存项的 key 生成一个 hash 值。然后查找第一个大于或等于该 hash 值的缓存节点,并到这个节点中查询或写入缓存项。如果当前节点挂了,则在下一次查询或写入缓存时,为缓存项查找另一个大于其 hash 值的缓存节点即可。大致效果如下图所
2021-12-06 11:20:28 141
原创 7.dubbo分析
2021SC@SDUSCFailsafeClusterInvokerFailsafeClusterInvoker 是一种失败安全的 Cluster Invoker。所谓的失败安全是指,当调用过程中出现异常时,FailsafeClusterInvoker 仅会打印异常,而不会抛出异常。适用于写入审计日志等操作public class FailsafeClusterInvoker<T> extends AbstractClusterInvoker<T> { @Overr
2021-11-10 11:35:27 199
原创 6.dubbo分析
2021SC@SDUSCreselectprivate Invoker<T> reselect(LoadBalance loadbalance, Invocation invocation, List<Invoker<T>> invokers, List<Invoker<T>> selected, boolean availablecheck) throws RpcException { List<Invoker<
2021-11-10 11:30:10 52
原创 3.dubbo分析
2021SC@SDUSCurl 到 Invoker 的转换过程private Map<String, Invoker<T>> toInvokers(List<URL> urls) { Map<String, Invoker<T>> newUrlInvokerMap = new HashMap<String, Invoker<T>>(); if (urls == null || urls.isEmpty(
2021-10-17 23:23:07 85
原创 2.dubbo分析_服务目录
2021SC@SDUSCdubbo容错机制集群容错源码包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance。服务目录概念服务目录中存储了一些和服务提供者有关的信息,通过服务目录,服务消费者可获取到服务提供者的信息,比如 ip、端口、服务协议等。通过这些信息,服务消费者就可通过 Netty 等客户端进行远程调用。在一个服务集群中,服务提供者数量并不是一成不变的,如果集群中新增了一台机器,相应地在服务目录中就要新增一条服务
2021-10-10 22:24:22 102
原创 1.Dubbo综述
2021SC@SDUSCdubbo介绍dubbo是一个微服务的开发框架。如果服务过多,就尽量不要把所有的服务都部署在同一台机器上,而是把服务拆分成不同的微服务,部署在不同的机器上,提高可用性。因为不同的服务部署在了不同的机器上,而这些服务有可能需要相互通信,就有了RPC的概念。RPC(Remote Procedure Call)即远程调用过程,实现像原来调用本机上的服务一样,调用不同机器上的远程服务。RPC有不同的实现方式。而dubbo的两大核心能力,就是RPC通信和微服务治理。因此可用dubb
2021-09-30 19:53:13 79
原创 4.8 学习记录
安装了ubuntu虚拟机做了一个java利用反射返回属性等的实验画了机组课设的三个原理图开始python简转繁实验(安装python-document读取docx文件 github上找到一个输入字符串返回字符串的间转繁)
2021-04-08 23:19:49 52
原创 3.30学习笔记
python学习完成 实验五有思路 实验六完成 正则表达式不清楚 课上实现了简单的文本查询学习了数据库的符号表达式 复习更深了解了基础swl语句,写完数据库作业想要搞python的whoosh apache jieba opencv和web开发...
2021-03-31 00:16:15 60
原创 yield 和 iter
yield 与 iter 的学习:iter为迭代器,用于在循环中迭代对象输出。可以以元组 列表 等为参数,或者自己定义一个类实现两个接口创建。yield为生成器,返回一个迭代器。可以传参后将参数变为迭代器返回。一般用于在函数中阻断,在执行过程中遇到yield时会暂停,下次调用next方法时返回暂停处,继续运行,实现阻断-迭代作用。...
2021-03-25 11:14:55 121
原创 2021-03-24
2021-3-24 学习内容 基础sql的熟悉 create select及相关子句 group by的一些用法 cout sum 与 group by 的混合使用等 没有学习python,没有画quartus 2 的原理图
2021-03-24 22:00:57 54
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人