go超級時間輪timewheel(一路向前)github.com/anjieych/timewheel
go超級時間輪timewheel(一路向前)github.com/anjieych/timewheel
有傳統時間輪的影子,但又超出傳統時間輪:
- 非“盤/環”形結構: 一路向前,永不回頭,每tick一次,移除一個slot;每個slot中的entity 觸發OnExpired來處理到期(或過期)事件;
- 超級時間輪: 他是一個輪或者輪的集合,因為他可以同時處理不同實現了Entity的業務,每個業務有各自OnExpired定義,只要可以遵循相同的時間刻度Interval就可以放入同一個輪來統一計時觸發。 最後,優點或缺點可以作者交流。
[========]
package main
import (
"fmt"
"github.com/anjieych/timewheel"
"time"
)
func main() {
tw := timewheel.NewTimewheel("tw-example", time.Second)
tw.Start()
tick := time.NewTicker(3 * time.Second)
for {
d := &Data{
eid: time.Now().UnixNano(),
data: <-tick.C,
}
d.SetSlotId(tw.Add(d, 5*time.Second))
}
}
// Data must implements timewheel.Entity
type Data struct {
eid int64
slotId int
data interface{}
}
func (d *Data) SetEId(eId int64) {
d.eid = eId
}
func (d *Data) GetEId() (eId int64) {
return d.eid
}
func (d *Data) SetSlotId(slotId int) {
d.slotId = slotId
}
func (d *Data) GetSlotId() (slotId int) {
return d.slotId
}
func (d *Data) OnExpired() {
fmt.Printf("%s\t OnExpired :{slotId: %d\t,eid: %d\t,data: %s}\n", time.Now(), d.GetSlotId(), d.GetEId(), d.data)
}
相關文章
- 時間輪TimeWheel工作原理解析
- TimeWheel演算法介紹及在應用上的探索演算法
- 層級時間輪的 Golang 實現Golang
- go get 超時Go
- Go語言中時間輪的實現Go
- JavaScript時間輪盤:js元素圓形佈局製作時間輪盤動畫JavaScriptJS動畫
- Go 裡的超時控制Go
- Redis之時間輪機制(五)Redis
- Go語言從入門到實戰-蔡超-極客時間Go
- Go net/http 超時指導GoHTTP
- session超時時間的設定Session
- weblogic設定超時時間Web
- 時間輪機制在Redisson分散式鎖中的實際應用以及時間輪原始碼分析Redis分散式原始碼
- FPGA -- SPI 時序實現(超級靈活,超級好用)FPGA
- 解決 go get 超時問題Go
- HttpClient設定聯網超時時間HTTPclient
- C# UdpClient 設定超時時間C#UDPclient
- go 把時間儲存到 MongoDB , 時間是 time 型別MongoDB型別
- Kafka原理剖析之「Purgatory(煉獄 | 時間輪)」Kafka
- gRPC為什麼使用截止時間而不是超時時間?RPC
- 網路程式設計定時器二:使用時間輪程式設計定時器
- 一個超級簡單的 go Web 框架GoWeb框架
- Go併發呼叫的超時處理Go
- 清華尹成帶你實戰GO案例(23)Go 超時Go
- php 和 nginx 的幾個超時時間PHPNginx
- 為jQuery的$.ajax設定超時時間jQuery
- System.Data.SqlClient.SqlException 超時時間已到SQLclientException
- Go各時間字串使用詳解Go字串
- now-go時間百寶箱Go
- GO語言————4.8 時間和日期Go
- 從 Kafka 看時間輪演算法設計Kafka演算法
- 時間輪原理及其在框架中的應用框架
- 還能這樣玩?Go 將會增強 Go1 向前相容性Go
- Go 解決國內go get安裝包超時問題Go
- go語言中強大的DNS庫--github.com/miekg/dnsGoDNSGithub
- Go net/http 超時機制完全手冊GoHTTP
- 不同使用者,不同的session超時時間Session
- Apollo啟動配置排查,超時時間的配置