
apollo源码专栏
文章平均质量分 71
无唯~
这个作者很懒,什么都没留下…
展开
-
Apollo源码解析——集成到springboot
`ApolloApplicationContextInitializer`实现了两个接口`ApplicationContextInitializer`和`EnvironmentPostProcessor`,`Spring Boot`启动过程,会先调用`EnvironmentPostProcessor.postProcessEnvironment`方法,再调用`ApplicationContextInitializer.initialize`方法。也就是`Spring Boot`优先准备环境,再初始化容器。.原创 2022-06-03 15:51:57 · 1013 阅读 · 0 评论 -
Apollo源码解析——客户端通知配置变化(客户端长轮询请求接口)
文章目录一、概述二.代码流程一、概述在之前讲解配置发布的时候,NotificationControllerV2 得到配置发布的 AppId+Cluster+Namespace 后,会通知对应的客户端 ,实现在handleMessage方法中具体的实现流程是:客户端发起长轮询请求NotificationControllerV2不会立即返回结果,而是通过Spring Deferredresult把请求挂起。如果60s没有客户端关心的配置发布,那么就会返回403给客户端如果有客户端关心的配置,N原创 2022-05-29 22:47:32 · 631 阅读 · 0 评论 -
Apollo源码解析——ConfigService配置读取接口(客户端定时拉取接口)
文章目录一、概述二、代码流程一、概述上文讲了客户端定时轮询的接口,这里我们看下Config Service配置读取的接口的实现。二、代码流程1. ConfigController#queryConfig方法代码很长,但是大体流程就是根据客户端的参数从服务端查询出来最新的配置,然后根据clientSideReleaseKey和服务端的ReleaseKey进行比较,判断配置有没有更新,这里重点看下loadConfig方法,怎么加载最新的配置 @GetMapping(value = "/{原创 2022-05-29 21:46:26 · 1461 阅读 · 0 评论 -
Apollo源码解析——Client轮询拉取配置
文章目录一、概述二.代码流程一、概述Client的轮询包括两部分:RemoteConfigRepository,定时轮询Config Service的/configs/{appId}/{clusterName}/{namespace} 接口的配置读取RemoteConfigLongPollService 长轮询 Config Service的配置变更通知 /notification/v2接口二.代码流程1. AbstractConfigRepository#trySync方法客户原创 2022-05-29 21:14:28 · 524 阅读 · 0 评论 -
Apollo源码解析——配置发布
文章目录一、概述二、页面流程2.代码流程总结一、概述配置发布流程二、页面流程这里我们提交新增的配置会请求后台的release接口2.代码流程看下portal模块下的ReleaseController#createRelease方法这里首先做操作校验,然后调用releaseService.publish方法发布配置,最后广播出去事件 @PreAuthorize(value = "@permissionValidator.hasReleaseNamespacePermi原创 2022-05-29 18:14:08 · 665 阅读 · 0 评论 -
Apollo源码解析——配置项创建
文章目录一、概述二、页面流程2.代码流程一、概述配置项也称为item,是Namespace下最小颗粒度的单位创建一个item的流程二、页面流程这里我们在页面上创建一个配置项会请求后台的item接口2.代码流程看下portal模块下的ItemController#createItem方法这里首先做操作校验,然后调用releaseService.publish方法发布配置,最后广播出去事件 @PreAuthorize(value = "@permissionValid原创 2022-05-29 14:27:55 · 235 阅读 · 0 评论 -
Apollo源码解析——锁定Namespace
文章目录一、概述二、创建流程1.页面流程2.代码流程一、概述锁定Namespace,可以设置 ConfigDB 的 ServerConfig 的 "namespace.lock.switch" 为true,开启后配置的修改和发布是互斥的,就是你修改了配置,但是发布需要另外一个人来发布。二、创建流程1.页面流程2.代码流程patrol模块下的NamespaceController#createAppNamespace保存AppNamespace到数据库发布AppNames原创 2022-05-29 13:47:05 · 442 阅读 · 0 评论 -
Apollo源码解析——创建NameSpace
文章目录一、概述二、创建流程1.页面流程2.代码流程一、概述Patrol创建Namespace的流程二、创建流程1.页面流程2.代码流程patrol模块下的NamespaceController#createAppNamespace保存AppNamespace到数据库发布AppNamespaceCreationEvent 创建事件 @PreAuthorize(value = "@permissionValidator.hasCreateAppNamespacePe原创 2022-05-28 23:45:48 · 1106 阅读 · 0 评论 -
Apollo源码解析——创建Cluster
文章目录一、概述二、创建流程1.页面流程2.代码流程一、概述Patrol创建Cluster的流程二、创建流程1.页面流程2.代码流程ClusterController#createCluster这里设置了创建和修改人为当前管理员,然后创建Cluster @PreAuthorize(value = "@permissionValidator.hasCreateClusterPermission(#appId)") @PostMapping(value = "apps/原创 2022-05-28 23:04:23 · 386 阅读 · 0 评论 -
Apollo源码解析——创建App
文章目录前言一、概述二、创建流程1.页面操作2.后台代码:总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、概述创建流程二、创建流程1.页面操作示例如下:2.后台代码:AppController#apps方法在接到请求后,首先将app对象转成model对象,然后写库,发布app创建的事件出去。 public App create(@V.原创 2022-05-28 22:44:54 · 330 阅读 · 0 评论 -
Apollo源码解析——源码环境搭建
Apollo源码解析之源码环境搭建前言本文讲解如何搭建apollo源码阅读环境,详细步骤可参考官网:Apollo开发指南一、下载源码地址:https://github.com/apolloconfig/apollo二、执行数据库脚本三、启动ConfigService和AdminService1.启动Eureka(依赖eureka提供服务注册功能)这里我已经启动在本地的8080端口了2.启动ConfigService和AdminService启动入口:com.ctrip.fr原创 2022-05-28 19:15:49 · 1005 阅读 · 0 评论