自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (1)
  • 收藏
  • 关注

原创 Dubbo源码阅读-服务调用过程

1.概述2.源码请求数据的发送过程:proxy0#sayHello(String) —> InvokerInvocationHandler#invoke(Object, Method, Object[]) —> MockClusterInvoker#invoke(Invocation) —> AbstractClusterInvoker#invoke(Invocation) —> FailoverClusterInvoker#...

2021-01-29 11:40:46 161 1

原创 Dubbo源码阅读-服务导出

1.概述本篇文章,我们来研究一下 Dubbo 导出服务的过程。Dubbo 服务导出过程大致可分为三个部分:第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注册服务,用于服务发现。本篇文章将会对这三个部分代码进行详细的分析。2.源码服务导出的入口为:DubboBootstrap.exportServices(),首先会遍历解析完成的所有的ServiceConfig,然后进行服务的导出。

2021-01-29 11:39:12 293

原创 Dubbo源码阅读-Config

1.概述ApplicationModel Environment ServiceRepository ConfigManager ApplicationConfig MonitorConfig ModuleConfig MetricsConfig SslConfig ConfigCenterConfig MetadataReportConfig ProviderConfig ConsumerConfig Pro...

2020-11-03 20:38:59 161

原创 Dubbo源码阅读-服务启动

1.概述2.源码3.总结

2020-11-03 16:00:55 225

原创 Dubbo源码阅读-DUBBO Adaptive

1.概述2.源码3.总结

2020-11-03 11:38:01 240

原创 Dubbo源码阅读-DUBBO SPI

dubbo spi

2020-10-29 17:08:34 172 1

原创 Dubbo源码阅读-项目结构

1. 概述2.整体设计3.模块分包4.调用链

2020-10-13 11:58:20 125

原创 Dubbo源码阅读

1、疑问点1.1 设计模式1.2 bean加载过程1.3 extension机制1.4 代理1.5 远程调用过程2、源码阅读2.1 项目结构3、参考文章

2020-10-13 11:52:24 102

原创 redis设计与实现-事务

1.概述redis通过MULTI、EXEC、WATCH等命令来实现事务功能。事务以MULTI命令开始,最后由EXEC命令将事务提交给服务器。WATCH命令是一个乐观锁,它可以再EXEC命令执行之前,监视任意数量的数据库key,并在EXEC命令执行的时候,检测是否有某个key被修改过了,如果是,服务器将拒绝事务,并向客户端返回执行失败的响应。2.实现事务的实现分为三个阶段:1)事务的开始2)命令入队列3)事务执行2.1 事务开始MULTI命令可以将执行该命令的客户端非事务状态切

2020-05-29 15:34:15 252

原创 redis设计与实现-对象

redis设计与实现-对象

2020-05-25 20:07:57 166

原创 Spring源码-IOC

1、概述IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。在传统的开发模式下,我们都是采用直接 new 一个对象的方式来创建对象,也就是说你依赖的对象直接由你自己控制,但是有了 IoC 容器后,则直接由 IoC 容器来控制。所依赖的对象直接由 IoC 容器创建后注入到被注入的对象中。注入形式- 构造器注入- setter方法注入- 接口方式注入2、核心实现2.1....

2020-05-21 11:01:42 107

原创 zookeeper学习笔记(1)-Leader选举之FastLeaderElection

1、概述选举的父接口为Election,其定义了lookForLeader和shutdown两个方法,lookForLeader表示寻找Leader,shutdown则表示关闭,如关闭服务端之间的连接。  AuthFastLeaderElection,同FastLeaderElection算法基本一致,只是在消息中加入了认证信息,其在3.4.0之后的版本中已经不建议使用。  FastLeaderElection,其是标准的fastpaxos算法的实现,基于TCP协议进行选举。  Leade.

2020-05-18 11:36:25 212

原创 redis设计与实现-集群

1.概述除了sentinel方式,redis集群是redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。2.实现2.1 节点2.2 槽指派2.3 在集群中执行命令2.4 重新分片2.5 ask2.6 复制和故障转移2.7 消息3.总结集群中的16384个槽可以分别指派给集群中的各个节点,每个节点都会记录哪些槽指派给自己,哪些槽又被指派给了其他节点 节点在接收到一个命令请求时,会先检查这个命令请求要处理的键所在

2020-05-17 19:11:07 167

原创 redis设计与实现-Sentinel

1.概述SENTINAL启动多个哨兵实例监控,设置探活时间间隔,超时时间,超过多少个哨兵实例失败则切换切换主节点。2.实现切换步奏:修改slave的配置文件,删除slave of ,修改master节点配置文件,加入slave of。3.总结...

2020-05-17 18:57:01 170

原创 redis设计与实现-Reactor模型的应用

1.概述2.实现3.总结

2020-05-17 15:43:12 893

原创 redis设计与实现-RDB与AOF持久化

1.概述2.实现3.总结

2020-05-15 17:17:18 171

原创 redis设计与实现-数据库

1.概述2.实现3.总结

2020-05-15 15:24:39 457

原创 redis设计与实现-压缩列表

1.概述redis中的hash,list,zset在数据量小的时候都使用压缩列表ziplist。2.压缩列表的实现3.总结压缩列表就是对每个节点都记录长度、encoding、内容,有点像网络传输中协议定义一样,用几个字节保存报文长度,然后根据报文长度读取报文内容。...

2020-05-14 23:33:36 149

原创 redis设计与实现-整数集合

1.概述整数集合(intset)并不是一个基础的数据结构,而是Redis自己设计的一种存储结构,是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis就会使用整数集合作为集合键的底层实现。2.整数集合的实现2.1 源码://每个intset结构表示一个整数集合typedef struct intset{ //编码方式 uint32_t encoding; //集合中包含的元素数量 uint32_t length;

2020-05-14 23:25:46 213

原创 java并发 - CAS

1. 概述CAS ,Compare And Swap ,即比较并交换。整个 AQS 同步组件、Atomic 原子类操作等等都是基 CAS 实现的,甚至 ConcurrentHashMap 在 JDK 1.8 的版本中,也调整为 CAS +synchronized。2. CAS分析在 CAS 中有三个参数:内存值 V、旧的预期值 A、要更新的值 B ,当且仅当内存值 V 的值等于旧的预期值 A 时,才会将内存值V的值修改为 B ,否则什么都不干Unsafe 是 CAS 的核心类,Java ..

2020-05-13 19:02:33 78

原创 java并发 - JUC之线程池的基础架构

java并发 - JUC之线程池的基础架构

2020-05-13 11:33:10 96

原创 java并发 - JUC之基础类型

1、AtomicInteger2、AtomicLong3、ConcurrentHashMap

2020-05-13 11:32:29 97

原创 java并发 - JUC之Condition

java并发 - JUC之Condition

2020-05-13 11:30:03 169

原创 java并发 - JUC之ReentrantLock&ReentrantReadWriteLock

java并发 - JUC之ReentrantLock&ReentrantReadWriteLock

2020-05-13 11:29:26 91

原创 java并发 - JUC之AQS

java并发 - JUC之AQS

2020-05-13 11:28:27 126

原创 redis设计与实现-跳跃表

1.概述

2020-05-07 18:40:27 173

原创 redis设计与实现-字典

1.概述2.

2020-05-07 18:39:55 121

原创 redis设计与实现-链表

1.链表与链表节点的实现

2020-05-07 18:38:14 139

原创 redis设计与实现-SDS动态字符串

1.SDS定义2.SDS与C字符串的区别3.总结对比C字符串,SDS有以下优点:获取字符串的长度的复杂度O(1) 杜绝缓冲区溢出 减少修改字符串时所需的内存重分配次数 二进制安全 兼容部分C字符串函数...

2020-05-07 18:33:14 151

原创 apollo源码(6)-表结构设计

1.主体E-R DiagramApp App信息 AppNamespace App下Namespace的元信息 Cluster 集群信息 Namespace 集群下的namespace Item Namespace的配置,每个Item是一个key, value组合 Release Namespace发布的配置,每个发布包含发布时该Namesp...

2020-04-30 18:52:12 994

原创 apollo源码(5)-portal&admin

1.流程图

2020-04-30 18:49:41 202

原创 apollo源码(3)-configservice配置读取接口

1. 概述在上文,我们看到通知变化接口,仅返回通知相关的信息,而不包括配置相关的信息。所以 Config Service 需要提供配置读取的接口1.1 配置读取流程图2. ConfigController类配置 Controller ,仅提供configs/{appId}/{clusterName}/{namespace:.+}接口,提供配置读取的功能2.1...

2020-04-30 18:47:37 1298

原创 apollo源码(3)-ConfigService通知配置变化

1. 概述客户端会发起一个Http 请求到 Config Service 的notifications/v2 接口,也就是NotificationControllerV2 。 NotificationControllerV2 不会立即返回结果,而是通过Spring DeferredResult把请求挂起。 如果在 60 秒内没有该客户端关心的配置发布,那么会返回 Http 状态码 ...

2020-04-30 18:44:16 1183

原创 apollo源码(2)-client

1.概述Client 通过轮询的方式,从 Config Service 读取配置。Client 的轮询包括两部分:1.RemoteConfigRepository ,定时轮询 Config Service 的配置读取2.RemoteConfigLongPollService ,长轮询 Config Service 的配置变更通知/notifications/v2接口 当有新的...

2020-04-30 18:25:41 466

原创 apollo源码(1)-概述

一、简要介绍Apollo(阿波罗)是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。二、主要模块及功能介绍四个核心模块及其主要功能 ConfigService 提供配置获取接口 提供配置推送接口 ...

2020-04-30 18:23:16 1467

原创 apollo配置中心源码阅读

1.概述2.client源码3.configservice4.portal&admin5.表结构

2020-04-30 18:20:00 372

原创 redis设计与实现

1、问题2、源码解读3、参考文章如何阅读redis源码:http://blog.huangz.me/diary/2014/how-to-read-redis-source-code.html

2020-04-22 11:13:00 194

原创 kafka源码(9)-consumer

TODO...

2020-04-15 11:55:59 150

原创 kafka源码(8)-producer

TODO.....

2020-04-15 11:55:29 166

原创 kafka源码(7)-控制管理模块之KafkaController

1. 重要类介绍KafkaControllerKafkaController作为kafka集群的控制者,有且存在一个leader,若干个follower。Leader能够发送具体的指令给follower,具体指令如:RequestKeys.LeaderAndIsrKey,RequestKeys.StopReplicaKey,RequestKeys.UpdateMetadataKey。...

2020-04-14 16:56:55 370

java source attacher

操作方式:下载压缩包后,放入Eclipse的features包下,选择需要查看源代码的jar包,右键单击Attach Java source,在 progress视图中可以看见正在从网上下载源码包 默认放在C:\Documents and Settings\Administrator\.sourceattacher 目录下

2015-07-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除