Ik begrijp uw beschrijving en je punt. Nu moeten we om uit te vinden hoe het stel technisch werk.
Een kwestie die ik hier zien, is hoe wij erkennen dat wij nu al beperkt beschikbaar na die waar eerder bereikt hebben.
We kunnen gewoon elke keer vragen preferred provider en ga naar de volgende. Dit kost prestaties - omdat voor elke aanvraag pagina waarvoor de vertaling, zal daaraan mislukte oproepen naar voorkeur provider, dan naar de volgende een (dus het kan verschillende niet-geslaagde oproepen wanneer vBET meer API's steunen zal).
Andere oplossing zou zijn om informatie die preferred provider niet beschikbaar is op te slaan en direct naar volgende. Dit zou veel sneller, omdat het controleren van lokale variabele is veel sneller dan wachten op antwoord via een externe server. Deze keer hebben we andere kwestie - we weten niet wanneer preferred provider beschikbaar. We kunnen natuurlijk gemaakt een aantal geplande taak die eens zou voor eenvoudige (korte) vertaling voor bijvoorbeeld vragen per uur / dag om het te controleren. Dus in deze strategie moeten we beslissen hoe vaak standaard een dergelijke taak veronderstellen aan het werk. Natuurlijk zouden we controleren alleen wanneer een provider is gemarkeerd als niet beschikbaar.
Ook als we markeren aanbieders als onbeschikbaar - wat te doen als we weten dat alle aanbieders niet beschikbaar zijn - voeg wat informatie voor de eindgebruiker of gewoon vertalen wat er in cache en de rest als origineel, zonder enige extra informatie over tijdelijk ontbreken van de vertaling aanbieders .
Het maakt niet uit welke manier dit zal gebeuren, zal Google worden behandeld als een API (v1 of v2, afhankelijk van de configuratie) - er is geen zin om het te splitsen, omdat Google v1 zal zeer binnenkort worden gesloten.
Een ander ding is om aanbieders wachtrij voor elk paar taal afzonderlijk configureren. Op dit moment kunt vBET al configureren vertaling provider voor elk paar taal. Ik denk dat we het van één waarde door komma's gescheiden waarden (CSV veranderen kunnen). Op deze manier zullen we weten voor elk paar taal welke providers ondersteunen deze vertaling en wat zijn bestelling Voorkeuren (gewoon bestellen op CSV-lijst).
LET OP: Dit heeft een aantal invloed op de prestaties toch. In plaats van het creëren van een object voor de vertaling zullen we tal van dergelijke objecten en extra verpakking object (om het transparant te maken voor andere delen van de code en minder bugs gevoelig) te creëren. Natuurlijk zullen we niet maken objecten voor providers we weten niet beschikbaar zijn op dit moment.
Oplossing voor dit zou opnieuw te configureren voor betere prestaties en verwijder providers queue - net zoals het nu is - een provider per talencombinatie.
Dit moet niet duur te zijn voor de prestaties, maar nog steeds een aantal extra logica en geheugen verbruik.
Vertel welke oplossing de voorkeur heeft.