K-Pgڥք • ͬͱ૿͑Δɺͬͱ৳ͼΔDAU • Tuning JVM/GC • Tried CMS , Parallel GC and G1GC. Parallel GC was better for this Era • Tuning Query • Use filter query correctly • Split Index and Fallback in Nginx
Neogene period Recent Master update select Recent Slave Recent Slave Condition Slave OpenResty Replication pollInterval 30s All Master All Slave All Slave update Replication pollInterval 1min Condition Slave Suggest Slave Suggest Slave Replication pollInterval bit long PHP General Specific purpose
Neogene period Recent Master update select Recent Slave Recent Slave Condition Slave OpenResty Replication pollInterval 30s All Master All Slave All Slave update Replication pollInterval 1min Condition Slave Suggest Slave Suggest Slave Replication pollInterval bit long PHP General Specific purpose
Neogene period Recent Master update select Recent Slave Recent Slave Condition Slave OpenResty Replication pollInterval 30s All Master All Slave All Slave update Replication pollInterval 1min Condition Slave Suggest Slave Suggest Slave Replication pollInterval bit long PHP General Specific purpose
PHP PHP API MySQL blackhole black hole Q4M Solr (master) worker trigger dequeue black hole Q4M Solr (master) worker trigger dequeue black hole Q4M Solr (master) worker trigger dequeue black hole Q4M Solr (master) worker trigger dequeue soft commit several times per second Update Update item selected by consistent hashing Use MySQL replication as PubSub
black hole Q4M Solr (master) worker trigger dequeue consul my $res = $ua->get(‘http://localhost/v1/health/service/".$SRV.'?passing'); my $ref = JSON::XS::decode_json($res->content); my @list = sort { $a cmp $b } map { $_->{Node}{Address} } @$ref; my $ketama = Algorithm::ConsistentHash::Ketama->new(); $ketama->add_bucket($_ . '_' . $timestamp, 1) for @list; my $s1 = $ketama->hash($item_id); return $s1 eq $my_ip; Get server list from Consul Make Consistent Hash Drawing by consistent-hashing Update Solr consistent-hashingͷ݁Ռ͕trueͳΒɺupdate consistent-hashingͷ݁Ռ͕falseͳΒɺdelete
black hole Q4M Solr (master) worker trigger dequeue consul black hole Q4M Solr (master) worker trigger dequeue consul black hole Q4M Solr (master) worker trigger dequeue consul black hole Q4M Solr (master) worker trigger dequeue consul API/Go PHP PHP select distribute select request to all Solr servers and merge their resposne select select select select