public async Task <string> GetIndexBasicData(QueryRequest request)
        {
            var start = request.Start.ToDateTime();
            var end   = request.End.ToDateTime();

            BasicFilter filter = new BasicFilter
            {
                Service   = request.Service,
                Instance  = request.Instance,
                StartTime = start,
                EndTime   = end,
                Count     = 6
            };

            var basic = _storage.GetIndexBasicDataAsync(filter);

            var top = _storage.GetGroupData(filter, GroupType.Service);

            var range = GetTimeRange(start, end);

            var trend = _storage.GetServiceTrend(filter, range);

            var heatmap = _storage.GetServiceHeatMap(filter, range);

            await Task.WhenAll(basic, top, trend, heatmap);

            var result = new HttpResultEntity(1, "ok", new
            {
                Total       = basic.Result.Total,
                ServerError = basic.Result.ServerError,
                Service     = basic.Result.Service,
                Instance    = basic.Result.Instance,
                Top         = top.Result,
                Trend       = trend.Result,
                HeatMap     = heatmap.Result
            });

            return(Json(result));
        }
Exemple #2
0
        public async Task <string> GetIndexBasicData(QueryRequest request)
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            var start = request.Start.ToDateTime();
            var end   = request.End.ToDateTime();

            #region BuildService
            if (request.Service.IsEmpty() || request.Service == "ALL")
            {
                request.Service = "";
            }

            if (request.Instance.IsEmpty() || request.Instance == "ALL")
            {
                request.LocalIP   = "";
                request.LocalPort = 0;
            }
            else
            {
                request.LocalIP   = request.Instance.Substring(0, request.Instance.LastIndexOf(':'));
                request.LocalPort = request.Instance.Substring(request.Instance.LastIndexOf(':') + 1).ToInt();
            }

            #endregion

            IndexPageDataFilterOption option = new IndexPageDataFilterOption {
                Service         = request.Service,
                LocalIP         = request.LocalIP,
                LocalPort       = request.LocalPort,
                StartTime       = start,
                EndTime         = end,
                StartTimeFormat = "yyyy-MM-dd HH:mm:ss",
                EndTimeFormat   = "yyyy-MM-dd HH:mm:ss",
                Take            = 6
            };


            BasicFilter filter = new BasicFilter
            {
                Service   = request.Service,
                Instance  = request.Instance,
                StartTime = start,
                EndTime   = end,
                Count     = 6
            };


            var a0 = stopwatch.ElapsedMilliseconds;

            var basic = await _storage.GetIndexBasicDataAsync(filter);

            var a1 = stopwatch.ElapsedMilliseconds;

            var top = await _storage.GetGroupData(filter, GroupType.Service);

            var a2 = stopwatch.ElapsedMilliseconds;

            var range = GetTimeRange(option.StartTime.Value, option.EndTime.Value);

            var trend = await _storage.GetServiceTrend(filter, range);

            var a3 = stopwatch.ElapsedMilliseconds;

            var heatmap = await _storage.GetServiceHeatMap(filter, range);

            var a4 = stopwatch.ElapsedMilliseconds;

            //await Task.WhenAll(basic,top,trend,heatmap);

            stopwatch.Stop();

            return(Json(new HttpResultEntity(1, "ok", new
            {
                Total = basic.Total,
                ServerError = basic.ServerError,
                Service = basic.Service,
                Instance = basic.Instance,
                Top = top,
                Trend = trend,
                HeatMap = heatmap,
                Cost = stopwatch.ElapsedMilliseconds
            })));
        }