常用架构
面对分库分表可能join的操作,容易造成内存不够,引入es(数据异构 + 宽表),实现读写分离
日志采集(ELK,Logstash(日志收集过滤)、Elasticsearch、Kibana(可视化))
基础
数据结构
数组:rocketmq索引文件与数据文件分离,数据文件顺序写入保证高性能,索引文件是定长的(包含数据文件的偏移位置,长度和tag字段,tag字段不是定长的,为了利用数字快速访问的特点,tag字段存储的tag的hash值保证定长)
HashMap:哈希表(数组)和链表(红黑树)的结合,扩容尾插法
TreeMap(有序):rocketmq中实现一致性hash算法;TreeMap 的 TailMap 是返回大于等于 key 的子树,然后调用子树的 firstKey 获取 TreeMap 中最小的元素,符合一致性哈希算法的命中规则
LinkedHashMap:LRU,LinkedList和HashMap的结合,在HashMap的基础上加了before和after指针保证顺序性(按节点插入顺序默认的,或者按照节点访问顺序),实现LRU
PriorityQueue:数组存储,通过父子节点的关系来计算位置;JUC定时任务调度ScheduledExec