Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@ -0,0 +1,73 @@
package collector
import (
"sync"
"go-common/app/service/main/dapper/model"
)
type peerServiceDetect struct {
rmx sync.RWMutex
pair map[string]string
}
func (p *peerServiceDetect) detect(operationName string) (string, bool) {
p.rmx.RLock()
serviceName, ok := p.pair[operationName]
p.rmx.RUnlock()
return serviceName, ok
}
func (p *peerServiceDetect) add(serviceName, operationName string) {
if operationName == "" || serviceName == "" {
// ignored empty
return
}
p.rmx.RLock()
val, ok := p.pair[operationName]
p.rmx.RUnlock()
if !ok || serviceName != val {
p.rmx.Lock()
p.pair[operationName] = serviceName
p.rmx.Unlock()
}
}
func (p *peerServiceDetect) process(span *model.Span) {
if span.IsServer() {
p.add(span.ServiceName, span.OperationName)
return
}
if span.GetTagString("peer.service") != "" {
return
}
peerService, ok := p.detect(span.OperationName)
if ok {
span.SetTag("peer.service", peerService)
span.SetTag("_auto.peer.service", true)
return
}
if peerSign := span.StringTag("_peer.sign"); peerSign != "" {
peerService, ok := p.detect(peerSign)
if ok {
span.SetTag("peer.service", peerService)
span.SetTag("_auto.peer.service", true)
}
}
}
func (p *peerServiceDetect) Process(span *model.Span) error {
p.process(span)
return nil
}
// NewPeerServiceDetectProcesser .
func NewPeerServiceDetectProcesser(data map[string]map[string]struct{}) Processer {
p := &peerServiceDetect{pair: make(map[string]string)}
for serviceName, operationNames := range data {
for operationName := range operationNames {
p.add(serviceName, operationName)
}
}
return p
}