![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Cloud 2.2.2 源码之旅
王伟王胖胖
这个作者很懒,什么都没留下…
展开
-
Spring Cloud 2.2.2 源码之六十九nacos的raft选举原理解析四
Spring Cloud 2.2.2 源码之六十九nacos的raft选举原理解析四raft竞选基本流程集群结点请求同步数据RaftCore的receivedBeat获取信息RaftController的getraft竞选基本流程集群结点请求同步数据前面说了leader发送的心跳过去的时候会带有数据key的信息,其他结点可能会进行数据的同步。RaftCore的receivedBeat获取...原创 2020-04-30 11:58:07 · 652 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之六十八nacos的raft选举原理解析三
Spring Cloud 2.2.2 源码之六十八nacos的raft选举原理解析三raft竞选基本流程RaftController的beat处理心跳RaftCore的receivedBeatRaftPeerSet的makeLeaderRaftController的getPeer获取结点信息raft竞选基本流程RaftController的beat处理心跳RaftCore的receive...原创 2020-04-30 11:57:40 · 491 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之六十七nacos的raft选举原理解析二
Spring Cloud 2.2.2 源码之六十七nacos的raft选举原理解析二raft竞选基本流程RaftCore的HeartBeat心跳RaftCore的HeartBeat心跳RaftPeerSet的update更新结点信息raft竞选基本流程RaftCore的HeartBeat心跳我们可以看到,心跳也有超时时间,到了后重置然后发心跳。@Override publ...原创 2020-04-30 11:56:54 · 495 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之六十六nacos的raft选举原理解析一
Spring Cloud 2.2.2 源码之六十六nacos的raft选举原理解析一raft竞选基本流程MasterElectionsendVote拉票其他结点处理拉票请求RaftController的voteRaftCore的receivedVote接受投票后决定leaderRaftCore的decideLeaderraft竞选基本流程MasterElection前面说了选举测初始化,现...原创 2020-04-30 11:56:26 · 682 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之六十五nacos的raft选举初始化流程
Spring Cloud 2.2.2 源码之六十五nacos的raft选举原理nacos数据一致性服务执行流程nacos数据一致性服务执行流程原创 2020-04-30 11:55:57 · 780 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之六十四nacos数据一致性原理之永久结点数据同步二
Spring Cloud 2.2.2 源码之六十四nacos数据一致性原理之永久结点数据同步二nacos数据一致性服务执行流程RaftController的onPublish过半响应RaftConsistencyServiceImpl的onPut一些问题nacos数据一致性服务执行流程RaftController的onPublish过半响应最终响应还是调用了RaftConsistencyS...原创 2020-04-29 22:54:39 · 692 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之六十三nacos数据一致性原理之永久结点数据同步一
Spring Cloud 2.2.2 源码之六十三nacos数据一致性原理之永久结点数据同步一nacos数据一致性服务执行流程RaftConsistencyServiceImpl的put永久数据同步RaftCore的signalPublishRaftCore的isLeaderRaftPeerSet的isLeaderRaftCore的onPublishService的onChangenacos数据...原创 2020-04-29 22:54:12 · 1099 阅读 · 1 评论 -
Spring Cloud 2.2.2 源码之六十二nacos数据一致性原理之临时结点数据同步二
Spring Cloud 2.2.2 源码之六十二nacos数据一致性原理之临时结点数据同步二nacos数据一致性服务执行流程DataStore的batchGetNamingProxy的syncData数据同步DistroController的onSyncDatumnacos数据一致性服务执行流程DataStore的batchGet上篇说到要进行数据同步了,我们先来看下任务key=com....原创 2020-04-29 22:53:31 · 715 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之六十nacos数据一致性原理之临时结点数据同步一
Spring Cloud 2.2.2 源码之五十七nacos服务端处理注册实例请求五TaskScheduler的runDataSyncer的submitDataStore的batchGetNamingProxy的syncData数据同步TaskScheduler的run其实就是从队列中获取要更新的服务key,然后判断数量是不是超过1000或者超时2秒了,是的话就创建SyncTask同步任务并提...原创 2020-04-29 22:53:02 · 2185 阅读 · 6 评论 -
Spring Cloud 2.2.2 源码之五十九nacos服务端处理查询实例列表
Spring Cloud 2.2.2 源码之五十九nacos服务端处理查询实例列表服务端处理查询实例列表InstanceController的list查询实例列表doSrvIPXT返回实例服务端处理查询实例列表我们看查询服务实例列表在哪里,在ZoneAwareLoadBalancer的updateListOfServers更新服务中。这里会传UDP端口,就是前篇说的服务器推送服务实例改变的...原创 2020-04-29 22:52:14 · 1477 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之五十八nacos服务端处理实例心跳二
Spring Cloud 2.2.2 源码之五十八nacos服务端处理实例心跳二ClientBeatProcessor的run处理临时实例心跳PushService的serviceChanged服务有改变UDP客户端UDP调度任务udpPushRetransmitterReceiverClientBeatProcessor的run处理临时实例心跳这里就体现出RsInfo的用途啦,其实就是保存下...原创 2020-04-29 22:51:49 · 909 阅读 · 1 评论 -
Spring Cloud 2.2.2 源码之五十七nacos服务端处理实例心跳一
Spring Cloud 2.2.2 源码之五十七nacos服务端处理实例心跳回顾客户端实例心跳服务端处理心跳InstanceController的beatService的processClientBeat处理一次心跳回顾客户端实例心跳在服务实例注册之前,如果是临时的服务实例,会先开启心跳任务,不过心跳任务5秒后会运行,第一次心跳的时候会带上心跳内容,也就是服务实例的信息,避免实例不存在又要重...原创 2020-04-29 22:51:22 · 1550 阅读 · 2 评论 -
Spring Cloud 2.2.2 源码之五十六nacos服务端处理注册实例请求四
Spring Cloud 2.2.2 源码之五十六nacos服务端处理注册实例请求四Service模型大致结构DistroConsistencyServiceImpl的put临时实例集合一致性服务onPut添加临时实例集合TaskDispatcher的addTaskTaskScheduler的addTaskTaskScheduler的runDataSyncer的submitService模型大致...原创 2020-04-29 13:50:53 · 681 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之五十五nacos服务端处理注册实例请求三
Spring Cloud 2.2.2 源码之五十五nacos服务端处理注册实例请求三Service模型大致结构ServiceManager的addIpAddressesServiceManager的addIpAddressesupdateIpAddresses更新服务实例Service的allIPs获取集群中的实例集合ServiceManager的setValid更新老的实例集合Cluster的i...原创 2020-04-29 13:50:22 · 552 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之五十四nacos服务端处理注册实例请求二
Spring Cloud 2.2.2 源码之五十四nacos服务端处理注册实例请求二客户端注册实例流程ServiceManager的putServiceAndInitServiceManager的putServiceService的init初始化和开启心跳检测HealthCheckReactor的scheduleCheckDelegateConsistencyServiceImpl的listenD...原创 2020-04-29 13:49:58 · 902 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之五十三nacos服务端处理注册实例请求一
Spring Cloud 2.2.2 源码之五十三nacos服务端处理注册实例请求一客户端注册实例流程注册实例客户端注册服务端处理服务端处理createEmptyServiceServiceManager的getService客户端注册实例流程注册实例官网的描述:客户端注册主要是在这个地方。服务端处理InstanceController的register方法:服务端处理...原创 2020-04-29 13:49:20 · 690 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之五十二nacos服务端处理监听配置请求二
Spring Cloud 2.2.2 源码之五十二nacos服务端处理监听配置请求二ClientLongPolling的run监听后台配置修改DataChangeTask的runClientLongPolling的run然后你会发现,又是一个调度任务,延迟时间29.5秒,就是最少挂起时间。然后会将对象放进监听集合里。当挂起时间过后,开始处理,因为不是固定轮询的,所以直接响应:把轮询任务...原创 2020-04-28 21:26:41 · 894 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之五十一nacos服务端处理监听配置请求一
Spring Cloud 2.2.2 源码之五十一nacos服务端处理监听配置请求一监听配置客户端的LongPollingRunnable服务端的ConfigController的listenerConfigServletInner的doPollingConfigLongPollingService的isSupportLongPolling是否支持长轮询LongPollingService的add...原创 2020-04-28 21:26:06 · 877 阅读 · 1 评论 -
Spring Cloud 2.2.2 源码之五十nacos服务端处理获取配置请求
Spring Cloud 2.2.2 源码之五十nacos服务端处理获取配置请求nacos服务端获取配置ConfigController的getConfigRequestUtil的getRemoteIp尽可能获取真实IPConfigServletInner的doGetConfignacos服务端其实nacos大致功能就两个,一个是配置中心,一个是命名服务,我们先看配置中心是如何提供配置请求服务...原创 2020-04-28 21:25:35 · 941 阅读 · 1 评论 -
Spring Cloud 2.2.2 源码之四十九nacos客户端触发服务刷新原理三
Spring Cloud 2.2.2 源码之四十八nacos客户端触发服务刷新原理三服务获取和刷新的流程图NacosNamingService的selectInstancesHostReactor的getServiceInfoHostReactor的scheduleUpdateIfAbsentPushReceiver接受推送服务获取和刷新的流程图NacosNamingService的sele...原创 2020-04-27 21:06:28 · 1153 阅读 · 1 评论 -
Spring Cloud 2.2.2 源码之四十八nacos客户端触发服务刷新原理二
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理二服务获取和刷新的流程图NacosServerList实例化ZoneAwareLoadBalancer实例化NacosServerList的getUpdatedListOfServers服务获取和刷新的流程图NacosServerList实例化继续上篇,接下来就是实例化到这里了:config就是上篇最后实...原创 2020-04-27 21:06:02 · 1016 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
Spring Cloud 2.2.2 源码之四十六nacos客户端触发服务刷新原理一服务获取和刷新的流程图什么时候获取服务拦截器拦截RestTemplate服务获取和刷新的流程图什么时候获取服务其实当nacos客户端起来之后,并不会去请求服务信息,只是会去做服务注册,配置获取等,那什么时候会获取服务呢,就是第一次请求来的时候,也就是说是懒加载的思想,下面看我慢慢分析。拦截器拦截RestT...原创 2020-04-27 21:05:29 · 1195 阅读 · 2 评论 -
Spring Cloud 2.2.2 源码之四十六nacos客户端服务发现任务解析三
Spring Cloud 2.2.2 源码之四十六nacos客户端服务发现原理四服务发现任务图NamingProxy的refreshSrvIfNeed刷新服务中心地址服务发现任务图NamingProxy的refreshSrvIfNeed刷新服务中心地址这个主要是刷新服务器地址用的,也就是注册中心的地址,但是是根据域名去请求的,一般不设置域名这里基本都是返回了。 private void...原创 2020-04-27 21:04:57 · 1787 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之四十五nacos客户端服务发现任务解析二
Spring Cloud 2.2.2 源码之四十五nacos客户端服务发现原理三服务发现任务图SwitchRefresher故障转移刷新FailoverReactor初始化备份DiskFileWriterPushReceiver服务发现任务图SwitchRefresher故障转移刷新查看缓存目录下的/failover/00-00---000-VIPSRV_FAILOVER_SWITCH-0...原创 2020-04-27 21:03:14 · 8563 阅读 · 2 评论 -
Spring Cloud 2.2.2 源码之四十四nacos客户端服务发现任务解析一
Spring Cloud 2.2.2 源码之四十四nacos客户端服务发现原理二NacosWatchBeatTaskNacosWatch这个就不多说了,SmartLifecycle这个已经很熟悉了吧,调用start,里面开启任务,30秒一次,发送HeartbeatEvent,不过貌似现在没有监听器监听。BeatTask服务注册默认是临时结点,所以要有心跳。 @Ov...原创 2020-04-27 21:02:35 · 3157 阅读 · 1 评论 -
Spring Cloud 2.2.2 源码之四十三nacos客户端服务发现相关配置类
Spring Cloud 2.2.2 源码之三十二nacos客户端获取配置原理七NacosDiscoveryAutoConfigurationNacosDiscoveryPropertiesNacosServiceDiscoveryNacosDiscoveryClientConfigurationNacosDiscoveryClientNacosWatchNacosDiscoveryAutoCo...原创 2020-04-27 21:01:29 · 961 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之四十二nacos客户端服务注册原理
Spring Cloud 2.2.2 源码之四十二nacos客户端服务注册原理大致服务注册流程服务注册相关配置类介绍NacosServiceRegistryAutoConfigurationNacosServiceRegistryNacosRegistrationNacosAutoServiceRegistration注册原理NacosServiceRegistry的registerNacosNa...原创 2020-04-27 21:00:54 · 802 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之四十一nacos配置动态刷新原理三
Spring Cloud 2.2.2 源码之四十一nacos配置动态刷新原理三RefreshScope注解类实例化基本流程GenericScope的destroyBeanLifecycleWrapper的destroyRefreshScope获取新对象SimpleBeanTargetSource的getTargetLockedScopedProxyFactoryBean的invokeRefres...原创 2020-04-26 21:41:57 · 1211 阅读 · 11 评论 -
Spring Cloud 2.2.2 源码之四十nacos配置动态刷新原理二
Spring Cloud 2.2.2 源码之四十nacos配置动态刷新原理二RefreshScope注解类实例化基本流程ConfigurationPropertiesRebinder配置属性类重新绑定ConfigurationPropertiesRebinder的rebind重新绑定rebind绑定RefreshScope的refreshAllRefreshScope注解类实例化基本流程Co...原创 2020-04-26 21:40:29 · 1884 阅读 · 2 评论 -
Spring Cloud 2.2.2 源码之三十九nacos配置动态刷新原理一
Spring Cloud 2.2.2 源码之三十九nacos配置动态刷新原理一RefreshScope注解类实例化基本流程nacos如何通过RefreshScope注解进行属性刷新RefreshEventListener的handleContextRefresher的refreshrefreshEnvironmentaddConfigFilesToEnvironmentchanges获取新老之间有...原创 2020-04-26 21:39:59 · 4479 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之三十八@RefreshScope详解四
Spring Cloud 2.2.2 源码之三十八@RefreshScope详解四容器的5个scopeRefreshScope的对象获取RefreshScope的getBeanLifecycleWrapper的getBean有请求来的时候LockedScopedProxyFactoryBean的invoke容器的5个scopeRefreshScope的对象获取继续上篇,创建对象,不是单例,...原创 2020-04-26 20:33:09 · 856 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之三十七@RefreshScope详解三
Spring Cloud 2.2.2 源码之三十七@RefreshScope详解三ScopedProxyFactoryBean的setBeanFactoryLockedScopedProxyFactoryBean的setBeanFactoryRefreshScope的eagerlyInitializeScopedProxyFactoryBean的setBeanFactory下面就开始创建这个...原创 2020-04-26 20:32:46 · 911 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之三十六@RefreshScope详解二
Spring Cloud 2.2.2 源码之三十六@RefreshScope详解二RefreshScopeGenericScope的postProcessBeanDefinitionRegistryRefreshScope的注册AbstractBeanFactory的registerScope注册scope处理器LockedScopedProxyFactoryBean初始化的setBeanFact...原创 2020-04-26 20:32:08 · 875 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之三十五@RefreshScope详解一
Spring Cloud 2.2.2 源码之三十五@RefreshScope详解一@RefreshScope作用@Scope回顾这个的作用ClassPathBeanDefinitionScanner的doScanAnnotationConfigUtils的applyScopedProxyModeScopedProxyUtils的createScopedProxy@RefreshScope作用主...原创 2020-04-26 20:31:40 · 2176 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之三十四nacos客户端LongPollingRunnable配置更新二
Spring Cloud 2.2.2 源码之三十四nacos客户端LongPollingRunnable配置更新二获取更新的配置文件通知监听器CacheData的checkListenerMd5safeNotifyListener通知监听器处理获取更新的配置文件前面的checkUpdateDataIds只是获取有更新的配置文件名,不是配置文件内容,所以后面还要去判断哪些有更新,再去获取内容。这...原创 2020-04-26 20:31:01 · 903 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之三十三nacos客户端LongPollingRunnable配置更新一
Spring Cloud 2.2.2 源码之三十三nacos客户端LongPollingRunnable配置更新一ClientWorker的checkConfigInfoLongPollingRunnable的runcheckLocalConfig检查本地配置checkUpdateDataIds获取有改变的配置文件checkUpdateDataIds服务器获取ClientWorker的check...原创 2020-04-26 20:30:25 · 2252 阅读 · 7 评论 -
Spring Cloud 2.2.2 源码之三十二nacos客户端NacosContextRefresher
Spring Cloud 2.2.2 源码之三十二nacos客户端NacosContextRefresher自动同步配置的实现registerNacosListenersForApplications给所有配置设置监听器registerNacosListener注册监听器到配置服务NacosConfigService的addListener配置服务添加监听器ClientWorker的addTena...原创 2020-04-25 22:08:12 · 1819 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之三十一nacos客户端获取配置原理六
Spring Cloud 2.2.2 源码之三十一nacos客户端获取配置原理六NacosConfigAutoConfigurationNacosRefreshHistoryNacosRefreshProperties(废弃了)NacosContextRefresherNacosConfigEndpointAutoConfigurationNacosConfigEndpointNacosConfi...原创 2020-04-25 22:07:07 · 621 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之三十nacos客户端获取配置原理五
Spring Cloud 2.2.2 源码之三十nacos客户端获取配置原理五PropertySourceBootstrapConfiguration的initialize尾巴NacosConfigAutoConfigurationNacosConfigProperties从老上下文中获取其他重新创建PropertySourceBootstrapConfiguration的initialize尾...原创 2020-04-24 21:44:30 · 664 阅读 · 0 评论 -
Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四
Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四MetricsHttpAgent的httpGetServerHttpAgent的httpGetHttpSimpleClient的httpGet状态码处理结果处理解析MetricsHttpAgent的httpGet封装了一层计时,内部还是HttpAgent去请求。 @Override public H...原创 2020-04-24 21:44:08 · 1645 阅读 · 0 评论