1. 代理

由于NTC可以支持各种主流的技术栈,而我们很多的功能都是基于主流技术栈的代理来实现的,这部分代理我们默认是关闭的,项目应用需要根据本身的技术栈开启相应的代理。

界面在应用管理-应用探针菜单,点击对应的应用的配置管理。

服务 代理名称 包含 需要修改的属性
proxy.gateway 网关代理 GateWay服务端代理;GateWay客户端代理;web服务端代理;Zuul客户端代理
proxy.pe PE代理 coreController代理;报文通讯代理
proxy.sofa sofa代理 sofa服务端代理;sofa客户端代理
proxy.springCloud SpringCloud代理 web服务端代理;web客户端代理 客户端bean名称: 如果利用restTemplate完成springcloud微服务应用互相调用,由于默认值是restTemplate,如果应用有个性化,请修改成对应的bean id(name);如果利用feign完成springcloud微服务应用互相调用,由于feign底层有几种通讯方式,分别为feign-OkHttp2( spring cloud 1版) feign-OkHttp3(spring cloud 2版本) feign-HttpClient(apache httpClient),feign默认开启的是httpClient通讯方式,我们不支持,所以如下在应用启动类启用OkHttp(如果项目配置类本身有定义bean,则可不做启用操作),并将代理对象名称指定为对应方法名,同时在application.properties/application.yml配置如下属性:feign.httpclient.enabled=false和feign.okhttp.enabled=true; 最后如果有项目使用hystrix技术,由于hystrix有两种工作模式,信号量模式和线程池模式,当在采用信号量的策略(配置文件配置了hystrix.command.default.execution.isolation.strategy=SEMAPHORE),链路上下文传递没有问题;当在线程池模式时候,为了解决链路上下文传递问题,需要在配置类定义NextHystrixConcurrencyStrategy 如果有单独使用httpclient发送下游系统,如下在应用启动类配置httpclient bean,并将代理对象名称指定为对应方法名。
proxy.db 数据库代理 mybatis代理;ibatis代理
proxy.dubbo dubbo代理 dubbo服务端代理;dubbo客户端代理

1.1. 启用OkHttp

启用OKHttp2

@Bean
  public OkHttpClient okHttpClient(){
OkHttpClient okHttpClient=new OkHttpClient();
okHttpClient.setConnectTimeout(3, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(60, TimeUnit.SECONDS);
okHttpClient.setWriteTimeout(5, TimeUnit.SECONDS);
return okHttpClient;
}

Pom.xml

     <dependency>
            <groupId>com.netflix.feign</groupId>
            <artifactId>feign-okhttp</artifactId>
            <version>10.2.0</version> 
        </dependency>

启用OkHttp3

@Bean
  public okhttp3.OkHttpClient okHttpClient(){
      return new okhttp3.OkHttpClient.Builder()
           //读超时,根据实际需要修改
          .readTimeout(60, TimeUnit.SECONDS) 
           //连接超时,根据实际需要修改
          .connectTimeout(3, TimeUnit.SECONDS) 
          //写入超时,根据实际需要修改
          .writeTimeout(120, TimeUnit.SECONDS) 
          //连接池参数,请根据实际情况修改
          .connectionPool(new ConnectionPool(50,5,TimeUnit.MINUTES))
          //连接失败重试,请根据实际情况修改
          .retryOnConnectionFailure(false)
          .build();
  }

Pom.xml

     <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-okhttp</artifactId>
            <version>10.2.0</version> 
        </dependency>

启用httpclient

/**
   * httpClient客户端
   * @return
   */
  @Bean
  public CloseableHttpClient closeableHttpClient(){
    return HttpClientBuilder.create().build();
  }

1.2. 配置类定义NextHystrixConcurrencyStrategy

/*
@Bean
public NextHystrixConcurrencyStrategy nextHystrixConcurrencyStrategy(){
return new NextHystrixConcurrencyStrategy();
}

results matching ""

    No results matching ""