摘要:
四层负载和七层负载 四层负载根据四层网络信息如IP、端口进行负载,可以识别同一IP或同一端口的负载到某个Real Server节点上,常用的四层负载有LVS等; 七层负载在四层负载的基础上,还支持七层网络信息即应用信息如URL、邮件地址等进行负载,常用的七层负载有Nginx等; 常用负载均衡算法 1 阅读全文
摘要:
Znode: 1、Znode既是路径(目录)也是信息(文件) 2、Znode有两种分类:一分为临时节点(会话生命周期)和永久节点;二分为普通节点和顺序节点 Watch: 1、监听与通知机制,可以在节点上监听其本身(增、删、改)或其子节点(增、删)事件 2、代码上通过exist、getData、get 阅读全文
摘要:
架构师进行高性能RPC框架选型时,主要考虑以下因素: 1、I/O调度模型 同步阻塞I/O(BIO)还是非阻塞I/O(NIO)。这个比较好理解。 2、序列化框架 文本协议、二进制协议或压缩二进制协议。这句话是网上经常看到的,但其实表述很不完整。之前初学时有人问,JSON文本传输时不也是二进制么,当时就 阅读全文
摘要:
五年前在论坛上有过一次提问,如下: 下面两个问题的答案就是数据库的事务隔离机制。数据库针对外部的并发请求,也是要考虑资源抢占问题的,所以数据库针对同一记录的写请求,也是要加锁的! 最简单的方式就是针对每个请求都加锁,全部串行,这样肯定不会有问题。但这样性能很低,所以DB将锁分为了读锁和写锁,也就是常 阅读全文
摘要:
一句话总结:Raft协议理解后可以简单记忆为 选举机制 + binlog数据结构(事件回放) + 两阶段提交同步binlog Raft协议动画演示:http://thesecretlivesofdata.com/raft/ 基于Raft协议实现的分布式系统是单主的,所有的读写操作都路由到Leader 阅读全文
摘要:
1、机器学习分为监督学习和非监督学习。首先学习监督学习。 2、标签,即y值,结果,以通过机器学习过滤垃圾邮件为例,标签为邮件是垃圾邮件,或不是垃圾邮件 3、特征,即x值,输入变量,通常有多个特征,如根据发件人、邮件标题等特征来判断是否为垃圾邮件 4、样本,机器学习通过有标签样本训练模型,再通过模型对 阅读全文
摘要:
一句话总结:Java NIO主要解决传统IO针对每个连接都需创建一个阻塞线程,造成大量线程时线程上下文的开销。NIO通过一个独立单线程管理连接,当数据到达时触发事件,业务可自由选择单线程/线程池/新线程进行处理。这在有大量连接但数据传输不频繁的场景如IM聊天场景非常有用。 Java NIO的几个重要 阅读全文
摘要:
一句话总结:从问题现象为入口,归结为3类问题进行定位分析:内存满、CPU高、线程阻塞。 首先先介绍下jvisualvm这款jdk自带的性能工具。通常我们要定位哪块代码性能差,耗时久,最原始的办法就是在各个方法前后日志打印时间戳并计算耗时,这种方法很繁琐,通常要加很多日志多次部署才能定位到,我一开始也 阅读全文
摘要:
一句话总结:分布式事务业界主流方案:两阶段提交方案(包括XA方案和TCC方案)、消息队列方案。 1、两阶段提交方案 1.1 XA方案 XA协议流程可以查看作者另一篇“2PC两阶段提交协议”,XA方案是资源层的两阶段提交,通常应用于多数据库操作的场景,如Mysql 5.5版本以上Innodb引擎原生支 阅读全文
摘要:
一句话总结:通过JPA(Hibernate)对实体对象进行增删改查时,JPA(Hibernate)要维护即存储对象在Session即Hibernate一级缓存中,同时还要维护其状态,具体状态变化如下图所示: 通常我们无需关心JPA(Hibernate)的实体状态,但是碰到一些问题时需要对实体状态有所 阅读全文