Closed mztlive closed 2 years ago
snowflake.NewNode(1) 这部分要提前完成,仅在程序启动时初始化一次,后面再使用node.Generate()。
用单例模式吧
用单例模式吧
怎么算单例模式?启动服务的全局初始化一次snowflake.NewNode么?
有點驚訝,issues不多,但是光用中文下標題的就佔兩個了,是因為作者群裡面有人看得懂中文還是圖方便就用中文問而已?
另外我覺得2樓已經給了解答,因此這個issues可以考慮關閉了
snowflake.NewNode(1) 这部分要提前完成,仅在程序启动时初始化一次,后面再使用node.Generate()。
用单例模式吧
怎么算单例模式?启动服务的全局初始化一次snowflake.NewNode么?
這樣是單例
n := snowflake.NewNode(1)
n.Generate()
n.Generate()
n.Generate()
這樣不是
n := snowflake.NewNode(1)
n.Generate()
n = snowflake.NewNode(1)
n.Generate()
如果不斷產生Node的新對象,這樣有Lock等於沒Lock,可以看一下代碼
有點驚訝,issues不多,但是光用中文下標題的就佔兩個了,是因為作者群裡面有人看得懂中文還是圖方便就用中文問而已?
Thanks for helping on this issue. Because I'm over here using Google Translate to try to understand what any of this says :)
Definitely no authors (only me) that understands Chinese.
func NextIdentity() (int64, error) { //TODO: NodeID 换成读取配置 node, err := snowflake.NewNode(1)
}
r.GET("/testOrder", func(c *gin.Context) { fmt.Println(utils.NextIdentity()) }
ab -c 10 -n 11 http://localhost:8080/testOrder
就在10个并发的时候就会重复