自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chaofanwei2的博客

好记性,烂笔头

  • 博客(18)
  • 收藏
  • 关注

原创 高并发环境下qps计算

1、若发现要创建新的bucket,则让一个线程去创建,别的线程则取出上一个bucket进行处理2、数据 striping 就是把逻辑上连续的数据分为多个段,使这一序列的段存储在不同的物理设备上。通过把段分散到多个设备上可以增加访问并发性,从而提升总体的吞吐量。3、Hystrix: Latency and Fault Tolerance for Distributed Systems

2016-07-27 22:16:15 16300 2

原创 kafaka-无限横向扩展消息中间件

kafka将每个partition数据复制到多个server上,任何一个partition有一个leader和多个follower(可以没有); leader处理所有的read-write请求,follower需要和leader保持同步 当所有的follower都将一条消息保存成功,此消息才被认为是"committed",那么此时consumer才能消费它.

2016-06-13 11:04:28 2767

原创 tcp连接Recv-Q、syn flood攻击及backlog监控

1、listen和非listen状态下,Recv-Q分别表示等待accept的连接个数和等待用户进程接收的字节数2、简单说SYN cookie就是将连接信息编码在ISN(initial sequence number)中返回给客户端,这时server不需要将半连接保存在队列中,而是利用客户端随后发来的ACK带回的ISN还原连接信息,以完成连接的建立,避免了半连接队列被攻击SYN包填满3、netstat -s //自系统启动开始到现在的统计和

2016-05-17 16:01:49 3306

原创 tcp连接及生命周期

最多有65535个端口同时在使用每个端口允许的最大连接数,和单个进程最大打开的文件数有关TCP连接建立需要三次握手,断开需要四次

2016-05-16 14:41:08 4599

原创 深入了解httpclient之初探

如果把现有的同步请求改成异步请求,那么业务里面则不需要再使用线程池,而且不必为每个请求再分配一个线程来执行,将大大减少业务线程的数量,节省不少的线程上下文切换开销,给机器性能提升不少。

2016-05-13 14:47:36 4979

原创 线程池之拒绝策略

ThreadPoolExecutor.execute(Runnable command)提供了提交任务的入口,此方法会自动判断如果池子满了的话,则会调用拒绝策略来执行此任务,接口为RejectedExecutionHandler,内置的4中策略分别为AbortPolicy(默认)、DiscardPolicy、DiscardOldestPolicy、CallerRunsPolicy。

2016-05-13 11:21:05 13380

原创 线程池之深度了解-ThreadPoolExecutor

优先启动corePoolSize个线程,然后多的任务放到队列里面等待corePoolSize的线程去执行,只有当队列满的时候,才会启动最多maximumPoolSize的线程去执行任务

2016-05-12 12:04:22 356

原创 JNAVI项目之用classloader实现热部署

JNAVI项目是我司开发的用于大规模分布式服务框架,能提供http,tcp,udp请求服务,并提供了大量的高效率、高性能、池化的请求底层服务的接口的框架。其中之一的特点就是类似于tomcat,支持部署多个业务模块,每个业务模块支持热部署,其就是利用classload实现的。先简单看图。整个项目分3层,第一层就是启动JNAVI的代码,即

2016-05-08 11:56:18 634

原创 classload之java程序入口sun.misc.Launcher源码分析

java程序的入口就是sun.misc.Launcher了,这个类里面又继承了ExtClassLoader和AppClassLoader和bootstrap的url路径可以看到Launcher类初始化时,先初始化了个ExtClassLoader,然后又初始化了个AppClassLoader,然后把ExtClassLoader作为AppClassLoader的父loader。ExtClassLoader没有指定父类,即表明,父类是BootstrapClassLoader。把初始化的AppClassLoa

2016-05-06 22:51:35 13503

原创 classloader之getresource,findClass深度分析

getResource优先返回父加载器里面的资源findResource直接而且只是从当前类加载器的url里面去查询资源(不请求父加载器)每个URLClassLoader 内部维护了一组url,初始化URLClassLoader和通过addUrl(url)可以添加url,然后findResource只是从这些url里面查找。URLClassPath里面会把每个url解析成一个load,然后查找资源的时候,就去每个load里面查找。load类有三个实现,分别是load(代表网络的jar包),FileL

2016-05-03 21:56:26 4675

原创 java利用classloader实现热部署

热部署,即需要jvm释放之前加载的业务class,且重新加载最新的业务class,并释放之前的class(卸载),其实类和普通对象一样都是对象,即如果从gc root除非,没有引用此类的别的对象存在,即会被jvm自动回收。

2016-05-02 22:34:47 13548 2

原创 JMX客户端及对commons-pool的监控

生产线上,我们的服务基本都是在linux环境下部署的,当高并发的时候,机器的负载是比较高的,所以我们只能在linux机器上执行一些简单的命令行工具,如jps,jstack,jinfo等,像重量级的jconsole,jvisualvm这些首先需要桌面环境才能观看,服务器肯定是没有开启X client的,所以只能通过jmx在远程客户端观看,但这种情况下,势必会对本机造成一些不必要的资源占用,如网络带宽

2016-05-02 11:17:43 3736

原创 apache commons pool之GenericObjectPool分析(通用对象池技术)

在高并发的环境下写程序时通常碰到线程安全的问题,当然,最能想到的就是加锁,再进一步想就是池子了,所谓池子就是,里面可以放置多个同样的对象,每个线程需要用时,就从池中取走,用完时再放回到池中,即可解决线程的安全问题,又可提高速度(预先初始化)。       当然若是自己写个对象池的话,也是可以的,不过现在有个通用的apache下的commons-pool框架,个人感觉真是不错,尤其是现在

2016-05-01 19:38:22 12137

原创 JMX-JAVA进程监控利器

Java 管理扩展(Java Management Extension,JMX)是从jdk1.4开始的,但从1.5时才加到jdk里面,并把API放到java.lang.management包里面。如果一个 Java 对象可以由一个遵循 JMX 规范的管理器应用管理,那么这个Java 对象就可以称为一个可由 JMX 管理的资源。要使一个 Java 对象可管理,则必须创建相应的 M

2016-05-01 17:46:41 11340

原创 redis sentinel(哨兵)模式

一、Sentinel作用1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave3):Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.

2016-04-25 18:17:38 980

原创 YK线上机器redis配置(没有主从,单点,一致性哈希)

在YK,redis机器环境默认都是8核128g内存,一般每个核启动一个redis实例,剩余内存不能太少。如我们这启动了8个进程,每个进程15g内存。由于我们这个业务使用的缓存,不需要那么高的可靠性,所以默认是存放在内存中的,不会flush到磁盘,这样可以有最好的速度如下:14:58 [logwatch@a01.redis.yks.b28.youku]$ cat /etc/red

2016-04-25 14:57:31 566

原创 tcpcopy浅谈

由于上次一台redis宕机,导致上层服务整体不可用,影响面积甚大(原因以后再说),现在线上只是用到了redis的单机模式,多个redis实例构成一致性哈希,供客户端调用。所以最近领导提出了redis的sentinel模式,让我们来研究研究。       在测试sentinel模式的时候,其中有一个技术细节,即需要把线上的流量导入到线下测试机上,用到了tcpcopy,本文主要讲述tcpcopy的

2016-04-25 07:47:16 1084

原创 YK线上机器cpu、内存信息

物理cpu个数,每个物理cpu核数,逻辑cpu

2016-04-24 20:58:10 497

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除