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,实现都比较简单,有趣味能够自行翻看
发表回复