groupcache源码分析9:groupcache.go
终于到了最后一个文件groupcache.go,跟项目同名,看着就知道它的重要性了。前面我们分析了那么多,这一篇就来看看如何利用那些零件,来具体去实现整个缓存逻辑。
终于到了最后一个文件groupcache.go,跟项目同名,看着就知道它的重要性了。前面我们分析了那么多,这一篇就来看看如何利用那些零件,来具体去实现整个缓存逻辑。
http.go定义了groupcache接收到http请求时怎么去执行操作,算是一个主要流程文件。
peers.go文件的主要作用是用来定义如何查找和与其他peer沟通,peer的中文翻译为同伴,可以理解为其他机器。
sink.go文件实际上也是提供数据结构,在ByteView之上做了一层封装。
byteview.go文件提供了一个数据结构ByteView,它是对[]byte或string类型的一个封装,提供了一些方法。
二零二零年二三月间,一个平平常常的日子,太阳一如既往的给大地提供阳光与温暖。时令已快到春分,虽然国际形势依然严峻,但连日好天气,似乎要驱走人们至今的阴霾。
singleflight.go文件代码不多,主要是提供了一个竞争执行方法,利用sync.WaitGroup来让重复的请求,进行等待,只实际执行一次,并将执行结果返回给所有等待的请求。算是一个并发的处理机制。
LRU算法全称Least Recently Used ,最近最少使用,当数据所占内存达到一定阈值,我们要移除掉最近最少使用的数据。
groupcachepb打开后我们可以看到.proto文件和.pb.go文件,这玩意儿我们很熟悉,protobuf协议嘛,我们只需要关注.proto即可,.pb.go是基于他生成,关于protobuf的具体内容不详述,大家知道他是一个用来进行通信的协议即可。