监控业务技术体系
2022-01-22 16:23:38 0 举报
AI智能生成
登录查看完整内容
监控业务技术体系
作者其他创作
大纲/内容
.Net5.0
Asp.Net Core
Nebula.Net 框架
基础设施
应用程序池采集
虚拟内存、电源配置、安装程序(注册表)
系统配置信息采集
采集服务器基本环境
进程采集
ManagementObjectSearcher
数据库可用性
SqlServer采集
数据库相关采集
数据库操作相关
网络采集
CPU采集
磁盘信息采集
内存采集
PerformanceCounter
windows事件采集
EventLog
NAS采集
Win32API
windows服务采集
ServiceController
SingleR、WebSocket
Quartz.net
服务寄宿
加密、解密
...
AgentX客户端
HttpOption
Redis
Kubernetes
Docker
Nginx
Mysql
SqlServer
数据库
IIS、tomcat...
Web站点
Windows服务
Mongodb
业务方向
配置服务、数据查询服务
Remote DIctionary Server(远程字典服务器)
单进程单线程,对外提供插入-查询-固化-集群
get key
set key value
select index(选择redis库)
基本操作命令
client.Get<String>(\"name\") 读出来的字符串没有引号
key-value 缓存 value 不超过512M
Add (不能覆盖) Set
String
节约空间,更新方便
Hash数据很像关系型数据库的一张表的一行数据
不建议放大量数据(hash冲突)
一个 hashId 对应了一组 key value(Dictionary)
Hash
可以直接基于Redis 进行 交 差 并 数学集合运算
典型应用 找共同好友
一个key 对应多个value
随机获取Set里面的一个值
随机删除Set里面的一个值
集合 无序 去重
Set
Redis-IncrementItemInSortedSet(添加一项,分数自动叠加,并且排序)
基于有序集合排序(做实时排行榜))
有序 集合 去重
根据Score排序
ZSet
RPush(队列 先进先出)
Add 栈 先进后出
第一次不管分页,只拿最新数据
Id+Title 写入Redis 加一个TrimList 只要最近多少个
List 分页
发布订阅:发布一个数据,全部订阅者都能收到(观察者模式)
一个程序写入,多个订阅者都能收到
Redis无法对消息持久化存储,一旦消息被发送,如果没有订阅者接收,那么消息就会丢失
List
BitMaps
hyperlogss
streams
5种数据结构(底层8种,对使用者5种)
不会做任何等待,发完命令就做下一个事件,单线程都是事件驱动
node js
要么都成功,要么都失败,不会出现中间状态 事务
原子性操作
redis 命令都是原子性(因为单线程)
单线程模型
限制 收费 1小时3600次
Decr Redis 命令 直接返回数值减1
直接修改源码 去掉限制
ServiceStack
免费
StackExchange
操作Redis包
查询 判断 更新 不是原子性
DecrementValue Redis 命令 直接返回数值减1 原子性IncrementValue Redis 命令 直接返回数值加1 原子性
单一化原则+秒杀服务集群+Redis集群+消息队列+读写分离+前端限流+静态资源多级缓存策略(cdn、反向代理、客服端缓存)+网关限流降级熔断
撤单的时候增加库存,可以继续秒杀
内存缓存(采用Redis)
消峰(可以采用消息队列(RabbitMq)))
限流(服务端可以采用网关(Ocelot)))
超卖问题(秒杀)
可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,避免对数据库查询压力
(简单方式)查询结构为空,任然进行缓存,但是有效时间会很短
解决方案 布隆过滤器
请求key不存在,从而请求到数据库
缓存穿透
请求key存在,过期,从而请求到数据库
缓存击穿
定时刷新缓存/手动刷新
缓存预热
缓存服务器,重启,或者大量同一时间失效
缓存雪崩
定时去清理过期的缓存
有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存
缓存更新
请求量加大,进行缓存降级
缓存降级
缓存
Redis里面加入一个字段(要设置过期时间,避免死锁),这个字段有值表示当前操作正在进行,没有表示可以进行操作
分布式锁
select(轮询 1014)
poll(轮询)
Epoll(回调)(linux 系统使用的EPoll)
IO多路复用
dictory:File:Name (Redis 会通过:分离给你建立文件结构)
跳跃表(数据结构)
rediss事务不支持回滚
Watch类似于乐观锁
事务和Watch一起用
如果用事务,事务里面所有用到的Key都要Watch包含
一致性:没有提交 进去 就没有回滚
事务(ACID))
BgSave 持久化
配置文件策略保存
只要有读写
1 s 钟周期(常用)
等系统空闲
三种追加方式(AOF))
AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)
AOF(数据安全性、持久性)
(优点)RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份:
(缺点)如果你需要尽量避免在服务器故障时丢失数据,那么 RDB 不适合你
RDB(备份、数据恢复)
如果可以接受部分时间段数据丢失,RDB就足够了如果不可以接受数据丢失,AOF 和 RDB 一起
两种持久化模式
持久化
主从复制
分片
高可用
集群
读写分离
主从
能实现 高可用
哨兵
【redis主从】:是备份关系, 我们操作主库,数据也会同步到从库。 如果主库机器坏了,从库可以上。就好比你 D盘的片丢了,但是你移动硬盘里边备份有。【redis哨兵】:哨兵保证的是HA,保证特殊情况故障自动切换,哨兵盯着你的“redis主从集群”,如果主库死了,它会告诉你新的老大是谁。【redis集群】:集群保证的是高并发,因为多了一些兄弟帮忙一起扛。同时集群会导致数据的分散,整个redis集群会分成一堆数据槽,即不同的key会放到不不同的槽中。
三种模式
MessageHandler
消息订阅
RabbitMq
Identity Server4 、JWT
CacheItem<T>CacheDictionary<T>AppCache
CPQuery
XmlCommand
Linq
事务
SaaSConnection
Nebula.net 提供的ORM
实体代理类型生成原理
Background Task
Mysql、SqlServer、influxDb、Es
Mail、企业微信、短信通知
阿里云服务相关
微服务
JQuery
Vue.js、VueX、Vue-router
axios
Element UI相关组件
Echarts、HighCharts
前端
监控业务技术体系
0 条评论
回复 删除
下一页