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