共计 1097 个字符,预计需要花费 3 分钟才能阅读完成。
micro.newService()中 newOptions
func newOptions(opts ...Option) Options {
opt := Options{
Auth: auth.DefaultAuth,
Broker: broker.DefaultBroker,
Cmd: cmd.DefaultCmd,
Config: config.DefaultConfig,
Client: client.DefaultClient,
Server: server.DefaultServer,
Store: store.DefaultStore,
Registry: registry.DefaultRegistry,
Router: router.DefaultRouter,
Runtime: runtime.DefaultRuntime,
Transport: transport.DefaultTransport,
Context: context.Background(),
Signal: true,
}
for _, o := range opts {o(&opt)
}
return opt
}
初始化了一堆根底设置,来看看 Storestore.DefaultStore,
这里不要间接去看 store/store.go 中的 DefaultStore Store = new(noopStore)
,
因为在 micro/defaults.go 中曾经初始化了,默认应用的是store.DefaultStore = memoryStore.NewStore()
// NewStore returns a memory store
func NewStore(opts ...store.Option) store.Store {
s := &memoryStore{
options: store.Options{
Database: "micro",
Table: "micro",
},
store: cache.New(cache.NoExpiration, 5*time.Minute),
}
for _, o := range opts {o(&s.options)
}
return s
}
type memoryStore struct {
options store.Options
store *cache.Cache
}
- 初始化了 memoryStore{},store 是应用的 patrickmn/go-cache
- 设置 options,返回 memoryStore 实例
性能比较简单,在 store/memory/memory.go 封装了读写删改等操作函数
其余 store 有 cache,cockroach,file,service,实现都比较简单,有趣味能够自行翻看
正文完