漏桶限流和令牌桶限流比较
背景
每一个对外提供的API接口都是需要做流量控制的,不然会导致系统直接崩溃。很简单的例子,和保险丝的原理一样,如果用电符合超载就会烧断保险丝断掉电源以达到保护的作用。API限流的意义也是如此,如果API上的流量请求超过核定的数值我们就得对请求进行引流或者直接拒绝等操作。
限流算法
既然要限流,就得提到限流算法了,一般有漏桶算法和令牌桶算法两种限流算法。
漏桶算法
漏桶算法(Leaky Bucket)是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。
漏桶可以看作是一个带有常量服务时间的单服务器队列,如果漏桶(包缓存)溢出,那么数据包会被丢弃。 在网络中,漏桶算法可以控制端口的流量输出速率,平滑网络上的突发流量,实现流量整形,从而为网络提供一个稳定的流量。
如图所示,把请求比作是水,水来了都先放进桶里,并以限定的速度出水,当水来得过猛而出水不够快时就会导致水直接溢出,即拒绝服务。
...
java客户端连接ceph异常
Java S3 客户端连接 Ceph 一段时间后出现了这种异常,未能排查出具体的原因。从错误状态看是访问拒绝,猜测可能是资源连接太久,有资源没有释放造成泄漏。也有可能是资源的长时间不用,类似长连接断开后未能再次建立连接。
ceph 版本:
12$ ceph --versionceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
依赖的 java sdk 版本是:
12345<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.10.0</version></dependency>
出现问题的几个类:AmazonHttpClient,AmazonHttpClient,HttpResponse,S3ErrorResponseHan ...
linux wc 命令的使用
wc命令
Linux wc(word count)命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
语法:
1wc [-clw][--help][--version][文件...]
参数:
-c或–bytes或–chars 只显示Bytes数。
-l或–lines 显示行数。
-w或–words 只显示字数。
–help 在线帮助。
–version 显示版本信息。
实例
在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:
wc testfile
先查看testfile文件的内容,可以看到:
1$ cat testfile
Linux networks are becoming more and more common, but scurity is often an overlooked issue. Unfortunately, in today’s environment all networks are potential ...
小电面试题
小电:
1.java Lock如何实现,AQS底层原理
2.公平锁与非公平锁区别以及各自使用场景
3.线程状态之间如何转换
4.几种GC算法、垃圾收集器种类以及各自使用的GC算法,为什么使用该GC算法
5.什么时候发生Full GC
6.Mysql InnoDB索引使用的数据结构?为什么使用B+树而不是B树?聚集索引与非聚集索引的区别?如何进行索引优化?
7.分布式锁有几种实现方式?各自的使用场景?
8.分布式事务的解决方案
宇泛智能面试题
宇泛智能:
1.ConcurrentHashMap使用的锁,各自在什么情况下使用(CAS与Synchronized)
2.动态代理实现方式以及使用场景
3.几种GC算法,哪些垃圾收集器以及各自使用的GC算法,CMS与G1区别?GC roots包括哪些对象?
4.JVM OOM 排查过程
5.分布式锁实现方式
6.一致性协议2PC与3PC,分布式事务实现方式
7.Dubbo架构设计及SPI机制,如何实现限流?
1.多线程考虑哪些方面?线程池原理?
2.假设线程池核心数为2,最大线程数为8,任务队列容量为1000,现有1000个任务,每个任务执行100ms,理论上完成所有任务需要多长时间?在不改变核心线程数情况下如何缩短时间?
3.Dubbo 线程模型
4.Netty 发送消息Write 与 WriteAndFlush区别以及异常如何处理
5.Redis线程模型,如何保证高性能?列表底层数据结构?
6.Mysql索引原理,如何优化sql?
7.类加载过程?父类与子类的初始化顺序
8.Spring BeanPostProcessor与BeanFactoryPostProcessor各自使用场 ...
菜鸟网络面试题
一面:
1.聊最近做的一个项目,项目背景,项目架构,数据流,并发量多大?项目中的角色,负责任务的难点在哪里?有没有遇到问题?如何解决?
2.了解AQS么?讲讲AQS底层原理,哪些使用场景?
3.线程池参数及原理
4.多个线程执行互不相关的计算任务,哪些方式可以获取这些结果(CompltableFuture与CompletionService)
5.GC算法比较,垃圾收集器,CMS与G1比较,JVM OOM如何排查
6.分布式锁如何实现
7.Redis的内存淘汰策略有哪些,zset底层实现?
二面:
SOA与微服务的区别?项目中为什么使用微服务架构?
项目的难点是什么?如何解决的?
滴滴面试题
滴滴:
1.什么时候发生STW?GC算法及使用场景
2.GC时应用程序响应时间5ms,如何优化?
3.安全点是什么?为什么需要有安全点?
4.JDK1.7与JDK1.8中,HashMap如何处理频繁频繁碰撞?说说rehash过程
5.JDK1.7与JDK1.8中,ConcurrentHashMap区别,为什么引入红黑树?查询与插入效率如何?
6.说说Mysql索引优化思路,覆盖索引是什么?
7.主键索引与普通索引的区别
8.undo log与redo log区别
9.redis支持的数据类型,zset实现原理
1.Java原子类实现原理,产生的问题?ABA问题是什么?如何解决?
2.Redis支持的数据类型,zset底层实现,zset 插入操作时间复杂度
3.Redis为什么是高性能的?(单线程模型,NIO多路复用,内存操作)
4.Mysql join sql 优化?一条sql只能使用一个索引么?
5.分布式锁实现方式
6.Mysql事务如何实现?InnoDB默认事务隔离级别以及解决什么问题?幻读如何解决?
7.生产环境JVM OOM问题如何排查
有赞面试题
有赞:
1.Mysql索引原理,为什么使用B+树而不选用B树或二叉树?什么场景下使用B树?
2.千万级表如何优化?分表如何实现?一致性哈希原理
3.Redis支持的数据类型?zset底层实现?为什么使用跳表而不适用红黑树?跳表的插入过程?
4.分布式锁实现方式
5.Netty的线程模型?粘包与拆包如何解决?丢包如何解决?
6.线程池参数与原理
7.JVM OOM问题排查过程
微洱科技面试题
微洱科技:
1.Spring IOC是什么?Spring几种注入方式?哪种注入方式无法解决循环依赖?Spring 如何解决循环依赖?生产中有遇到Spring问题么?
2.分布式锁实现方式
3.Dubbo 与 Spring Cloud对比
4.Kafka与RocketMQ对比以及各自使用场景
5.Mysql 存储引擎比较,各自使用场景
6.Mysql 索引原理,聚集索引与非聚集索引,覆盖索引,如何进行索引优化
涂鸦智能面试题
涂鸦智能:
1.BIO与NIO区别,为什么NIO效率高?说说NIO Buffer(Heap Buffer与Direct Buffer区别),为什么使用Direct Buffer?
2.线程安全地实现方式?ThreadLocal可能出现的问题?线程池中使用ThreadLocal可能出现的问题?(内存泄漏与脏数据的问题)
3.分布式锁实现方式
4.一致性协议 2PC与3PC,分布式事务的实现方式
5.如何保证接口幂等性?
6.如何进行Mysql 索引优化?
7.Dubbo 的SPI机制与JDK的SPI机制
9.Netty的核心组件与线程模型
10.多线程大量创建对象,如何排查问题
11.新应用如何分层设计,模块设计,什么是好的代码?