限流、RPC、软引用、超卖

本文摘选的是极客时间和慕课网中学生给我的留言。

 

极客时间 - 秒杀限流

提问出处 https://time.geekbang.org/dailylesson/detail/100044013

1.老师您好,如果是使用通用网关来进行限流的话,如何细化到对每个接口进行限制?谢谢

答:您好,对api接口限流的话,可以使用google guava封装的令牌桶算法就可以实现。或者使用漏桶算法、计数法等都可以实现。

如果必须在通用网关层面实现,可以使用OpenResty。

追问:

您好,比如在通用网关层限流的话流量阈值该怎么决定呢,是单个接口的阈值还是所有接口的阈值之和?还有一个就是一般是不是通用网关层和api接口都建议限流?谢谢!

答:

(1).流量阈值该怎么决定?

建议结合压力测试的结果,进行调整。

 

(2)单个接口的阈值还是所有接口的阈值之和?

需要参考实际的部署情况。总原则是,抵达各个服务器的流量,要限制在每个服务器的可承受范围内。

不论是单接口还是所有接口,只要保证接口后的服务器 能够承受住 就行。

举个例子,如果单接口跳转的服务器是A,多个接口共同跳转的服务器是B。那么就对单接口、或多个接口限流,限到最后保证服务器A和B各自能够承受住流量的冲击即可。

 

(3)通用网关层和api接口都需要限流吗?

建议结合实际的流量大小和压测结果。

如果网关限流后,流量已经可控,就不用再限了。如果经过网关后,流量仍然大,就再次限流,也就是层层限流。但要注意,本节课也讲了,多一层限流 虽然可以进一步控制流量(利),但也同时会增加流量的跳转路径(弊)。

 

 

2.老师,合法性限流具体的手法和部署可以详细讲解一下吗,是在网关这个层面来处理吗,如果是的话那后面负载限流中NGINX也是一种网关的功能吗?

答:可以在nginx中设置IP黑名单。另外,nginx本身是既可以做网关,又可以做负载均衡。

 

极客时间 - 跨语言RPC

提问出处:https://time.geekbang.org/dailylesson/detail/100044012

1.普通的java客户端调用java服务端 网络传输数据不也是转化成二进制吗 没搞懂用protobuf 为什么转换成二进制就可以进行跨语言传输了 希望能解答一下

答:简单的说,就是pb支持各种语言通用的序列化和反序列化方式;而如果使用java序列化为二进制,则无法被java以外的其他语言反序列化。

 

2.我们目前已经大量使用Java的ObjectStream来作为相同语言之间的传输字节数组的格式。为了兼容其他语言的调用客户端,同时也不影响目前已有的序列化和反序列化机制,是否可以直接从Java pojo源码直接生成.proto文件呢?

答:您好。

(1).pojo转.proto文件,需要自己写一个转换工具类了。

(2).以您目前的情况,可能在一个项目中,要同时存在两套数据传输机制了:基于ObjectStream的RMI,和基于protobuf(或thrift等)的RPC。

 

慕课网 - 软引用&超卖

提问出处:https://www.imooc.com/read/56/article/1207#comments

1.老师您好,请教一个问题,如果用以下的写法是否就同时存在两个引用了 弱引用和强引用 Object obj = new Object(); SoftReference softReference = new SoftReference<>(obj);

答:2个,强引用和软引用。但如果后面再加一句obj=null,就只有一个引用了(软引用)

 

 

提问出处:https://www.imooc.com/read/56/article/1213#comments

2.除了使用zookeeper解决以外,还有什么办法可以解决超卖问题?

答:可以从流程上避免超卖:超卖发生的时机是“用户在支付的时候,进行减库存操作”。如果把流程改为“在用户下单的时候,进行减库存操作”,就可以把减库存的逻辑控制在“下单后、支付前”这段时间里,因此就可以避免超卖的现象了。

 

- 完 -

推荐阅读

Java小白到大神的心路历程(Java SE)

答疑 | 面试全对,却没offer?

答疑 | 背下这300字,面试就能加薪!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值