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