There exists an infinite family of analytic solutions. But most are not clear until you have the machinery of Q-calculus!
We start by "standardizing" your invariance equation into a form that is ripe for analysis using "q" series.
So $$ f(x) = a f(bx) \rightarrow \frac{f(bx) - f(x)}{(b-1)x} = \frac{(1-a)}{(b-1)x} f(x)$$
You can observe that algebraically these both say the exact same thing. But we now show the advantage in this later techniques:
$ \frac{f(bx) - f(x)}{(b-1)x}$ also known as $D_{(b-1)x,x}(f) \ , (\frac{d}{dx})_b, \ \text{and} \ D_{b}$ can be seen as an "operator" acting on $f$ in the same way that differentiation, or integration are operators that can act on $f$. And more specifically there is a notion of a "taylor-series" for this operator, called a q-series, or given your choice of the variable $b$ as opposed to $q$, I'll call it a $b$ series, and call this operator the Jackson-B Derivative. Information below:
https://en.wikipedia.org/wiki/Q-derivative
So the idea is that like Taylor's theorem, which states given a function $f$ and a point c, We can express
$$ f = f(c) + f'(c)(x-c) + \frac{1}{2} f''(c) (x-c)^2 + ... $$
There exists an analogous B-series theorem which states that we can express
$$ f = f(c) + \frac{(1-b)^1(x-c)}{(1-b^1)} D_b f (c) + \frac{(1-b)^2(x-c)^2}{(1-b^1)(1-b^2)} D_bD_bf(c) + \frac{(1-b)^3(x-c)^3}{(1-b^1)(1-b^2)(1-b^3)} D_b D_b D_b f(c) + ...$$
So now what we want to do is get a closed form for $\underbrace{D_b D_b ... D_b}_{\text{n times}}f$
To evaluate it at a point c. I will give you an update tonight on this closed form, stay tuned!
Update:
So to derive the closed form, we note that a sum and product rule of the operator:
$$ D_b(f + g) = D_b(f) + D_b(g)$$
$$ D_b(f*g) = D_b(f)*g + f*D_b(g) + (b-1)x D_b(f) D_b(g)$$
Which combine to give this next fact:
$$ D_b \left( \frac{c}{x^n} \right) = - c\frac{1 + b + ... b^{n-1}}{x^{n+1}} $$
And now here comes the buildup. Assume $c = \frac{(1-a)}{(b-1)}$. Then for our specific $f$ and some constant $\mu$ we have:
$$ D_b \left( \frac{\mu}{x^{n}} f \right) = \frac{\mu c}{x^{n+1}}f - \frac{(1+b+b^2+..b^{n-1})\mu}{x^{n+1}} f + \frac{(1 - b^{n})\mu c}{x^{n+1}} f = $$
$$ \frac{\mu c ( 2 - b^n) - \mu(1 + b + ... b^{n-1})}{x^{n+1}} f$$
From here it naturally arises that
$$ D_b^{n}(f) = \frac{\mu_n}{x^n}{f} $$
Where:
$$ \mu_n = {\mu_{n-1} c ( 2 - b^{n-1}) - \mu_{n-1}\frac{1 - b^{n}}{1-b}}$$
And this is fine for computation, you could write a computer program using this, to effectively calculate each $\mu_n$ and from there write that, the general solution to your equation is
$$ f = \sum_{i=0}^{\infty} \mu_n \frac{(1-b)^i(x-c)^i}{(1-b)(1-b^2)...(1-b^{i})} f(c) $$
And for each selection of what $f(c)$ is, you get a different analytic solution.
If you really want to dive into the deep end:
You can actually re-write
$$ \mu_n = {\mu_{n-1} c ( 2 - b^{n-1}) - \mu_{n-1}\frac{1 - b^{n}}{1-b}}$$
Instead as ($\gamma+1 = n$)
$$ \mu_{\gamma+1} = {\mu_{\gamma} c ( 2 - b^{\gamma}) - \mu_{\gamma}\frac{1 - b^{\gamma+1}}{1-b}}$$
And then use the machinery of The calculus of finite-differences to derive a closed form for $\mu$ to evaluate it explicitly, as opposed to recursively.
More Info here: https://en.wikipedia.org/wiki/Finite_difference#Calculus_of_finite_differences
And a sample derivation here: (Warning it is very hairy)
Solve the functional equation $ q \, \frac{f(x+1)}{f(x)}=\frac{h(x+1)}{h(x)}. $
Motivation can be read about here:
http://vixra.org/pdf/1502.0152v1.pdf