- 博客(5)
- 收藏
- 关注
原创 kafka java客户端消息的分区与缓存发送
当kafka发送消息的时候,在完成消息的序列化之后,如果没有指定消息的分区,将会通过Partitioner来选择该消息发往的分区,在默认情况下,将采用DefaultPartitioner来进行消息的分区选择。public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueByt...
2019-06-19 01:11:51 823
原创 redis lru和lfu的实现
在redis的lru的实现与传统的lru实现不同。具体实现在evict.c文件中,当redis需要通过释放缓存的key来释放空间时,将会通过ecict.c的freeMemoryIfNeeded()函数来通过设定的算法来清除key以腾出空间。其中,如果配置的策略是ALL_KEYS才会从所有缓存的key尝试释放,否则只会从存在过期时间的key中进行释放。struct evictionPo...
2019-06-11 22:34:35 1895
原创 akka balance router的实现
当akka处于balance策略的时候,Akka的父actor在选择相应的子actor去执行相应的消息时,不会直接直接选择,而是在分发器dispatch中,通过共享邮箱的方式,选择一个空闲的子actor去执行这个消息。具体的balance策略BalanceRoutingLogic的apply方法只是返回了所有子actor的第一个,并没有执行具体的选择操作。private[akka]...
2019-06-06 00:20:11 330
原创 akka actor行为切换实现
Akka中actor行为的切换实际是actor的receive的函数的选择切换。通过become()方式切换行为。在ActorCell中维护着一个可伸缩List实现的行为堆栈。private var behaviorStack: List[Actor.Receive] = emptyBehaviorStack在actor接受到消息的时候,将会调用堆栈顶部的函数。fin...
2019-06-04 23:33:31 482
原创 akka actor父子监管的实现
akka中,父actor可以定义supervisorStartegy来实现对子actor的异常监管应对策略。* override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) {* case _: ArithmeticException ...
2019-06-02 11:41:40 706
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人