文档首页> 云容器引擎 CCE> 最佳实践> 微服务治理> SpringCloud微服务Istio迁移指导
更新时间:2022-05-07 GMT+08:00
分享

SpringCloud微服务Istio迁移指导

操作场景

使用传统Spring Cloud开发的微服务,做容器化改造时,通过本章节提供的方案即可将Spring Cloud开发的微服务迁移到Kubernetes和Istio,从而使用基础设施提供的运行治理能力。

迁移方案

  • 对SpringCloud微服务做适配修改

    对SpringCloud微服务做适当修改, 可以将SpringCloud的微服务的流量导流到Istio的代理上,从而执行Istio的服务治理能力。

    实现上述功能无需修改代码,只需要修改微服务包中“\client\src\main\resources”和“\server\src\main\resources”路径下的“application.yml”配置文件。

    其中:

    • ① :调换Eureka连接配置 ,不再连接Eureka注册中心。
    • ② :配置调用的微服务信息。
    • ③ :禁用Eureka服务注册、服务发现、禁用Hystrix等。

    其中①和③都是通用的禁用SpringCloud中原有微服务治理的功能,只有②是必要的对要访问的服务进行适当配置。

  • 在Istio中替换SpringCloud微服务功能

    根据SpringCloud官方提供的服务治理能力,参照表1执行迁移到Istio后的对应操作。

    服务发现 、 负载均衡等完全废弃熔断等能力可选禁用掉使用Istio的对应能力。

    表1 迁移到Istio后的操作

    SpringCloud功能

    功能说明

    配置示例

    Istio结合

    Service Discovery: Eureka Clients

    SDK的服务注册和服务发现

    eureka:
     client:
     serviceUrl:
     defaultZone:
     http://localhost:8761/eureka/

    废弃,基于Istio的服务发现,无需服务注册。

    Service Discovery: Eureka Server

    Eureka服务注册中心

    server: 
      port: 8761
    eureka:
      client:
        registerWithEureka: false
        fetchRegistry: false
      server:
        waitTimeInMsWhenSyncEmpty: 0

    废弃,不用服务注册中心,基于K8s服务发现。

    Circuit Breaker: Hystrix Dashboard

    HystrixCommand的Metric

    hystrix.command.default.metrics.rolling
    Stats.timeInMilliseconds
    hystrix.command.default.metrics.rolling
    Stats.numBuckets
    hystrix.command.default.metrics.rolling
    Percentile.enabled

    Istio的遥测提供更多的Metric、访问日志调用链等。

    HystrixTimeoutsAndRibbonClients

    Hystrix超时等配置

    hystrix.command.default.circuitBreaker.
    enabled
    hystrix.command.default.circuitBreaker.
    requestVolumeThreshold
    hystrix.command.default.circuitBreaker.
    sleepWindowInMilliseconds
    hystrix.command.default.circuitBreaker.
    errorThresholdPercentage

    Istio熔断和异常点检查可以提供对应的功能,如果用户使用比较细,可以先保留,和Istio能力可以共存。

    Client SideLoadBalancer:Ribbon

    客户端负载均衡

    users:
      ribbon:
        NFLoadBalancerRuleClassName:
    com.netflix.loadbalancer.WeightedResponseTim
    eRule

    废弃,Istio客户端负载均衡替换。

    Router andFilter: Zuul

    服务网关

    zuul:
      routes:
        users:
          path: /myusers/**
          serviceId: users_service

    Istio Gateway代替。

    PolyglotsupportwithSidecar

    Sidecar

    -

    废弃

    RetryingFailedRequests

    重试

    clientName:
      ribbon:
        retryableStatusCodes: 404,502

    Istio中支持更细粒度的重试配置。

分享:

    相关文档

    相关产品

关闭导读