大家好,我是三友~~
最近突然心血来潮(就是闲的)就想着撸一个简单的配置中心,顺便也照葫芦画瓢给整合到SpringCloud 。
本文大纲
文章插图
配置中心的概述【撸了一个简易的配置中心,顺带整合到了SpringCloud】随着历史的车轮不断的前进,技术不断的进步,单体架构的系统都逐渐转向微服务架构 。虽然微服务架构有诸多优点,但是随着越来越多的服务实例的数量,配置的不断增多,传统的配置文件方式不能再继续适用业务的发展,所以急需一种可以统一管理配置文件应用,在此之下配置中心就诞生了 。
所以配置中心就是用来统一管理各种服务配置的一个组件,本质上就是一个web应用 。
配置中心的核心功能一个配置中心的核心功能其实主要包括两个:
- 配置的存取
- 配置变更的通知
配置变化的通知也是一个很重要的功能,一旦配置中心的配置有变动的话,那么使用到这个配置的客户端就需要知道这个配置有变动,从而可以做到相应的变动的操作 。
手撸一个简易的配置中心上文分析了一个配置中心的核心功能,接下来就实现这两个核心的功能 。
一、文件工程整体分析
文章插图
文件工程整体分为客户端与服务端
- 服务端:单独部署的一个web应用,端口是8888,提供了对于配置增删改查的http接口
- 客户端(SDK):业务系统需要引用对应的依赖,封装了跟服务端交互的代码
public class ConfigFile { private String fileId; private String name; private String extension; private String content; private Long lastUpdateTimestamp;}
- fileId: 文件的唯一id,由配置中心服务端在新增配置文件存储的时候自动生成,全局唯一
- name: 就是文件的名字,没有什么要求,见名知意就行
- extension: 文件后缀名,指的是该配置是什么类型的文件,比如是properties、yml等
- content: 就是配置文件的内容,不同的后缀名有不同的格式要求
- lastUpdateTimestamp: 上一次文件更新的时间戳 。当文件存储或者更新的时候,需要更新时间戳,这个字段是用来判断文件是否有改动
public interface ConfigFileStorage { void save(ConfigFile configFile); void update(ConfigFile configFile); void delete(String fileId); ConfigFile selectByFileId(String fileId); List<ConfigFile> selectAll();}
这个接口提供了对于配置存储的crud操作,目前我已经实现了基于内存和磁盘文件的存储的代码文章插图
可以在项目启动的时候,在配置文件指定是基于磁盘文件存储还是基于内存存储,默认是基于磁盘文件存储 。
经验总结扩展阅读
- 闲鱼小法庭9票是不是赢了 闲鱼小法庭结束后在哪里查看记录
- 亚洲第一个举办奥运会的国家是?
- 蛋挞液除了做蛋挞还可以做什么
- 家里停水了能开空调吗
- 素士w3冲牙器坏了怎么拆开修理_素士w3冲牙器的拆解
- 为什么红薯粉煮了20分钟还硬
- 五行缺水最吉利的名字女孩 五行缺木缺水最吉利的女孩名字
- 美容美甲店名字大全 时尚ins美甲店名字大全
- 冻香肠煮20分钟熟了吗
- 思绪摇摆还是对你冷不起来对你充满了期待是什么歌