saas产品私有化(一) 缓存中间件适配

news/2024/10/30 17:20:58/

一.背景

        名词解释:私有化一般指的是在对客交付过程中,客户由于自身数据敏感,成本控制等原因要求交付乙方将售卖的服务利用现有甲方的硬件设备或者云服务进行服务的部署.

    面向场景:一般特制的是saas化的云服务软件提供商的对特殊客群的场景.其中saas行业中比较起步和规模比较大的比如:sales force, 用友等.

   遇到的问题:那么在具体实施过程中,对于复杂的云环境,不同的云厂商提供的基础设施的要求这时候都变成了反向要求.因为这时候客户是上帝,面向"上帝"交付变成了不得不. 换言之其实对于技术的挑战则随之而来,第一个需要考虑的则是不同的技术中间件如何在通过一套的产品服务实现差异化透明.用DDD的话来说就是如何真正的解除业务对于技术细节的依赖.

二.缓存中间件解决方案

2.1 实现方案

     针对以上背景与问题.可以得到在某一个中间件私有化过程中.要做到的目标是在产品落地的环节通过解耦+适配来解决中间件细节依赖.以此做到解决方案的轻量化部署,而不是不同产品,不同实现的定制化研发(坏味道).那对于缓存来说,目前市面上常见的产品有Redis,memcache,ehcache,本地cache(guava,caffeine),如果把MongoDB也算上的话.种类比较多.对于使用方来说本质上的区别并不大,更多的是不同场景,不同技术选型的选择.

2.1.1 解耦

     不知道是哪一位计算机老师曾经说过,计算机世界的大多数问题大多都可以通过增加一层来解决.那其实在这里也不妨套用同样的思路.

     在不同缓存产品对接过程中,通过增加一个接口来实现技术实现方和调用方的解耦.

如下图:

在这里插入图片描述

2.1.2 适配

如上解决了第一个问题之后,接下来其实就是适配的问题.从代码的角度.这里其实解决方案很多.这里从开发的角度尽可能的选择了一个相对来说比较简单理解的方案.具体我也不知道是什么模式.(多讲一句,其实不论是具体哪些设计模式无外乎都是设计的6个原则围绕展开.不知道是哪些人编写了23种设计模式,还让我们这些后来的学习中绞尽脑汁半夜苦读).回到适配本身的问题,那我们尽可能是要解决在适配未来的过程中,尽可能的对增加开放,修改关闭,一个类完成一个类的事情(单一职责).所以就有下面这个图.

在这里插入图片描述

2.1.2.1 AbstractCacheClientManager

持有抽象cacheClient的引用.并生产决定具体使用哪一个client

在这里插入图片描述

2.1.2.2 AbstractCacheClient

抽象client 对象中常见的方法和属性.

在这里插入图片描述
目前是适配了三个比较常见的client .JimDBCacheClient(XX公司自研产品),RedisCacheClient(Redis产品),LocalCacheClient(本地缓存目前是简单的Map版)

2.1.2.3 RcCommonProperties

抽象了基本的配置类,最后发现其实配置比较个性化.暂且先保持抽象的能力.给未来留一手
那现在基本是仅有RcRedisProperties的实现.

2.2 使用

2.2.1 spring.factories 形式三方加载

这个方式比较常见,还有其他几种类型.算是springBoot比较香的功能.利用这个功能可以比较方便的插入一些自定义的插件.透明切入在这里插入图片描述

2.2.2 common.properties 配置支持灵活

rc.core.cache.commonCacheSwitch=redis|local|jimDB

通过配置文件开启指定的缓存适配方案


http://www.ppmy.cn/news/230776.html

相关文章

爱奇艺主界面

HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>爱奇艺</title><link href"爱奇艺.css" type"text/css" rel"stylesheet"/> </head> <body…

音频播放卡顿优化

背景 音乐播放过程中,进行高CPU操作时,后台音乐播放出现卡滞。 分析 1、日志分析 日志中audioserver出现“AudioFlinger: underrun”的打印 05-27 15:35:00.186 396 777 W AudioFlinger: underrun, framesReady(0) < framesDesired(289), state: 6 05-27 15:35:0…

Android的UI卡顿

这篇文章我们主要从3个方面分析&#xff1a; 1.UI卡顿的原理 2.UI卡顿的原因分析 3.卡顿的总结 来看第一部分&#xff0c;UI卡顿的原理&#xff1a; 先来看下这样一个数字; 60fps -> 16ms 其实用户所感受到的卡顿的问题主要是来源于安卓的渲染性的问题。 我们的UI设…

直播视频卡顿延迟时如何优化

视频直播视频缓存 【摘要】 试想一下&#xff0c;当你和朋友进行视频时&#xff0c;这时突然画面卡住不动了&#xff0c;而且声音变得断断续续&#xff0c;是不是会感到特别的尴尬&#xff1f;为了避免这些情况&#xff0c;那么在直播app开发过程中&#xff0c;针对于延迟&…

常见的电脑运行卡顿原因及解决方法

大家在日常使用电脑过程中&#xff0c;会发现多开几个文件就卡顿&#xff0c;其实很多时候都跟C盘长期不清理有关&#xff0c;C盘的内存被下载的软件安装包、页面文件、休眠文件、更新文件等一系列的文件占据。大的文件甚至能占到20-30G&#xff0c;驱动人生就为大家带来几种解…

CSS3 动画卡顿解决方案

前端时间用 animation 实现 H5 页面中首页动画过渡&#xff0c;很简单的一个效果&#xff0c;首页加载一个客服头像&#xff0c;先放大&#xff0c;停留 700ms 后再缩小至顶部。代码如下 <!DOCTYPE html> <html> <head lang"zh-cn"><meta char…

电脑为什么这么卡?6个方法处理电脑卡顿

你是否打开电脑就卡到不行&#xff1f;电脑的开机速度慢&#xff0c;就连打开网页也在转圈圈&#xff0c;一直加载不出来。世界上最痛苦的事莫过于此&#xff0c;想要好好工作&#xff0c;却一直加载不出网页。你知道电脑为什么这么卡吗&#xff1f;其实大多数的原因都在这篇文…

App卡顿的原因及解决方案

卡顿现象对我们来说是一个很烦恼的问题&#xff0c;也会给用户使用过程中带来很直观的不良感受&#xff0c;主要是由代码、内存不足等问题引起的常规卡顿和ANR异常&#xff0c;我们可以使用“友盟u-apm”这款工具进行监测&#xff0c;利用线上和线下相结合的方式全覆盖监测卡顿…