摘要: 轮询(Round Robin)法 1.获取ip列表 2.根据ip在list的中pos顺序获取,server = keyList.get(pos);(使得同一时刻只能有一个线程可以修改pos的值) 随机(Random)法 1.获取ip列表 2.Random的nextInt方法取0~keyList.si 阅读全文
posted @ 2018-11-03 14:29 Twinhead 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 三次握手client->server syn报文server->client syn+ack报文 client->server ack报文 如果server没有收到ack回复,则将client放入等待队列,轮训发送syn+ack 四次握手client->serve fin报文server->clie 阅读全文
posted @ 2018-11-03 14:28 Twinhead 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 一、Java 虚拟机内存原型 寄存器:我们在程序中无法控制。 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。 堆:存放用new产生的数据。 静态域:存放在对象中用static定义的静态成员。 常量池:存放常量。 非 RAM 存储:硬盘等永久存储空间。 二、常量池(con 阅读全文
posted @ 2018-11-03 14:26 Twinhead 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 缓存击穿 定义: 缓存中的key一般设有过期时间,如果某个key过期了,恰在这个时候,有大量的并发请求访问这个key,则这些请求都会到达DB,导致DB瞬间压力过大,压垮DB。 解决方案: 1.设置互斥锁,mutex。当缓存失效时不时立即去访问数据库,而是使用缓存工具的操作成功带返回值的操作,比如re 阅读全文
posted @ 2018-11-03 14:17 Twinhead 阅读(1963) 评论(0) 推荐(0) 编辑
摘要: 一、常见使用方式 Redis的几种常见使用方式包括: Redis单副本; Redis多副本(主从); Redis Sentinel(哨兵); Redis Cluster; Redis自研。 Redis单副本; Redis多副本(主从); Redis Sentinel(哨兵); Redis Clust 阅读全文
posted @ 2018-11-03 14:15 Twinhead 阅读(3001) 评论(2) 推荐(0) 编辑
摘要: 1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不 阅读全文
posted @ 2018-11-03 14:14 Twinhead 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 随着公司规模的不断扩大,以及业务量的激增,单体应用逐步演化为服务/微服务的架构模式, 服务之间的调用大多采用rpc的方式调用,或者消息队列的方式进行解耦。几乎每个大厂都会创建自己的rpc框架,或者基于知名的rpc框架进行改造因此今天我们来讲讲rpc吧。 ​RPC概述 RPC(Remote Proce 阅读全文
posted @ 2018-11-03 14:07 Twinhead 阅读(637) 评论(0) 推荐(0) 编辑
摘要: java # jps -l # 查看java进程 # jstat -gc pid 1000 查看进程jvm信息,每隔1000毫秒显示一次 # jmap -heap pid 显示进程jvm堆栈信息 # jinfo -flags pid 查看jvm设置的参数 系统 # uname -a # 查看内核/操 阅读全文
posted @ 2018-11-03 14:05 Twinhead 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在 阅读全文
posted @ 2018-11-03 14:03 Twinhead 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 一、什么是RPC RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同。 比 阅读全文
posted @ 2018-11-03 14:01 Twinhead 阅读(25354) 评论(0) 推荐(2) 编辑
摘要: 介绍 平时接触的开源产品如Redis、ACE,事件模型都使用的Reactor模式;而同样做事件处理的Proactor,由于操作系统的原因,相关的开源产品也少;这里学习下其模型结构,重点对比下两者的异同点; 反应器Reactor Reactor模式结构 Reactor包含如下角色: Handle 句柄 阅读全文
posted @ 2018-11-03 13:59 Twinhead 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 一、缘起 一切脱离业务的架构设计与新技术引入都是耍流氓。 引入一个技术之前,首先应该解答的问题是,这个技术解决什么问题。 就像微服务分层架构之前,应该首先回答,为什么要引入微服务,微服务究竟解决什么问题(详见《互联网架构为什么要做微服务?》)。 最近分享了几篇MQ相关的文章: 《MQ如何实现延时消息 阅读全文
posted @ 2018-11-03 13:53 Twinhead 阅读(523) 评论(0) 推荐(1) 编辑