本文基于nacos-2.0.3版本
本文分析nacos服务端保存配置数据的原理。
通过上一篇文章《nacos解析-客户端是如何拉取配置信息的》我们知道了客户端通过http协议将请求发送到服务端,链接的URL为:
http://127.0.0.1:8848/nacos/v1/cs/configs
通过URL的path我们很容易在服务端找到处理该请求的类:ConfigController。该类位于config模块下,通过名字就可以知道该模块用于配置管理。
ConfigController提供了对配置的增删改查方法,比如,保存配置的方法是publishConfig(),查询配置的方法是getConfig(),本文主要分析publishConfig()方法。
下面是publishConfig()方法的源码。
@PostMapping//采用restful风格,post请求会调用该方法
@Secured(action = ActionTypes.WRITE, parser = ConfigResourceParser.class)
public Boolean publishConfig(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "dataId") String dataId, @RequestParam(value = "group") String group,
@RequestParam(value = "tenant", required = false, defaultValue = StringUtils.EMPTY) String tenant,
@RequestParam(value = "content") String content, @RequestParam(value = "tag", required = false) String tag,
@RequestParam(value = "appName", required = false) String appName,
@RequestParam(value = "src_user", required = false) String srcUser,
@RequestParam(value = "config_tags", required = false) String configTags,
@RequestParam(value = "desc", required = false) String desc,
@RequestParam(value = "use", required = false) String use,
@RequestParam(value = "effect", required = false) String effect,
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "schema", required = false