private void setTargetHealthSerive()
 {
     lock (obj)
     {
         //判断是否新增节点
         int count = HealthServices.Except(TargetSpiderService.ServiceEntryies.Distinct()).Count();
         if (count == 0)
         {
             return;
         }
         TargetSpiderService.ServiceEntryies.Clear();
         var weights   = HealthServices.Select(o => o.Weight).ToArray();
         int maxFactor = maxCommonFactor(weights);
         foreach (var item in HealthServices)
         {
             int num = item.Weight / maxFactor;
             for (int i = 0; i < num; i++)
             {
                 SpiderServiceEntry spiderServiceEntry = new SpiderServiceEntry(item.Url)
                 {
                     Weight   = item.Weight,
                     IsHealth = item.IsHealth
                 };
                 TargetSpiderService.ServiceEntryies.Add(spiderServiceEntry);
             }
         }
     }
 }
예제 #2
0
        public void Configure(IWebHostBuilder builder)
        {
            //持久化
            builder.ConfigureServices((context, services) =>
            {
                services.AddSpider(options =>
                {
                    {
                        var s1 = new SpiderServiceEntry("http://api.coobeedior.com")
                        {
                            Weight = 2
                        };
                        var s2 = new SpiderServiceEntry("http://47.111.87.132:8012")
                        {
                            Weight = 4
                        };
                        var spiderService = new SpiderService("wechat")
                        {
                            StrategyType = StrategyType.WeightRoundRobin, HealthUrl = "index"
                        };
                        spiderService.ServiceEntryies.Add(s1);
                        spiderService.ServiceEntryies.Add(s2);
                        options.Services.Add(spiderService);
                    }

                    //{
                    //    var s1 = new SpiderServiceEntry() { Url = "http://api.coobeedior.com", Weight = 2 };
                    //    var s2 = new SpiderServiceEntry() { Url = "http://47.111.87.132:8012", Weight = 4 };
                    //    var spiderService = new SpiderService() { ServiceName = "name", StrategyType = StrategyType.WeightRoundRobin };
                    //    spiderService.ServiceEntryies.Add(s1);
                    //    spiderService.ServiceEntryies.Add(s2);
                    //    options.Services.Add(spiderService);

                    //}
                });
                services.AddSingleton <IStartupFilter, SpiderStartupFilter>();
            });
        }