l'équilibrage de charge du client (ruban)

charge du client pour atteindre

1, connaissent leur destination de demande (nom d'hôte virtuel, la valeur par défaut est spring.application.name)
2, obtenir toute la liste d'adresses du serveur (qui est, le registre).
3, sélectionnez une adresse, trouver le nom d'hôte virtuel correspondant ip, le port (correspondant au nom d'hôte virtuel à l'adresse IP et le port).
4, initier la demande réelle (le plus de demande simples).

Principe de Ribbion

  1. INTERCEPTIONS la demande.
  2. Obtenir l'URL.
  3. Liste serviceName obtenir par l'URL.
  4. Par l' algorithme d'équilibrage de charge pour sélectionner un ServiceInstance. ( Charge algorithme connectable personnalisé, et peut être personnalisé via le fichier de configuration ou un code )
  5. Vous pouvez également la demande, l'original dans la serviceName url ip + port.

noyau ILoadBalance

Ce qui inclut tous les groupes de fournisseurs de services: IP et le port. Chaque service a un ILoadBalancer, ILoadBalancer qui a la liste des services .

1, ILoadBalancer engagent eurêka et le ruban. L' accès à la liste d'adresses de services, sélectionnez l' une.
2, chaque service a ILoadBalancer.
3, sélectionnez le service avec IRule (charge de la stratégie d'équilibrage).

Traitement des services indésirables:
deux façons:
1. mécanisme de mise à jour, la dernière mise à jour du service.
mécanisme 2.ping, un bon service d'essayer.

Charger la stratégie d'équilibrage

Par défaut: ZoneAvoidanceRule (Stratégie régionale équilibre)
BestAvailableRule ( la plus basse stratégie de concurrence)
RoundRobinRule (vote
politique) . . .

charge de la faim Configuration

ruban:
impatient charge:
permis: true
clients:
- SERVICE-NAM

résumé

  1. Plusieurs équilibrage de charge. (Dur, mou (serveur, client (ruban)))
  2. Le ruban peut être utilisé seul. La nécessité de fournir la liste des adresses des services.
  3. Principe. Interceptant la demande, et l'adresse de remplacement (le port ip + serviceName).
  4. Source. ILoadBalancer, Carte <nom de service, ILoadBalancer>
  5. @LoadBalanced, intercepteur. (LoadBalancerInterceptor l'ordonnée à l'origine)
  6. Configuration personnalisée: configuration java, configuration YML.
  7. stratégie d'équilibrage de charge sur mesure

configuration de charge personnalisée

1, java

//所有client走入该配置
@RibbonClients(defaultConfiguration = RibbonConfiguration.class)
//RibbonConfiguration中可使用ribbon提供负载,或自定义负载
//单个client走入该配置
@RibbonClient(name = "service-name",configuration = RibbonConfiguration.class)

2, YML

//不添加service-name为所有
service-name:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
//自定义策略
service-sms:
  ribbon:
    # 自定义负载策略
    NFLoadBalancerRuleClassName: com.mybalance.RaymondRule
Publié 25 articles originaux · louanges gagnées 0 · Vues 572

Je suppose que tu aimes

Origine blog.csdn.net/RaymondCoder/article/details/105214524
conseillé
Classement