SpringBoot服务数据热更新方案参考

背景

笔者最近在维护一个基于地图数据的服务,为了给用户提供更好的服务,数据的更新频次会逐步增加。数据格式本身是基于protobuf的,鉴于其良好的格式兼容性,大多数升级中服务本身是不需要调整的。从服务角度来说,数据热更新呼之欲出。本文探讨一种解决思路,并总结下其中发现的问题。

技术栈

Java + SpringBoot

总体思路

  1. 数据API(暂且叫DataAPI),定义出数据内容访问接口,从而将API与具体的实现对象分离,当然有时候其中会有ADataAPI,BDataAPI;
  2. 数据API工厂(暂且叫DataAPIFactory),其中包含所有版本的数据API实例,但每次仅从中获取最新实例,历史的实例在不需要的时候销毁掉;(显然这里是问题的关键)
  3. 上层服务依赖DataAPIFactory,作为统一入口;

思路落地

  1. DataAPI,将数据本身依赖的内容当做一个完整的模组,其中包含依赖等内容,想到这里,这也是个小的应用上下文;
  2. DataAPIFactory,其中包含多个DataAPI实现,这也是个小的应用上下文;
  3. 咱们的整个服务相关的实例在一个更大的上下文中,接下来探讨下这些上下文的关系。显然,DataAPIFactory由于被上层服务直接依赖,因此与整个服务的应用上下文是一致的,于是整个服务就划分为2个应用上下文,Data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值