Development Guide
Overview
- cache module
- cache.go: define cache interface and result model.
- registry:
- kube
- cache.go: implement Cache interface for kubernetes mode, and define some registry logic like startInformer, stopInformer, etc.
- registry.go: implement Registry interface for kubernetes mode, and refer registry logic defined in cache.go
- universal:
- cache.go: implement Cache interface for universal mode, and define some registry logic like store, delete, etc.
- registry.go: implement Registry interface for universal mode, and refer registry logic defined in cache.go
- extension.go: define Registry extension interface and use it in admin module's bootstrap process.
- selector:
- selector.go: define Selector interface and Options interface.
- application_selector.go: implement Selector interface, and define application selector logic.
- service_selector.go: implement Selector interface, and define service selector logic.
- multiple_selector.go: an implement of Selector to combine multiple selectors.
How to use
- After dubbo-cp setup, cache has been initialized and an instance of Cache is declared as a global var in admin/config.
- Use
config.Cache
to get cache instance. - Call some methods of Cache to get data from cache.
Examples
Get resources by application
package service
import (
"github.com/apache/dubbo-kubernetes/pkg/admin/cache/selector"
"github.com/apache/dubbo-kubernetes/pkg/admin/config"
)
func (s *XXXServiceImpl) GetXXX(application string) ([]*model.XXX, error) {
// get data from cache
xxx, err := config.Cache.GetXXXWithSelector("some-namespace", selector.NewApplicationSelector(application))
if err != nil {
return nil, err
}
// use data to do something
// return results
return yyy, nil
}