使用sync.pool优化
This commit is contained in:
		
							parent
							
								
									09016138a5
								
							
						
					
					
						commit
						1d3687dee2
					
				@ -11,28 +11,43 @@ import (
 | 
				
			|||||||
	"github.com/1340691923/xwl_bi/platform-basic-libs/sinker"
 | 
						"github.com/1340691923/xwl_bi/platform-basic-libs/sinker"
 | 
				
			||||||
	parser "github.com/1340691923/xwl_bi/platform-basic-libs/sinker/parse"
 | 
						parser "github.com/1340691923/xwl_bi/platform-basic-libs/sinker/parse"
 | 
				
			||||||
	"github.com/1340691923/xwl_bi/platform-basic-libs/util"
 | 
						"github.com/1340691923/xwl_bi/platform-basic-libs/util"
 | 
				
			||||||
 | 
						jsoniter "github.com/json-iterator/go"
 | 
				
			||||||
	"github.com/tidwall/gjson"
 | 
						"github.com/tidwall/gjson"
 | 
				
			||||||
	"github.com/valyala/fasthttp"
 | 
						"github.com/valyala/fasthttp"
 | 
				
			||||||
	"go.uber.org/zap"
 | 
						"go.uber.org/zap"
 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type ReportController struct {
 | 
					type ReportController struct {
 | 
				
			||||||
	BaseController
 | 
						BaseController
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var parserPool *parser.Pool
 | 
					var parserPool *parser.Pool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var reportTypeDataPool *sync.Pool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var Marshaler func(v interface{}) ([]byte, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	parserPool, err = parser.NewParserPool("fastjson")
 | 
						parserPool, err = parser.NewParserPool("fastjson")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						reportTypeDataPool = new(sync.Pool)
 | 
				
			||||||
 | 
						var json = jsoniter.ConfigCompatibleWithStandardLibrary
 | 
				
			||||||
 | 
						Marshaler = json.Marshal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func GetReportTypeDataPool()*report.ReportTypeData{
 | 
				
			||||||
 | 
						v := reportTypeDataPool.Get()
 | 
				
			||||||
 | 
						if reportTypeDataPool.Get() != nil{
 | 
				
			||||||
 | 
							return new(report.ReportTypeData)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return v.(*report.ReportTypeData)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//上报接口
 | 
					//上报接口
 | 
				
			||||||
@ -44,25 +59,41 @@ func (this ReportController) ReportAction(ctx *fasthttp.RequestCtx) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		typ    = ctx.UserValue("typ").(string)
 | 
							typ    = ctx.UserValue("typ").(string)
 | 
				
			||||||
		appid     = ctx.UserValue("appid").(string)
 | 
					 | 
				
			||||||
		appkey = ctx.UserValue("appkey").(string)
 | 
							appkey = ctx.UserValue("appkey").(string)
 | 
				
			||||||
		debug     = ctx.UserValue("debug").(string)
 | 
							err error
 | 
				
			||||||
		eventName = ctx.UserValue("eventName").(string)
 | 
					 | 
				
			||||||
		body      = ctx.Request.Body()
 | 
					 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	if strings.TrimSpace(eventName) == ""{
 | 
					
 | 
				
			||||||
 | 
						reportTypeData := GetReportTypeDataPool()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						reportTypeData.Appid = ctx.UserValue("appid").(string)
 | 
				
			||||||
 | 
						reportTypeData.Debug = ctx.UserValue("debug").(string)
 | 
				
			||||||
 | 
						reportTypeData.EventName = ctx.UserValue("eventName").(string)
 | 
				
			||||||
 | 
						reportTypeData.Body = ctx.Request.Body()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							reportTypeData.Appid = ""
 | 
				
			||||||
 | 
							reportTypeData.TableId = ""
 | 
				
			||||||
 | 
							reportTypeData.TimeNow = ""
 | 
				
			||||||
 | 
							reportTypeData.Debug = ""
 | 
				
			||||||
 | 
							reportTypeData.EventName = ""
 | 
				
			||||||
 | 
							reportTypeData.Ip = ""
 | 
				
			||||||
 | 
							reportTypeData.Body = nil
 | 
				
			||||||
 | 
							reportTypeDataPool.Put(reportTypeData)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if strings.TrimSpace(reportTypeData.EventName) == "" {
 | 
				
			||||||
		this.FastError(ctx, errors.New("事件名 不能为空"))
 | 
							this.FastError(ctx, errors.New("事件名 不能为空"))
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if strings.TrimSpace(appid) == ""{
 | 
						if strings.TrimSpace(reportTypeData.Appid) == "" {
 | 
				
			||||||
		this.FastError(ctx, errors.New("appid 不能为空"))
 | 
							this.FastError(ctx, errors.New("appid 不能为空"))
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	reportService := report.ReportService{}
 | 
						reportService := report.ReportService{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tableId, err := reportService.GetTableid(appid, appkey)
 | 
						reportTypeData.TableId, err = reportService.GetTableid(reportTypeData.Appid, appkey)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		this.FastError(ctx, err)
 | 
							this.FastError(ctx, err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
@ -75,36 +106,34 @@ func (this ReportController) ReportAction(ctx *fasthttp.RequestCtx) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
	defer duck.Put()
 | 
						defer duck.Put()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gjsonArr := gjson.GetManyBytes(body, "xwl_distinct_id", "xwl_ip", "xwl_part_date")
 | 
						gjsonArr := gjson.GetManyBytes(reportTypeData.Body, "xwl_distinct_id", "xwl_ip", "xwl_part_date")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	xwlDistinctId := gjsonArr[0].String()
 | 
						xwlDistinctId := gjsonArr[0].String()
 | 
				
			||||||
	xwlIp := gjsonArr[1].String()
 | 
						reportTypeData.Ip = gjsonArr[1].String()
 | 
				
			||||||
	xwlPartDate := gjsonArr[2].String()
 | 
						reportTypeData.TimeNow = gjsonArr[2].String()
 | 
				
			||||||
	if xwlDistinctId == "" {
 | 
						if xwlDistinctId == "" {
 | 
				
			||||||
		this.FastError(ctx, errors.New("xwl_distinct_id 不能为空"))
 | 
							this.FastError(ctx, errors.New("xwl_distinct_id 不能为空"))
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if xwlIp == "" {
 | 
						if reportTypeData.Ip == "" {
 | 
				
			||||||
		xwlIp = util.CtxClientIP(ctx)
 | 
							reportTypeData.Ip = util.CtxClientIP(ctx)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if xwlPartDate == "" {
 | 
						if reportTypeData.TimeNow  == "" {
 | 
				
			||||||
		xwlPartDate = time.Now().Format(util.TimeFormat)
 | 
							reportTypeData.TimeNow  = time.Now().Format(util.TimeFormat)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						duck.NewReportType(reportTypeData)
 | 
				
			||||||
	duck.NewReportType(appid, tableId, debug, xwlPartDate, eventName, xwlIp, ctx.PostBody())
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kafkaData := duck.GetkafkaData()
 | 
						kafkaData := duck.GetkafkaData()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if reportService.IsDebugUser(debug, xwlDistinctId, tableId) {
 | 
						if reportService.IsDebugUser(reportTypeData.Debug, xwlDistinctId, reportTypeData.TableId) {
 | 
				
			||||||
		pool := parserPool.Get()
 | 
							pool := parserPool.Get()
 | 
				
			||||||
		defer parserPool.Put(pool)
 | 
							defer parserPool.Put(pool)
 | 
				
			||||||
		metric, debugErr :=  pool.Parse(body)
 | 
							metric, debugErr := pool.Parse(reportTypeData.Body)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if debugErr != nil {
 | 
							if debugErr != nil {
 | 
				
			||||||
			logs.Logger.Error("parser.ParseKafkaData ", zap.Error(err))
 | 
								logs.Logger.Error("parser.ParseKafkaData ", zap.Error(err))
 | 
				
			||||||
@ -144,7 +173,7 @@ func (this ReportController) ReportAction(ctx *fasthttp.RequestCtx) {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		xwlUpdateTime := gjson.GetBytes(body, "xwl_update_time").String()
 | 
							xwlUpdateTime := gjson.GetBytes(reportTypeData.Body, "xwl_update_time").String()
 | 
				
			||||||
		clinetT := util.Str2Time(xwlUpdateTime, util.TimeFormat)
 | 
							clinetT := util.Str2Time(xwlUpdateTime, util.TimeFormat)
 | 
				
			||||||
		serverT := util.Str2Time(kafkaData.ReportTime, util.TimeFormat)
 | 
							serverT := util.Str2Time(kafkaData.ReportTime, util.TimeFormat)
 | 
				
			||||||
		if math.Abs(serverT.Sub(clinetT).Minutes()) > 10 {
 | 
							if math.Abs(serverT.Sub(clinetT).Minutes()) > 10 {
 | 
				
			||||||
@ -156,7 +185,7 @@ func (this ReportController) ReportAction(ctx *fasthttp.RequestCtx) {
 | 
				
			|||||||
			m["data_judge"] = "数据检验通过"
 | 
								m["data_judge"] = "数据检验通过"
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		err = reportService.InflowOfDebugData(m, eventName)
 | 
							err = reportService.InflowOfDebugData(m, reportTypeData.EventName)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			logs.Logger.Error("reportService.InflowOfDebugData", zap.Error(err))
 | 
								logs.Logger.Error("reportService.InflowOfDebugData", zap.Error(err))
 | 
				
			||||||
@ -169,7 +198,7 @@ func (this ReportController) ReportAction(ctx *fasthttp.RequestCtx) {
 | 
				
			|||||||
			this.FastError(ctx, my_error.NewError(m["error_reason"].(string), 10006))
 | 
								this.FastError(ctx, my_error.NewError(m["error_reason"].(string), 10006))
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if debug == report.DebugNotToDB {
 | 
							if reportTypeData.Debug == report.DebugNotToDB {
 | 
				
			||||||
			this.Output(ctx, map[string]interface{}{
 | 
								this.Output(ctx, map[string]interface{}{
 | 
				
			||||||
				"code": 0,
 | 
									"code": 0,
 | 
				
			||||||
				"msg":  "上报成功(数据不入库)",
 | 
									"msg":  "上报成功(数据不入库)",
 | 
				
			||||||
@ -178,8 +207,7 @@ func (this ReportController) ReportAction(ctx *fasthttp.RequestCtx) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = duck.InflowOfKakfa(Marshaler)
 | 
				
			||||||
	err = duck.InflowOfKakfa()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		this.FastError(ctx, err)
 | 
							this.FastError(ctx, err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
 | 
				
			|||||||
@ -7,14 +7,13 @@ import (
 | 
				
			|||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Shopify/sarama"
 | 
						"github.com/Shopify/sarama"
 | 
				
			||||||
	jsoniter "github.com/json-iterator/go"
 | 
					 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ReportInterface interface {
 | 
					type ReportInterface interface {
 | 
				
			||||||
	NewReportType(appid, tableId, debug, timeNow, eventName, ip string, body []byte)
 | 
						NewReportType(data *ReportTypeData)
 | 
				
			||||||
	GetkafkaData() model.KafkaData
 | 
						GetkafkaData() model.KafkaData
 | 
				
			||||||
	InflowOfKakfa() (err error)
 | 
						InflowOfKakfa(marshaler func(v interface{}) ([]byte, error)) (err error)
 | 
				
			||||||
	Put()
 | 
						Put()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -34,13 +33,23 @@ var eventPool = sync.Pool{
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *UserReport) NewReportType(appid, tableId, debug, timeNow, eventName, ip string, body []byte) {
 | 
					type ReportTypeData struct {
 | 
				
			||||||
	this.kafkaData.APPID = appid
 | 
						Appid string
 | 
				
			||||||
	this.kafkaData.TableId = tableId
 | 
						TableId string
 | 
				
			||||||
	this.kafkaData.Debug = debug
 | 
						Debug string
 | 
				
			||||||
	this.kafkaData.ReqData = body
 | 
						TimeNow string
 | 
				
			||||||
	this.kafkaData.Ip = ip
 | 
						EventName string
 | 
				
			||||||
	this.kafkaData.ReportTime = timeNow
 | 
						Ip string
 | 
				
			||||||
 | 
						Body []byte
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *UserReport) NewReportType(data *ReportTypeData) {
 | 
				
			||||||
 | 
						this.kafkaData.APPID = data.Appid
 | 
				
			||||||
 | 
						this.kafkaData.TableId = data.TableId
 | 
				
			||||||
 | 
						this.kafkaData.Debug = data.Debug
 | 
				
			||||||
 | 
						this.kafkaData.ReqData = data.Body
 | 
				
			||||||
 | 
						this.kafkaData.Ip = data.Ip
 | 
				
			||||||
 | 
						this.kafkaData.ReportTime = data.TimeNow
 | 
				
			||||||
	this.kafkaData.ReportType = model.UserReportType
 | 
						this.kafkaData.ReportType = model.UserReportType
 | 
				
			||||||
	this.kafkaData.EventName = "用户属性"
 | 
						this.kafkaData.EventName = "用户属性"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -49,12 +58,11 @@ func (this *UserReport) GetkafkaData() model.KafkaData {
 | 
				
			|||||||
	return this.kafkaData
 | 
						return this.kafkaData
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *UserReport) InflowOfKakfa() (err error) {
 | 
					func (this *UserReport) InflowOfKakfa(marshaler func(v interface{}) ([]byte, error)) (err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var json = jsoniter.ConfigCompatibleWithStandardLibrary
 | 
					 | 
				
			||||||
	msg := &sarama.ProducerMessage{}
 | 
						msg := &sarama.ProducerMessage{}
 | 
				
			||||||
	msg.Topic = model.GlobConfig.Comm.Kafka.ReportTopicName
 | 
						msg.Topic = model.GlobConfig.Comm.Kafka.ReportTopicName
 | 
				
			||||||
	sendData, _ := json.Marshal(this.kafkaData)
 | 
						sendData, _ := marshaler(this.kafkaData)
 | 
				
			||||||
	msg.Value = sarama.ByteEncoder(sendData)
 | 
						msg.Value = sarama.ByteEncoder(sendData)
 | 
				
			||||||
	msg.Timestamp = time.Now()
 | 
						msg.Timestamp = time.Now()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -69,22 +77,22 @@ type EventReport struct {
 | 
				
			|||||||
	kafkaData model.KafkaData
 | 
						kafkaData model.KafkaData
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *EventReport) NewReportType(appid, tableId, debug, timeNow, eventName, ip string, body []byte) {
 | 
					func (this *EventReport) NewReportType(data *ReportTypeData) {
 | 
				
			||||||
	this.kafkaData.APPID = appid
 | 
						this.kafkaData.APPID = data.Appid
 | 
				
			||||||
	this.kafkaData.TableId = tableId
 | 
						this.kafkaData.TableId = data.TableId
 | 
				
			||||||
	this.kafkaData.Debug = debug
 | 
						this.kafkaData.Debug = data.Debug
 | 
				
			||||||
	this.kafkaData.ReqData = body
 | 
						this.kafkaData.ReqData = data.Body
 | 
				
			||||||
	this.kafkaData.ReportTime = timeNow
 | 
						this.kafkaData.ReportTime = data.TimeNow
 | 
				
			||||||
	this.kafkaData.ReportType = model.EventReportType
 | 
						this.kafkaData.ReportType = model.EventReportType
 | 
				
			||||||
	this.kafkaData.EventName = eventName
 | 
						this.kafkaData.EventName = data.EventName
 | 
				
			||||||
	this.kafkaData.Ip = ip
 | 
						this.kafkaData.Ip = data.Ip
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *EventReport) InflowOfKakfa() (err error) {
 | 
					func (this *EventReport) InflowOfKakfa(marshaler func(v interface{}) ([]byte, error)) (err error) {
 | 
				
			||||||
	var json = jsoniter.ConfigCompatibleWithStandardLibrary
 | 
					
 | 
				
			||||||
	msg := &sarama.ProducerMessage{}
 | 
						msg := &sarama.ProducerMessage{}
 | 
				
			||||||
	msg.Topic = model.GlobConfig.Comm.Kafka.ReportTopicName
 | 
						msg.Topic = model.GlobConfig.Comm.Kafka.ReportTopicName
 | 
				
			||||||
	sendData, _ := json.Marshal(this.kafkaData)
 | 
						sendData, _ := marshaler(this.kafkaData)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	msg.Value = sarama.ByteEncoder(sendData)
 | 
						msg.Value = sarama.ByteEncoder(sendData)
 | 
				
			||||||
	msg.Timestamp = time.Now()
 | 
						msg.Timestamp = time.Now()
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ReportService struct {
 | 
					type ReportService struct {
 | 
				
			||||||
	buff bytes.Buffer
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var tableIdMap sync.Map
 | 
					var tableIdMap sync.Map
 | 
				
			||||||
@ -33,12 +33,11 @@ func RefreshTableIdMap(t time.Duration) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *ReportService) GetTableid(appid, appkey string) (table string, err error) {
 | 
					func (this *ReportService) GetTableid(appid, appkey string) (table string, err error) {
 | 
				
			||||||
 | 
						buff := new(bytes.Buffer)
 | 
				
			||||||
	this.buff.Reset()
 | 
						buff.WriteString(appid)
 | 
				
			||||||
	this.buff.WriteString(appid)
 | 
						buff.WriteString("_xwl_")
 | 
				
			||||||
	this.buff.WriteString("_xwl_")
 | 
						buff.WriteString(appkey)
 | 
				
			||||||
	this.buff.WriteString(appkey)
 | 
						key := buff.String()
 | 
				
			||||||
	key := this.buff.String()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if val, found := tableIdMap.Load(key); found {
 | 
						if val, found := tableIdMap.Load(key); found {
 | 
				
			||||||
		table = val.(string)
 | 
							table = val.(string)
 | 
				
			||||||
 | 
				
			|||||||
@ -28,7 +28,6 @@ type Parser interface {
 | 
				
			|||||||
type Pool struct {
 | 
					type Pool struct {
 | 
				
			||||||
	name         string
 | 
						name         string
 | 
				
			||||||
	timeZone     *time.Location
 | 
						timeZone     *time.Location
 | 
				
			||||||
	knownLayouts sync.Map
 | 
					 | 
				
			||||||
	pool         sync.Pool
 | 
						pool         sync.Pool
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -43,18 +42,6 @@ func NewParserPool(name string) (pp *Pool, err error) {
 | 
				
			|||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*func ParseKafkaData(data []byte) (metric *FastjsonMetric, err error) {
 | 
					 | 
				
			||||||
	pp, err := NewParserPool("fastjson")
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	jsonParser := pp.Get()
 | 
					 | 
				
			||||||
	defer pp.Put(jsonParser)
 | 
					 | 
				
			||||||
	metric, err = jsonParser.Parse(data)
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Get returns a Parser from pp.
 | 
					// Get returns a Parser from pp.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// The Parser must be Put to pp after use.
 | 
					// The Parser must be Put to pp after use.
 | 
				
			||||||
 | 
				
			|||||||
@ -22,7 +22,8 @@ func InArr(array []int, column int) bool {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func InstrArr(array []string, column string) bool {
 | 
					func InstrArr(array []string, column string) bool {
 | 
				
			||||||
	i := 0
 | 
						i := 0
 | 
				
			||||||
	for i < len(array) {
 | 
						l := len(array)
 | 
				
			||||||
 | 
						for i < l {
 | 
				
			||||||
		if array[i] == column {
 | 
							if array[i] == column {
 | 
				
			||||||
			return true
 | 
								return true
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user