evalsha

Posted by 夏泽民

在Redis中执行Lua脚本有两种方法:eval和evalsha。 http://redisdoc.com/script/eval.html https://redisbook.readthedocs.io/en/latest/feature/scripting.html 1.1 eval# Copy eval 脚本内容 key个数 key列表 参数列表 下面例子使用了key列表和参数列表来为Lua脚本提供更多的灵活性:



分布式限流

Posted by 夏泽民

两个基础限流算法是漏斗算法和令牌算法 分布式限流 如果你的应用是单个进程,那么限流就很简单,请求的计数算法都可以在内存里完成。限流算法几乎没有损耗,都是纯内存的计算。但是互联网世界的应用都是多节点的分布式的,每个节点的请求处理能力还不一定一样。我们需要考虑的是这多个节点的整体请求处理能力。 单个进程的处理能力是1w QPS 并不意味着整体的请求处理能力是 N * 1w QPS,因为整体的处理能力还会有共享资源的能力限制。这个共享资源一般是指数据库,也可以是同一台机器的多个进程共享的 CPU 和 磁盘 等资源,还有网络带宽因素也会制约整体的请求量。 这时候请求的计数算法就需要集中在一个地方(限流中间件)来完成。应用程序在处理请求之前都需要向这种集中管理器申请流量(空气、令牌桶)。 每一个请求都需要一次网络 IO,从应用程序到限流中间件之间。



地理索引 uber s3

Posted by 夏泽民

动态空间划分(R-tree) 静态空间划分(GeoHash、google S2、uber H3) 四叉树 经度、纬度的二分来分块,逻辑最简单。 Z-行空间遍历 编码方式 所在层级经纬度二分下标(0、1),先经后纬,逐层排列。



uber H3

Posted by 夏泽民

https://github.com/xiazemin/h3-go https://uber.github.io/h3/#/documentation/overview/introduction https://uber.github.io/h3/#/documentation/core-library/coordinate-systems https://halfrost.com/go_spatial_search/ https://github.com/vraid/earthgen-old https://gist.github.com/jp1017/71bd0976287ce163c11a7cb963b04dd8



select

Posted by 夏泽民

select为golang提供了多路IO复用机制,和其他IO复用一样,用于检测是否有读写事件是否ready。 golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required