农场主的黑科技.

农场主的黑科技.

Farmer's Hei ke ji :)

《黑客与画家》笔记
第一章 由于第一次读时的笔记不在了,后期简单补充的脑图 第二章 黑客(指热爱编程的人)如同画家,编写代码就如艺术创作。但又不同于画家,画家的工作就是进行创作,这一点所有人都很清楚,但黑客常常会被他人误解,甚至黑客自己有时也会误解自己的工作和定位。就如大学&#...
🦁 Dubbo源码跟踪实录-目录
大纲 目录 从Provider启动到服务注册 从Consumer启动到服务引入 集群容错:服务目录Directory 集群容错:服务路由Router 集群容错:集群Cluster 集群容错:负载均衡LoadBalance 服务调用过程 document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.backg...
Dubbo源码跟踪实录-服务调用过程
远程调用的过程: 首先服务消费者通过代理对象 Proxy 发起远程调用,接着通过网络客户端 Client 将编码后的请求发送给服务提供方的网络层上,也就是 Server。Server 在收到请求后,首先要做的事情是对数据包进行解码。然后将解码后的请求发送至分发器 Dispatcher,再由分发器将请求派发到指定的线程池...
Dubbo源码跟踪实录-集群容错:负载均衡LoadBalance
Dubbo 提供了4种负载均衡实现,分别是 基于权重随机算法的 RandomLoadBalance 基于最少活跃调用数算法的 LeastActiveLoadBalance 基于 hash 一致性的 ConsistentHashLoadBalance 基于加权轮询算法的 RoundRobinLoadBalance 以下是Dubbo 2.6.4的代码分析.之后的版本优化了部分代码. AbstractLoadBalance所有负载均衡类的父类.首先来看一下负载均衡的入口方法 select,如下: 1234567891011//com.alibaba.dubbo.rpc.cluster.loadbalan...
Dubbo源码跟踪实录-集群容错:集群Cluster
Dubbo的两个集群接口Cluster,Cluster Invoker Cluster将多个Invoker合并为一个Cluster Invoker,并将这个 Invoker 暴露给服务消费者。 服务消费者只需通过这个Cluster Invoker 进行远程调用即可,至于具体调用哪个Invoker,以及调用失败后如何处理等问题,现在都交给集群模块去处理。 Dubbo 提供了多种集群实现,包含但不限于 Failover Cluster、Failfast Cluster 和 Failsafe Cluster 等。...
Dubbo源码跟踪实录-集群容错:服务路由Router
前言首先,服务路由是干什么的? 刷新invoker的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。 服务路由包含一条路由规则,规定了服务消费者可调用哪些服务提供者。 Dubbo 目前提供了三种服务路由实现,分别为条件路由 ConditionRouter、脚本路由 ScriptRouter 和标签路由 TagRouter。文中主要分析&#x...
Dubbo源码跟踪实录-集群容错:服务目录Directory
前言从这一章节开始讲Dubbo的集群容错. 集群容错部分包含四个部分 服务目录Directory 服务路由Router 集群Cluster 负载均衡LoadBalance 本章讲服务目录Directory.服务目录是什么,官方文档的描述如下: 服务目录中存储了一些和服务提供者有关的信息,通过服务目录,服务消费者可获取到服务提供者的信息,比如 ip、端口0...
Dubbo源码跟踪实录-从Consumer启动到服务引入
前言上一章主要对Provider的启动过程进行了分析,接下来主要看Consumer的启动过程.Consumer的许多部分与Provider都是对称的,甚至有很多通用的代码,文中会省略与Provider中相同部分的解释.所谓的服务引入就是Consumer对在注册中心获取到的信息创建Invoker的过程. 文章中运行的是官方的Demo: https://github.com/apache/incubator-dubbo/tree/dubbo-2.6.4/dubbo-demo Demo中采用的注册中...
Dubbo源码跟踪实录-从Provider启动到服务注册
前言Dubbo的核心是URL,但是实际调用时出现的URL数量实在是太多了,读源码的时候分不清是哪个,也不知道所谓的URL中到底存了哪些配置.因此,在这几篇文章中,我会对官方Demo的运行过程进行跟踪,从而深入理解Dubbo的原理. 文章中运行的是官方的Demo: https://github.com/apache/incubator-dubbo/tree/dubbo-2.6.4/dubbo-demo Demo中采用的注册中心是multicast的方式,但dubbo更ؽ...
ProtoBuffer的数据格式
ProtoBuffer的数据格式12345message Person { int32 id = 1;//24 string name = 2;//wujingchao string email = 3;//wujingchao92@gmail.com} 上面这条简单的protobuf消息编码后的结果如下 108 18 12 0a 77 75 6a 69 6e 67 63 68 61 6f 1a 16 77 75 6a 69 6e 67 63 68 61 6f 39 32 40 67 6d 61 69 6c 2e 63 6f 6d 它的结构是下面这样 12345678908 // tag (field number 1, wire type 0)18 // 值 = 24,它的varint值 = 1812 // tag (field number 2, wire type 2)0a // 表示后面的数据长度为10个字节, varint值 = 0a77 75 6a 69 6e 67 63 68 61 6f // 值 = wujingchao,写入utf-8编码的varint值1a // tag (field number 3, wire type 2)16 // 表&#x...
avatar
nnkwrik
做自己喜欢做的事!呱!