Influxdb数据库是互联网级监控系统
Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性:
时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
度量(Metrics):对实时大量数据进行计算;
事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作
Influxdb数据库的使用场景:
1. 实时采集监控数据,按时间写入Influxdb
2. 按不同纬度聚合查询监控数据,用于监控展现
3. 持续查询,定时归集指定时间的数据,用于更大时间范围监控数据的展现
4,......
from django.conf import settings
from django.core.cache.backends.base import BaseCache
from influxdb import InfluxDBClient
'''BaseCache是自定义缓存的基类 '''
class Cache(BaseCache):
def __init__(self, server, params):
super(Cache, self).__init__(params)
self._client = InfluxDBClient(**settings.INFLUXDB)
def get(self, sql, default=None, version=None, **kwargs):
return self._client.query(sql, **kwargs)
def set(self, json, default=None, version=None, **kwargs):
return self._client.write_points(json, **kwargs)
def delete_series(self, measurement=None, tags=None):
return self._client.delete_series(measurement=measurement, tags=tags)
在项目之中 influx 的使用是与自定义缓存配合使用的:
django 自定义的缓存:
CACHES = {
'default': {
'BACKEND': 'antilles.common.cache.Cache',
}
}
对缓存的使用!
_GPU_SQL = """\
SELECT LAST(value) as value FROM node_gpu_mem_pct;
"""
cache.get(_GPU_SQL)
执行流程:
1,创建缓存的过程是:
1,导入配置文件,根据指定的参数调用指定缓存类的方法,比如 cache.get会调用指定类的get方法
2,缓存使用线程变量 threading.local() ,当前线程的全局变量
3,创建缓存完成存储到 self._caches.caches[alias] 之中 下一次查询先在这里寻找