Talking a little out of my depth here as I haven't ben in that code,
so if there are corrections they're welcome.

In general, there's nothing special between TLOG and PULL replicas in
terms of query routing. For
that matter, nothing special about either of these .vs. NRT replicas
for _queries_.

SolrCloud has internal load balancers that route queries across the
network. SolrCloud automatically
bypasses all  non-active replicas. So there's no particular need to
use a fronting load balancer. That
said, it depends on how you are accessing SolrCloud. By that I mean if
you provide a single HTTP end
point to a single node, you have a single point of failure. Even this
is irrelevant if you use SolrJ because
it has (you guessed it) an internal load balancer and is
ZooKeeper-aware so can handle nodes coming and
going.

So look at it this way. Each Solr node has a list of active replicas
and directs queries (or sub-queries) to those
replicas. It doesn't matter _where_ the replica is or, indeed, whether
any of them are on the same node. As
long as Solr is running, it sends queries to the right place.

"will it automatically favour PULL replicas"
No. There is so little extra work in a TLOG .vs. a PULL replica that
this is minimally useful. The extra work
a TLOG replica does is just to flush out the incoming documents to the
tlog, a bit of I/O. Much more
interesting is that the new metrics are in place to allow much more
intelligent use of resources. A heavy
request on a replica will put _much_ more load on that machine than
handling the TLOG. The metrics
will allow SolrCloud to say "replicas 1, 3, 5 are pretty busy, let's
not use them for more work until they
get less busy", and it won't matter whether they're TLOG, PULL or NRT replicas..

Best,
Erick

On Sun, Feb 11, 2018 at 6:35 PM, Greg Roodt <gro...@gmail.com> wrote:
> Hi
>
> I have a question around how queries are routed and load-balanced in a
> cluster of mixed TLOG and PULL replicas.
>
> I thought that I might have to put a load-balancer in front of the PULL
> replicas and direct queries at them manually as nodes are added and removed
> as PULL replicas. However, it seems that SolrCloud handles this
> automatically?
>
> If I add a new PULL replica node, it goes into state="recovering" while it
> pulls the core. As expected. What happens if queries are directed at this
> node while in this state? From what I am observing, the query gets directed
> to another node?
>
> If SolrCloud is handling the routing of requests to active nodes, will it
> automatically favour PULL replicas for read queries and TLOG replicas for
> writes?
>
> Thanks
> Greg

Reply via email to