微服务监控平台-缓存设计

一,架构图及其说明

1,UI数据:页面

2,一级缓存:内存

3,二级缓存:硬盘文件系统

4,定时任务:同步数据库与缓存中的数据

5,数据源:数据库

二,场景分析

加缓存之前的数据信息流:

浏览器发出数据请求后,服务器后端接收到数据请求,开始通过数据源连接读取各种数据后,通过业务逻辑层处理成需要的逻辑数据后返回给浏览器。浏览器更新数据模型展现数据。

三,上述场景存在的问题

1、  每次获取数据都要走相同的数据流程来获取数据,如果遇到源数据宕机、或者逻辑性能降低情况时页面效果会非常的差。

2、  每次获取到数据后都要进行相同的数据逻辑处理,浪费性能。

3、  获取到的数据可能并没有发生变化,但是每次都产生了不必要的浪费。

四,缓存方案选择

1,划分的原则:业务场景

2,常见方案:

  1)一级缓存+二级缓存;

  2)一级缓存;

3,实现方式:

  1)一级缓存可以采用HashTable的方式来进行数据存储。不同的页面可以创建不同的HashTable对象,页面的不同信息块创建不同的Key值,将逻辑层处理好的JSON数据作为Value来存放。当信息块更新数据时,通过Key值可以直接获取到JSON数据。如果是这个页面的数据刷新则直接将HashTable的数据序列化为JSON返回即可。

2) 二级缓存基于本地文件系统,将数据序列化为JSON后写入文本文件即可。一个页面信息块一个JSON文本文件。

3)缓存元数据是用来二级缓存中的文件片同一级缓存中HashTable及Keyd的映射关系。如果数据较少,可以将映射关系写死在程序中。

4)定时任务,是将源数据的相关数据通过定时单线程方式获取数据后通过业务逻辑层将数据加工成信息块需要的JSON数据后,将数据更新到一级缓存和二级缓存。定时任务需要注意:不能使用固定时间启动方式,比如说一秒钟启动一次,这种方式是不稳定的。因为如果数据源及加工数据的时间超过了固定启动时间,会早点线程阻塞引发线程安全问题。所以最好采用长轮训机制,在每次轮训过程中增加等待时间,确保每个时间点有且仅有一个线程在获取数据。

4,根据使用场景选择合适的缓存方案:

(1)页面数据的刷新频率较高可以采用一级缓存加二级缓存的方式。通过增加一级缓存减少磁盘IO频次,从而提高性能,提高页面效果。

  (2)页面数据量较大为降低内存消耗,是不能使用一级缓存的。只能使用二级缓存来提高性能。例如:日志的分页数据首加载、实例分页数据的首加载,这样的场景式不能使用一级缓存的。

5,更多处理方式

(1)唯一签名处理:另外为避免频繁的内存和磁盘IO,最好对数据做唯一签名处理,即对序列化后的JSON数据做MD5加密,获取数据唯一签名。这样做的好处是可以根据MD5值来判断是否数据发生了变化,如果获取数据的MD5值和缓存中数据的MD5值不同则说明数据发生了变化,需要更新缓存数据。如果MD5值相同,则不需要更新缓存数据。

原文地址:https://www.cnblogs.com/excellencesy/p/12529857.html

时间: 2024-09-29 11:08:59

微服务监控平台-缓存设计的相关文章

Actuator + Prometheus + Grafana搭建微服务监控平台

[TOC] 前言 关于Actuator: 对Spring Boot监控能力有过了解的小伙伴都应该知道Spring Boot Actuator这个子项目,它为应用提供了强大的监控能力.从Spring Boot 2.x开始,Actuator将底层改为Micrometer,提供了更强.更灵活的监控能力.Micrometer是一个监控门面,可以类比成监控界的 Slf4j .借助Micrometer,应用能够对接各种监控系统,例如本文所要介绍的:Prometheus 关于Prometheus : Prom

微服务的4个设计原则和19个解决方案

转载本文需注明出处:微信公众号EAWorld,违者必究. 微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活.更能适应现在需求快速变更的大环境. 本文将介绍微服务架构的演进.优缺点和微服务应用的设计原则,然后着重介绍作为一个"微服务应用平台"需要提供哪些能力.解决哪些问题才能更好的支撑企业应用架构. 微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以SpringCloud为基础,结合了普元多年来对企业应用的理

微服务的4大设计原则和19种解决方案

微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活.更能适应现在需求快速变更的大环境. 本文将介绍微服务架构的演进.优缺点和微服务应用的设计原则,然后着重介绍作为一个"微服务应用平台"需要提供哪些能力.解决哪些问题才能更好的支撑企业应用架构. 微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以SpringCloud为基础,结合了普元多年来对企业应用的理解和产品的设计经验,逐步孵化的一个微服务应用平台. 目录:

微服务监控案例之一

     首先,您需要了解什么是微服务架构设计,同时了解相关微服务与Docker介绍, 微服务架构的本质,是把整体的业务拆分成很多有特定明确功能的服务,通过很多分散的小服务之间的配合,去解决更大,更复杂的问题.对被拆分后的服务进行分类和管理,彼此之间使用统一的接口来进行交互.      微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错误和异常,我们只要盯住一个点,就可以快速定位和处理问题,但是在微服务的架构下,大部分功能模块都是单独部

宜信开源微服务任务调度平台(SIA-TASK)

背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.常常需要一些任务调度系统帮助开发者解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此的背景下,很多原先的任务调度平台已经不能满足业务系统的需求.于是出现了一些基于分布式的任务调度平台.这些平台各有其特点,但各有不足之处,比如不支持任务编排.与业务高耦合.不支持跨平台等问题.非常不符合新一代微服务架构的需求,因此宜信公司开发了微服务任务调度平台(SIA-TASK). SIA是宜信公司基础开发平台Simpl

宜信微服务任务调度平台建设实践|分享实录

本文主要围绕SIA平台展开,包括研发背景设计思路和技术架构,以及如何支持业务方. 内容来源:宜信技术学院第4期技术沙龙-线上直播|宜信微服务任务调度平台建设实践 主讲人:宜信高级架构师&开发平台负责人 梁鑫 导读:如今,无论是互联网应用还是企业级应用,都充斥着大量的批处理任务,常常需要一些任务调度系统帮助我们解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构. 在此背景下,很多之前的任务调度平台已经不能满足业务系统的需求,于是出现了一些基于分布式的任务调度平台.这些平台各

Jenkins-k8s-helm-harbor-githab-mysql-nfs微服务发布平台实战

基于 K8S 构建 Jenkins 微服务发布平台 实现汇总: 发布流程设计讲解 准备基础环境 K8s环境(部署Ingress Controller,CoreDNS,Calico/Flannel) 部署代码版本仓库Gitlab 配置本地Git上传测试代码,创建项目到Gitlab 部署pinpoint 全链路监控系统(提前修改Dockerfile,打包镜像上传) 部署镜像仓库Harbor(开启helm仓库) master节点部署helm应用包管理器(配置本地helm仓库,上传helm包) 部署K8

企业运维监控平台架构设计与实现(ganglia篇)

一.Cacti/Nagios/Zabbix/centreon/Ganglia之抉择 1.cacti Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. 简单的说Cacti 就是一个PHP 程序.它通过使用SNMP 协议获取远端网络设备和相关信息,(其实就是使用Net-SNMP 软件包的snmpget 和snmpwalk 命令获取)并通过RRDTOOL 工具绘图,通过PHP 程序展现出来.我们使用它可以展现出监控对象一段时间内的状态或者性能趋势图. 2

mPass 微服务开发平台

mPass (Microservice Pass) 基于SpringBoot2.x.SpringCloud并采用前后端分离的企业级微服务,多租户系统架构微服务开发平台 mPaaS(Microservice PaaS)为租户业务开发.测试.运营及运维开源框架,能有效降低技术门槛.减少研发成本.提升开发效率,协助企业快速搭建稳定高质量的微服务应用;同时还集合各种微服务治理功能和监控功能.模块包括:企业级的认证系统.开发平台.应用监控.慢sql监控.统一日志.单点登录.Redis分布式高速缓存.配置中