Dubbo2istio watches Dubbo ZooKeeper registry and synchronize all the dubbo services to Istio.

Dubbo2Istio

Dubbo2istio 将 Dubbo ZooKeeper 服务注册表中的 Dubbo 服务自动同步到 Istio 服务网格中。

Aeraki 根据 Dubbo 服务信息和用户设置的路由规则生成数据面相关的配置,通过 Istio 下发给数据面 Envoy 中的 Dubbo proxy。

如下图所示, Aeraki + Dubbo2istio 可以协助您将 Dubbo 应用迁移到 Istio 服务网格中, 享用到服务网格提供的高级流量管理、可见性、安全等能力,而这些无需改动一行 Dubbo 源代码。  dubbo2istio

Demo 应用

Aeraki 提供了一个 Dubbo Demo 应用,用于使用该 Demo 来测试 Dubbo 应用的流量控制、metrics 指标采集和权限控制等微服务治理功能。

备注:该 Demo 应用基于开源 Istio 1.9 + Aeraki 运行,也可以在开通了 Dubbo 服务支持的 腾讯云 TCM (Tencent Cloud Mesh) 托管服务网格上运行。

安装 Demo 应用

执行下面的命令安装 Dubbo Demo 应用:

kubectl create ns dubbo
# TCM
kubectl label namespace dubbo istio.io/rev=1-8-1
# Istio 1.9
# kubectl label namespace dubbo istio-injection=enabled
g clone https://github.com/aeraki-framework/dubbo2istio.git
cd dubbo2istio
kubectl apply -f demo/k8s/ -n dubbo

稍等片刻后验证部署的 dubbo Demo 应用。

➜  dubbo2istio git:(master) kubectl get pod -n dubbo
NAMEREADY   STATUSRESTARTS   AGE
dubbo-sample-consumer-78b4754bb8-wstxd2/2 Running   025s
dubbo-sample-provider-v1-d56ddbf99-kqkzf2/2 Running   026s
dubbo-sample-provider-v2-5797b6bcb8-k4dsf   2/2 Running   026s
dubbo2istio-9cc7d569-d98rm2/2 Running   025s
zookeeper-8598999f77-4287r2/2 Running   024s

可以看到 dubbo namespace 中有下面的 pod:

  • dubbo-sample-consumer: dubbo 客户端应用
  • dubbo-sample-provider-v1: dubbo 服务器端应用(v1版本)
  • dubbo-sample-provider-v2: dubbo 服务器端应用(v2版本)
  • zookeeper: dubbo zookeeper 服务注册表
  • dubbo2istio: TCM 服务同步组件,负责将 dubbo 服务同步到服务网格中

验证请求级(七层)负载均衡

Dubbo 使用了长链接,服务网格缺省情况下只能在4层上对客户端的请求进行负载均衡,来自一个客户端链接的请求只能被发送到一个服务器实例上。如果不同客户端的 QPS 不同,客户端发出的请求不能在多个服务器上进行合理的分配,将导致后端的多个服务器压力不均。在服务器由于压力增大水平扩展后,存量的链接也不能被重新分发到服务器端的多个实例上,导致服务器资源利用不均衡,对客户端响应不及时。

当启用了 TCM 的dubbo支持后,服务网格可以在请求层面(七层)上对 dubbo 请求进行精细的负载均衡处理,将来自客户端的请求均匀分配到后端的多个服务器实例上。

从下面客户端日志输出中,我们可以看到 dubbo-sample-consumer 的请求被均匀分配到了后端的两个 dubbo-sample-provider 服务实例上。

➜  dubbo2istio git:(master) kubectl logs --tail 10 dubbo-sample-consumer-78b4754bb8-wstxd  -c dubbo-sample-consumer -n dubbo
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58

验证按版本导流(Traffic Splitting)

首先创建一个 DestinationRule,定义 v1 和 v2 两个 subset。这里采用了 Dubbo 服务注册信息中的 revsion 标签来区分不同版本。

kubectl apply -f demo/istio/destinationrule.yaml -n dubbo

destinationrule.yaml 的定义如下:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: dubbo-sample-provider
spec:
  host: org.apache.dubbo.samples.basic.api.demoservice
  subsets:
  - name: v1
    labels:
      revision: 1.0-SNAPSHOT
  - name: v2
    labels:
      revision: 2.0-SNAPSHOT

定义一个 VirtualService,将 20% 的请求发送到 v1 版本,80% 的请求发送到 v2 版本。

kubectl apply -f demo/istio/virtualservice-traffic-splitting.yaml -n dubbo

virtualservice-traffic-splitting.yaml 的定义如下:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: test-dubbo-route
spec:
  hosts:
    - org.apache.dubbo.samples.basic.api.demoservice
  http:
    - name: "reviews-traffic-splitting"
      route:
        - destination:
            host: org.apache.dubbo.samples.basic.api.demoservice
            subset: v1
          weight: 20
        - destination:
            host: org.apache.dubbo.samples.basic.api.demoservice
            subset: v2
          weight: 80

稍等片刻,待规则生效后查看 consumer 的 log 进行验证,可以看到请求按规则设定比例被分发到了不同版本的 provider 实例。

➜  dubbo2istio git:(master) kubectl logs --tail 10 dubbo-sample-consumer-78b4754bb8-wstxd  -c dubbo-sample-consumer -n dubbo
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59
Hello Aeraki, response from dubbo-sample-provider-v2-5797b6bcb8-k4dsf/172.18.0.59

查看 Dubbo 相关的性能指标

在 Istio Grafana 插件或者 TCM 云原生监控界面中查看 Dubbo 调用的性能指标,包括 调用次数、调用延迟、调用成功率,如下图所示:  dubbo2istio

服务权限控制

首先我们需要在服务网格中启用 mtls,以对服务进行身份认证。

kubectl apply -n istio-system -f - <<EOF
apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
  name: "default"
spec:
  mtls:
    mode: STRICT
EOF

创建认证策略,禁止 dubbo-consumer 访问 dubbo-provider 服务。

➜  dubbo2istio git:(master) ✗ k apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
 name: dubbo-test
 namespace: dubbo
spec:
  action: DENY 
  selector:
    matchLabels:
      app: dubbo-sample-provider
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/dubbo/sa/dubbo-consumer"]
EOF

查看 dubbo consumer 的日志,可以看到由于客户端的 service account 被禁止访问而失败

➜  kubectl logs -f dubbo-sample-consumer-78b4754bb8-2lqzm --tail 2 -c dubbo-sample-consumer -n dubbo
	... 11 more
[28/04/21 07:50:34:034 UTC] DubboClientHandler-org.apache.dubbo.samples.basic.api.demoservice:20880-thread-35  WARN support.DefaultFuture:  [DUBBO] The timeout response finally returned at 2021-04-28 07:50:34.648, response status is 80, channel: /172.18.0.50:60520 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.154:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 172.18.0.50
org.apache.dubbo.rpc.RpcException: Invoke remote method timeout. method: sayHello, provider: dubbo://org.apache.dubbo.samples.basic.api.demoservice:20880/org.apache.dubbo.samples.basic.api.DemoService?application=demo-consumer&check=true&init=false&interface=org.apache.dubbo.samples.basic.api.DemoService&pid=1&register.ip=172.18.0.50&remote.application=&revision=1.0-SNAPSHOT&side=consumer&sticky=false&timeout=3000, cause: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2021-04-28 07:50:34.646, end time: 2021-04-28 07:50:37.656, client elapsed: 0 ms, server elapsed: 3010 ms, timeout: 3000 ms, request: Request [id=649, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /172.18.0.50:60520 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.154:20880
	at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:70)

修改认证策略,允许 dubbo-consumer 访问 dubbo-provider 服务。

k apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
 name: dubbo-test
 namespace: dubbo
spec:
  action: ALLOW
  selector:
    matchLabels:
      app: dubbo-sample-provider
  rules:
  - from:
    - source:
        principals: ["cluster.local/ns/dubbo/sa/dubbo-consumer"]
EOF

查看 dubbo consumer 的日志,可以看到访问成功。

➜  kubectl logs -f dubbo-sample-consumer-78b4754bb8-2lqzm --tail 2 -c dubbo-sample-consumer -n dubbo
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58
Hello Aeraki, response from dubbo-sample-provider-v1-d56ddbf99-kqkzf/172.18.0.58

一些限制

  • 多集群环境下,同一个 dubbo service 的多个 provider 实例需要部署在相同的 namesapce 中。 该限制的原因是 aeraki 采用了 dubbo interface 作为全局唯一的服务名,客户端使用该服务名作为 dns 名对服务端进行访问。 而在 Istio 中,一个服务必须隶属于一个 namespace,因此我们在进行多集群部署时,同一个 dubbo service 的多个实例不能存在于不同的 namespace 中。 如果违反了该部署限制,会导致客户端跨 namespace 访问服务器端实例时由于 mtls 证书验证失败而出错。
Owner
Aeraki
A toolset to extend and enhance Istio Service Mesh.
Aeraki
Comments
  • dubbo2istio支持获取所有dubbo服务信息

    dubbo2istio支持获取所有dubbo服务信息

    dubbo2istio从zk获取dubbo相应zk信息解析后,转换成SE,多处代码例如:

    https://github.com/aeraki-framework/dubbo2istio/blob/d74da095573c36774a7d6b588a5ebdfab08b634b/pkg/dubbo/common/conversion.go#L51-L55

    https://github.com/aeraki-framework/dubbo2istio/blob/d74da095573c36774a7d6b588a5ebdfab08b634b/pkg/dubbo/common/conversion.go#L75

    均要求获取属性aeraki_*,如果其他dubbo服务注册时没有以aeraki_为前缀或者根本没有这些属性,根据代码逻辑直接忽略该provider,导致dubbo2istio没有获取到该provider信息

    这些逻辑在运行aeraki样例时没问题,其他公司内部已运行的老服务就会进入上述逻辑

    不知道上述逻辑是否正确?

    若正确,本项目应该设置一个标准,dubbo2istio提取的dubbo对象必须注册xxx属性,这样的话业务端其实涉及到了改造工作

    或者粗暴一点,根据属性application直接从k8s环境找到该微服务,自动提取namespace \ label等属性?

    由于本人不太熟悉dubbo协议,不知属性application是否代表该微服务的service,只不过这样又要定标准applicationservice了。

  • 样例报错

    样例报错

    istio 版本 1.10.0

    aeraki 日志 ... 2021-08-02T11:10:03.465916Z warn adsc Error adding a new resource to the store 2 errors occurred: * service entry port 53 already defined * unsupported protocol: UnsupportedProtocol .. dubbo2istio 日志正常 dubbo-sample-consumer 日志 Caused by: java.net.UnknownHostException: org.apache.dubbo.samples.basic.api.demoservice at java.net.InetAddress.getAllByName0(InetAddress.java:1281) at java.net.InetAddress.getAllByName(InetAddress.java:1193) at java.net.InetAddress.getAllByName(InetAddress.java:1127) at java.net.InetAddress.getByName(InetAddress.java:1077) at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156) at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153) at java.security.AccessController.doPrivileged(Native Method) at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153) at io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41) at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61) at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53) at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55) at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31) at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106) at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206) at io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)

    以下是集群的信息: [root@k8s-master-201 ~]# kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE aeraki-6558dcc746-95tk9 1/1 Running 0 58m istio-egressgateway-55d4df6c6b-cdbx8 1/1 Running 0 62m istio-ingressgateway-69dc4765b4-wgrg2 1/1 Running 0 62m istiod-798c47d594-p246k 1/1 Running 0 62m [root@k8s-master-201 ~]# [root@k8s-master-201 ~]# kubectl get pods -n dubbo NAME READY STATUS RESTARTS AGE dubbo-sample-consumer-5778c77995-l7dr9 2/2 Running 0 50m dubbo-sample-provider-v1-d5668f85c-jjnwg 2/2 Running 0 50m dubbo-sample-provider-v2-65995864f6-xh9zw 2/2 Running 0 50m dubbo2istio-7488477bd4-f4ngb 2/2 Running 0 49m zookeeper-5dbc74b5db-l28q5 2/2 Running 0 54m [root@k8s-master-201 ~]# kubectl get se -n dubbo NAME HOSTS LOCATION RESOLUTION AGE aeraki-org-apache-dubbo-samples-basic-api-complexservice-product-2-0-0 ["org.apache.dubbo.samples.basic.api.complexservice-product-2-0-0"] MESH_INTERNAL STATIC 48m aeraki-org-apache-dubbo-samples-basic-api-complexservice-test-1-0-0 ["org.apache.dubbo.samples.basic.api.complexservice-test-1-0-0"] MESH_INTERNAL STATIC 48m aeraki-org-apache-dubbo-samples-basic-api-demoservice ["org.apache.dubbo.samples.basic.api.demoservice"] MESH_INTERNAL STATIC 48m aeraki-org-apache-dubbo-samples-basic-api-testservice ["org.apache.dubbo.samples.basic.api.testservice"] MESH_INTERNAL STATIC 48m [root@k8s-master-201 ~]# [root@k8s-master-201 ~]# [root@k8s-master-201 ~]# kubectl get vs -n dubbo
    NAME GATEWAYS HOSTS AGE test-dubbo-route ["org.apache.dubbo.samples.basic.api.demoservice"] 45m [root@k8s-master-201 ~]# [root@k8s-master-201 ~]# [root@k8s-master-201 ~]# kubectl get dr -n dubbo
    NAME HOST AGE dubbo-circuit-breaker-rule org.apache.dubbo.samples.basic.api.demoservice 45m dubbo-sample-provider org.apache.dubbo.samples.basic.api.demoservice 45m [root@k8s-master-201 ~]#

  • question for zk watcher package

    question for zk watcher package

    hello i want to use this pkg to mod the genrate serviceentry for test but i can not find the github.com/aeraki-framework/double2istio/pkg/dubbo/zk/watcher pkg can u tell me where to find this package?

  • 样例consumer报错

    样例consumer报错

    在一个新的k8s环境下按照文档安装样例报错,可能是什么问题呀 其他日志均正常 consumer 报错 warning envoy dubbo dubbo: it's empty data error envoy dubbo dubbo response status: 60 error envoy dubbo [C12] dubbo response: exception (dubbo response: request ID is not equal, 150:18446744073709551615) error envoy dubbo Bad response: dubbo response: request ID is not equal, 150:18446744073709551615

    consumer sidecar 日志 2022-04-08T08:57:29.817405Z debug envoy connection [C764] closing data_to_write=143 type=2 2022-04-08T08:57:29.817427Z debug envoy connection [C764] setting delayed close timer with timeout 1000 ms 2022-04-08T08:57:29.817434Z debug envoy pool [C3] response complete 2022-04-08T08:57:29.817438Z debug envoy pool [C3] destroying stream: 0 remaining 2022-04-08T08:57:29.817509Z debug envoy connection [C764] write flush complete 2022-04-08T08:57:29.817577Z debug envoy connection [C764] remote early close 2022-04-08T08:57:29.817590Z debug envoy connection [C764] closing socket: 0 2022-04-08T08:57:29.817664Z debug envoy conn_handler [C764] adding to cleanup list 2022-04-08T08:57:30.267314Z debug envoy dubbo dubbo decoder: 301 bytes available 2022-04-08T08:57:30.267345Z debug envoy dubbo dubbo decoder: protocol dubbo, state OnDecodeStreamHeader, 301 bytes available 2022-04-08T08:57:30.267352Z debug envoy dubbo dubbo: create the new decoder event handler 2022-04-08T08:57:30.267387Z debug envoy dubbo dubbo route matcher: weighted_clusters_size 0 2022-04-08T08:57:30.267399Z debug envoy dubbo [C12][S9622441255194101712] dubbo router: cluster 'outbound|20880||org.apache.dubbo.samples.basic.api.demoservice' match for interface 'org.apache.dubbo.samples.basic.api.DemoService' 2022-04-08T08:57:30.267420Z debug envoy dubbo [C12][S9622441255194101712] dubbo router: decoding request 2022-04-08T08:57:30.267434Z debug envoy pool creating a new connection 2022-04-08T08:57:30.267514Z debug envoy pool [C765] connecting 2022-04-08T08:57:30.267520Z debug envoy connection [C765] connecting to 10.0.79.19:20880 2022-04-08T08:57:30.267667Z debug envoy connection [C765] connection in progress 2022-04-08T08:57:30.267679Z debug envoy pool queueing request due to no available connections 2022-04-08T08:57:30.267684Z debug envoy dubbo dubbo request: stop calling decoder filter, id is 150 2022-04-08T08:57:30.267686Z debug envoy dubbo dubbo decoder: ends the deserialization of the message 2022-04-08T08:57:30.267689Z debug envoy dubbo dubbo decoder: data length 0 2022-04-08T08:57:30.267699Z debug envoy connection [C765] connected 2022-04-08T08:57:30.271220Z debug envoy pool [C765] assigning connection 2022-04-08T08:57:30.271235Z debug envoy dubbo dubbo upstream request: tcp connection has ready 2022-04-08T08:57:30.271238Z debug envoy dubbo dubbo upstream request: selected upstream 10.0.79.19:20880 2022-04-08T08:57:30.271240Z debug envoy dubbo dubbo upstream request: start sending data to the server 10.0.79.19:20880 2022-04-08T08:57:30.271243Z debug envoy dubbo dubbo response: start upstream 2022-04-08T08:57:30.271247Z debug envoy dubbo [C12] dubbo filter continued 2022-04-08T08:57:30.271248Z warning envoy dubbo dubbo: it's empty data 2022-04-08T08:57:30.271544Z debug envoy dubbo dubbo response: start upstream 2022-04-08T08:57:30.271555Z debug envoy dubbo dubbo response: the received reply data length is 104 2022-04-08T08:57:30.271557Z debug envoy dubbo dubbo decoder: 104 bytes available 2022-04-08T08:57:30.271559Z debug envoy dubbo dubbo decoder: protocol dubbo, state OnDecodeStreamHeader, 104 bytes available 2022-04-08T08:57:30.271574Z debug envoy dubbo dubbo response: the upstream response message has been forwarded to the downstream 2022-04-08T08:57:30.271578Z error envoy dubbo dubbo response status: 60 2022-04-08T08:57:30.271580Z debug envoy dubbo dubbo response: complete processing of upstream response messages, id is -1 2022-04-08T08:57:30.271581Z debug envoy dubbo dubbo decoder: ends the deserialization of the message 2022-04-08T08:57:30.271583Z debug envoy dubbo dubbo decoder: data length 0 2022-04-08T08:57:30.271606Z error envoy dubbo [C12] dubbo response: exception (dubbo response: request ID is not equal, 150:18446744073709551615) 2022-04-08T08:57:30.271611Z error envoy dubbo Bad response: dubbo response: request ID is not equal, 150:18446744073709551615 2022-04-08T08:57:30.271614Z debug envoy dubbo Exception information: dubbo response: request ID is not equal, 150:18446744073709551615 2022-04-08T08:57:30.271621Z debug envoy dubbo [C12][S9622441255194101712] dubbo router: upstream reset 2022-04-08T08:57:30.271627Z debug envoy connection [C765] closing data_to_write=0 type=1 2022-04-08T08:57:30.271630Z debug envoy connection [C765] closing socket: 1 2022-04-08T08:57:30.271659Z debug envoy connection [C765] SSL shutdown: rc=0 2022-04-08T08:57:30.271665Z debug envoy connection [C765] 2022-04-08T08:57:30.271691Z debug envoy pool [C765] client disconnected 2022-04-08T08:57:30.271697Z debug envoy dubbo dubbo upstream request: the stream reset 2022-04-08T08:57:30.271699Z debug envoy dubbo dubbo upstream request: reset connection data 2022-04-08T08:57:30.271705Z debug envoy dubbo destroy decoder filter 2022-04-08T08:57:30.271717Z debug envoy pool [C765] connection destroyed 2022-04-08T08:57:31.816716Z debug envoy conn_handler [C766] new connection 2022-04-08T08:57:31.816863Z debug envoy http [C766] new stream 2022-04-08T08:57:31.816998Z debug envoy http [C766][S16186713252891098376] request headers complete (end_stream=true): ':authority', '10.0.76.134:15021' ':path', '/healthz/ready' ':method', 'GET' 'user-agent', 'kube-probe/1.18' 'accept-encoding', 'gzip' 'connection', 'close'

    2022-04-08T08:57:31.817043Z debug envoy http [C766][S16186713252891098376] request end stream 2022-04-08T08:57:31.817153Z debug envoy router [C766][S16186713252891098376] cluster 'agent' match for URL '/healthz/ready' 2022-04-08T08:57:31.817257Z debug envoy router [C766][S16186713252891098376] router decoding headers: ':authority', '10.0.76.134:15021' ':path', '/healthz/ready' ':method', 'GET' ':scheme', 'http' 'user-agent', 'kube-probe/1.18' 'accept-encoding', 'gzip' 'x-forwarded-proto', 'http' 'x-request-id', 'f3022c92-0093-465d-878d-f25c80ed7bec' 'x-envoy-expected-rq-timeout-ms', '15000'

    2022-04-08T08:57:31.817308Z debug envoy pool [C6] using existing connection 2022-04-08T08:57:31.817314Z debug envoy pool [C6] creating stream 2022-04-08T08:57:31.817328Z debug envoy router [C766][S16186713252891098376] pool ready 2022-04-08T08:57:31.817941Z debug envoy client [C6] response complete 2022-04-08T08:57:31.817959Z debug envoy router [C766][S16186713252891098376] upstream headers complete: end_stream=true 2022-04-08T08:57:31.817999Z debug envoy http [C766][S16186713252891098376] closing connection due to connection close header 2022-04-08T08:57:31.818010Z debug envoy http [C766][S16186713252891098376] encoding headers via codec (end_stream=true): ':status', '200' 'date', 'Fri, 08 Apr 2022 08:57:31 GMT' 'content-length', '0' 'x-envoy-upstream-service-time', '0' 'server', 'envoy' 'connection', 'close'

    2022-04-08T08:57:31.818031Z debug envoy connection [C766] closing data_to_write=143 type=2 2022-04-08T08:57:31.818037Z debug envoy connection [C766] setting delayed close timer with timeout 1000 ms 2022-04-08T08:57:31.818041Z debug envoy pool [C6] response complete 2022-04-08T08:57:31.818045Z debug envoy pool [C6] destroying stream: 0 remaining 2022-04-08T08:57:31.818118Z debug envoy connection [C766] write flush complete 2022-04-08T08:57:31.818840Z debug envoy connection [C766] remote early close 2022-04-08T08:57:31.818901Z debug envoy connection [C766] closing socket: 0 2022-04-08T08:57:31.819068Z debug envoy conn_handler [C766] adding to cleanup list 2022-04-08T08:57:32.987869Z debug envoy main flushing stats 2022-04-08T08:57:33.816145Z debug envoy conn_handler [C767] new connection 2022-04-08T08:57:33.816208Z debug envoy http [C767] new stream 2022-04-08T08:57:33.816276Z debug envoy http [C767][S8913524377317313352] request headers complete (end_stream=true): ':authority', '10.0.76.134:15021' ':path', '/healthz/ready' ':method', 'GET' 'user-agent', 'kube-probe/1.18' 'accept-encoding', 'gzip' 'connection', 'close'

    2022-04-08T08:57:33.816283Z debug envoy http [C767][S8913524377317313352] request end stream 2022-04-08T08:57:33.816320Z debug envoy router [C767][S8913524377317313352] cluster 'agent' match for URL '/healthz/ready' 2022-04-08T08:57:33.816359Z debug envoy router [C767][S8913524377317313352] router decoding headers: ':authority', '10.0.76.134:15021' ':path', '/healthz/ready' ':method', 'GET' ':scheme', 'http' 'user-agent', 'kube-probe/1.18' 'accept-encoding', 'gzip' 'x-forwarded-proto', 'http' 'x-request-id', '8e0de804-38ba-4a0e-865c-647fe8fb1bc3' 'x-envoy-expected-rq-timeout-ms', '15000'

    2022-04-08T08:57:33.816369Z debug envoy pool [C3] using existing connection 2022-04-08T08:57:33.816374Z debug envoy pool [C3] creating stream 2022-04-08T08:57:33.816383Z debug envoy router [C767][S8913524377317313352] pool ready 2022-04-08T08:57:33.816685Z debug envoy client [C3] response complete 2022-04-08T08:57:33.816728Z debug envoy router [C767][S8913524377317313352] upstream headers complete: end_stream=true 2022-04-08T08:57:33.816801Z debug envoy http [C767][S8913524377317313352] closing connection due to connection close header 2022-04-08T08:57:33.816841Z debug envoy http [C767][S8913524377317313352] encoding headers via codec (end_stream=true): ':status', '200' 'date', 'Fri, 08 Apr 2022 08:57:33 GMT' 'content-length', '0' 'x-envoy-upstream-service-time', '0' 'server', 'envoy' 'connection', 'close'

    consumer 日志

    [08/04/22 09:00:02:002 UTC] DubboClientHandler-thread-2 WARN support.DefaultFuture: [DUBBO] The timeout response finally returned at 2022-04-08 09:00:02.467, response status is 60, channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 10.0.76.134 [08/04/22 09:00:02:002 UTC] DubboClientHandler-thread-2 WARN support.DefaultFuture: [DUBBO] The timeout response finally returned at 2022-04-08 09:00:02.467, response status is 50, channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 10.0.76.134 org.apache.dubbo.rpc.RpcException: Invoke remote method timeout. method: sayHello, provider: dubbo://org.apache.dubbo.samples.basic.api.demoservice:20880/org.apache.dubbo.samples.basic.api.DemoService?application=dubbo-sample-consumer&check=true&init=false&interface=org.apache.dubbo.samples.basic.api.DemoService&pid=6&register.ip=10.0.76.134&remote.application=&revision=1.0-SNAPSHOT&side=consumer&sticky=false&timeout=3000, cause: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:02.460, end time: 2022-04-08 09:00:05.469, client elapsed: 0 ms, server elapsed: 3009 ms, timeout: 3000 ms, request: Request [id=169, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:70) at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78) at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:91) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:69) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:96) at org.apache.dubbo.common.bytecode.proxy0.sayHello(proxy0.java) at org.apache.dubbo.samples.basic.BasicConsumer.main(BasicConsumer.java:48) Caused by: java.util.concurrent.ExecutionException: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:02.460, end time: 2022-04-08 09:00:05.469, client elapsed: 0 ms, server elapsed: 3009 ms, timeout: 3000 ms, request: Request [id=169, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928) at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:181) at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:61) ... 10 more Caused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:02.460, end time: 2022-04-08 09:00:05.469, client elapsed: 0 ms, server elapsed: 3009 ms, timeout: 3000 ms, request: Request [id=169, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at org.apache.dubbo.remoting.exchange.support.DefaultFuture.doReceived(DefaultFuture.java:210) at org.apache.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:175) at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.notifyTimeout(DefaultFuture.java:298) at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.lambda$run$0(DefaultFuture.java:285) at org.apache.dubbo.common.threadpool.ThreadlessExecutor$RunnableWrapper.run(ThreadlessExecutor.java:196) at org.apache.dubbo.common.threadpool.ThreadlessExecutor.waitAndDrain(ThreadlessExecutor.java:99) at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:179) ... 11 more [08/04/22 09:00:10:010 UTC] DubboClientHandler-thread-1 WARN support.DefaultFuture: [DUBBO] The timeout response finally returned at 2022-04-08 09:00:10.475, response status is 50, channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 10.0.76.134 [08/04/22 09:00:10:010 UTC] DubboClientHandler-thread-2 WARN support.DefaultFuture: [DUBBO] The timeout response finally returned at 2022-04-08 09:00:10.475, response status is 60, channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 10.0.76.134 org.apache.dubbo.rpc.RpcException: Invoke remote method timeout. method: sayHello, provider: dubbo://org.apache.dubbo.samples.basic.api.demoservice:20880/org.apache.dubbo.samples.basic.api.DemoService?application=dubbo-sample-consumer&check=true&init=false&interface=org.apache.dubbo.samples.basic.api.DemoService&pid=6&register.ip=10.0.76.134&remote.application=&revision=1.0-SNAPSHOT&side=consumer&sticky=false&timeout=3000, cause: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:10.470, end time: 2022-04-08 09:00:13.474, client elapsed: 0 ms, server elapsed: 3004 ms, timeout: 3000 ms, request: Request [id=170, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:70) at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78) at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:91) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:69) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:96) at org.apache.dubbo.common.bytecode.proxy0.sayHello(proxy0.java) at org.apache.dubbo.samples.basic.BasicConsumer.main(BasicConsumer.java:48) Caused by: java.util.concurrent.ExecutionException: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:10.470, end time: 2022-04-08 09:00:13.474, client elapsed: 0 ms, server elapsed: 3004 ms, timeout: 3000 ms, request: Request [id=170, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928) at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:181) at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:61) ... 10 more Caused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:10.470, end time: 2022-04-08 09:00:13.474, client elapsed: 0 ms, server elapsed: 3004 ms, timeout: 3000 ms, request: Request [id=170, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at org.apache.dubbo.remoting.exchange.support.DefaultFuture.doReceived(DefaultFuture.java:210) at org.apache.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:175) at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.notifyTimeout(DefaultFuture.java:298) at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.lambda$run$0(DefaultFuture.java:285) at org.apache.dubbo.common.threadpool.ThreadlessExecutor$RunnableWrapper.run(ThreadlessExecutor.java:196) at org.apache.dubbo.common.threadpool.ThreadlessExecutor.waitAndDrain(ThreadlessExecutor.java:99) at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:179) ... 11 more [08/04/22 09:00:18:018 UTC] DubboClientHandler-thread-2 WARN support.DefaultFuture: [DUBBO] The timeout response finally returned at 2022-04-08 09:00:18.482, response status is 60, channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 10.0.76.134 [08/04/22 09:00:18:018 UTC] DubboClientHandler-thread-1 WARN support.DefaultFuture: [DUBBO] The timeout response finally returned at 2022-04-08 09:00:18.482, response status is 50, channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 10.0.76.134 org.apache.dubbo.rpc.RpcException: Invoke remote method timeout. method: sayHello, provider: dubbo://org.apache.dubbo.samples.basic.api.demoservice:20880/org.apache.dubbo.samples.basic.api.DemoService?application=dubbo-sample-consumer&check=true&init=false&interface=org.apache.dubbo.samples.basic.api.DemoService&pid=6&register.ip=10.0.76.134&remote.application=&revision=1.0-SNAPSHOT&side=consumer&sticky=false&timeout=3000, cause: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:18.475, end time: 2022-04-08 09:00:21.485, client elapsed: 2 ms, server elapsed: 3008 ms, timeout: 3000 ms, request: Request [id=171, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:70) at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78) at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:91) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:69) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:96) at org.apache.dubbo.common.bytecode.proxy0.sayHello(proxy0.java) at org.apache.dubbo.samples.basic.BasicConsumer.main(BasicConsumer.java:48) Caused by: java.util.concurrent.ExecutionException: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:18.475, end time: 2022-04-08 09:00:21.485, client elapsed: 2 ms, server elapsed: 3008 ms, timeout: 3000 ms, request: Request [id=171, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928) at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:181) at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:61) ... 10 more Caused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:18.475, end time: 2022-04-08 09:00:21.485, client elapsed: 2 ms, server elapsed: 3008 ms, timeout: 3000 ms, request: Request [id=171, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at org.apache.dubbo.remoting.exchange.support.DefaultFuture.doReceived(DefaultFuture.java:210) at org.apache.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:175) at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.notifyTimeout(DefaultFuture.java:298) at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.lambda$run$0(DefaultFuture.java:285) at org.apache.dubbo.common.threadpool.ThreadlessExecutor$RunnableWrapper.run(ThreadlessExecutor.java:196) at org.apache.dubbo.common.threadpool.ThreadlessExecutor.waitAndDrain(ThreadlessExecutor.java:99) at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:179) ... 11 more [08/04/22 09:00:26:026 UTC] DubboClientHandler-thread-2 WARN support.DefaultFuture: [DUBBO] The timeout response finally returned at 2022-04-08 09:00:26.492, response status is 50, channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 10.0.76.134 [08/04/22 09:00:26:026 UTC] DubboClientHandler-thread-1 WARN support.DefaultFuture: [DUBBO] The timeout response finally returned at 2022-04-08 09:00:26.492, response status is 60, channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880, please check provider side for detailed result., dubbo version: 1.0-SNAPSHOT, current host: 10.0.76.134 org.apache.dubbo.rpc.RpcException: Invoke remote method timeout. method: sayHello, provider: dubbo://org.apache.dubbo.samples.basic.api.demoservice:20880/org.apache.dubbo.samples.basic.api.DemoService?application=dubbo-sample-consumer&check=true&init=false&interface=org.apache.dubbo.samples.basic.api.DemoService&pid=6&register.ip=10.0.76.134&remote.application=&revision=1.0-SNAPSHOT&side=consumer&sticky=false&timeout=3000, cause: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:26.486, end time: 2022-04-08 09:00:29.496, client elapsed: 0 ms, server elapsed: 3010 ms, timeout: 3000 ms, request: Request [id=172, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:70) at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78) at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:91) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:69) at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61) at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:96) at org.apache.dubbo.common.bytecode.proxy0.sayHello(proxy0.java) at org.apache.dubbo.samples.basic.BasicConsumer.main(BasicConsumer.java:48) Caused by: java.util.concurrent.ExecutionException: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:26.486, end time: 2022-04-08 09:00:29.496, client elapsed: 0 ms, server elapsed: 3010 ms, timeout: 3000 ms, request: Request [id=172, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928) at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:181) at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:61) ... 10 more Caused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2022-04-08 09:00:26.486, end time: 2022-04-08 09:00:29.496, client elapsed: 0 ms, server elapsed: 3010 ms, timeout: 3000 ms, request: Request [id=172, version=2.0.2, twoway=true, event=false, broken=false, data=null], channel: /10.0.76.134:46064 -> org.apache.dubbo.samples.basic.api.demoservice/240.240.0.6:20880 at org.apache.dubbo.remoting.exchange.support.DefaultFuture.doReceived(DefaultFuture.java:210) at org.apache.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:175) at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.notifyTimeout(DefaultFuture.java:298) at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.lambda$run$0(DefaultFuture.java:285) at org.apache.dubbo.common.threadpool.ThreadlessExecutor$RunnableWrapper.run(ThreadlessExecutor.java:196) at org.apache.dubbo.common.threadpool.ThreadlessExecutor.waitAndDrain(ThreadlessExecutor.java:99) at org.apache.dubbo.rpc.AsyncRpcResult.get(AsyncRpcResult.java:179) ... 11 more

  • go module name `github.com/aeraki-framework/double2istio` is wrong.

    go module name `github.com/aeraki-framework/double2istio` is wrong.

    go module name is wrong.

    module github.com/aeraki-framework/double2istio
    

    i think the right value is :

    module github.com/aeraki-framework/dubbo2istio
    
  • When reading the source code, I found some optimization issue. I corrected them. I wonder if can help the project. pls feel free to check. thx.

    When reading the source code, I found some optimization issue. I corrected them. I wonder if can help the project. pls feel free to check. thx.

    When reading the source code, I found some optimization issue. I corrected them. I wonder if can help the project. pls feel free to check. thx.

    @zhaohuabing

  • dubbo2istio 不支持使用 MetaRouter 吗?

    dubbo2istio 不支持使用 MetaRouter 吗?

    1、部署 ./demo/metaprotocol-dubbo/uninstall.sh kubectl create ns meta-dubbo kubectl label namespace meta-dubbo istio-injection=enabled --overwrite kubectl apply -f demo/k8s/aeraki-bootstrap-config.yaml -n meta-dubbo kubectl apply -f demo/k8s/nacos -n meta-dubbo kubectl apply -f demo/traffic-rules/destinationrule.yaml -n meta-dubbo 2、查看pod 和log [root@master dubbo2istio]# kubectl get pod -n meta-dubbo NAME READY STATUS RESTARTS AGE dubbo-sample-consumer-5cf9f6f878-xxp8j 2/2 Running 0 22m dubbo-sample-provider-v1-566fbbb9fb-zd5hj 2/2 Running 0 22m dubbo-sample-provider-v2-68468d8bc9-2lnv4 2/2 Running 0 22m dubbo2istio-686d5554cc-5mnsg 1/1 Running 0 22m nacos-5cfbc49d9d-6kmd6 1/1 Running 0 22m [root@master dubbo2istio]# kubectl logs dubbo-sample-consumer-5cf9f6f878-xxp8j -n meta-dubbo|tail -n 10 Hello Aeraki, response from dubbo-sample-provider-v2-68468d8bc9-2lnv4/10.244.0.96 Hello Aeraki, response from dubbo-sample-provider-v1-566fbbb9fb-zd5hj/10.244.0.99 Hello Aeraki, response from dubbo-sample-provider-v2-68468d8bc9-2lnv4/10.244.0.96 Hello Aeraki, response from dubbo-sample-provider-v1-566fbbb9fb-zd5hj/10.244.0.99 Hello Aeraki, response from dubbo-sample-provider-v2-68468d8bc9-2lnv4/10.244.0.96 Hello Aeraki, response from dubbo-sample-provider-v1-566fbbb9fb-zd5hj/10.244.0.99 Hello Aeraki, response from dubbo-sample-provider-v2-68468d8bc9-2lnv4/10.244.0.96 Hello Aeraki, response from dubbo-sample-provider-v1-566fbbb9fb-zd5hj/10.244.0.99 Hello Aeraki, response from dubbo-sample-provider-v2-68468d8bc9-2lnv4/10.244.0.96 Hello Aeraki, response from dubbo-sample-provider-v1-566fbbb9fb-zd5hj/10.244.0.99 3、使用 MetaRouter 调整流量 kubectl apply -f- <<EOF apiVersion: metaprotocol.aeraki.io/v1alpha1 kind: MetaRouter metadata: name: test-metaprotocol-dubbo-route namespace: meta-dubbo spec: hosts: - org.apache.dubbo.samples.basic.api.demoservice routes: - name: v1 match: attributes: interface: exact: org.apache.dubbo.samples.basic.api.DemoService method: exact: sayHello foo: exact: bar route: - destination: host: org.apache.dubbo.samples.basic.api.demoservice subset: v1 EOF 4、再次观察日志(多次观察) image 5、使用VirtualService可以支持流量

    dubbo2istio 不支持使用 MetaRouter 吗?

  • UnknownHostException: org.apache.dubbo.samples.basic.api.demoservice

    UnknownHostException: org.apache.dubbo.samples.basic.api.demoservice

    这问题,偶尔会出现,有时候卸载重新部署又没有出现,怎么排查这个原因?

    1、部署 ./demo/metaprotocol-dubbo/uninstall.sh kubectl create ns meta-dubbo kubectl label namespace meta-dubbo istio-injection=enabled --overwrite kubectl apply -f demo/k8s/aeraki-bootstrap-config.yaml -n meta-dubbo kubectl apply -f demo/k8s/nacos -n meta-dubbo kubectl apply -f demo/traffic-rules/destinationrule.yaml -n meta-dubbo 2、等待pod启动 [root@master dubbo2istio]# kubectl get pod -n meta-dubbo NAME READY STATUS RESTARTS AGE dubbo-sample-consumer-5cf9f6f878-xxp8j 2/2 Running 0 22m dubbo-sample-provider-v1-566fbbb9fb-zd5hj 2/2 Running 0 22m dubbo-sample-provider-v2-68468d8bc9-2lnv4 2/2 Running 0 22m dubbo2istio-686d5554cc-5mnsg 1/1 Running 0 22m nacos-5cfbc49d9d-6kmd6 1/1 Running 0 22m 3、查看日志 Caused by: org.apache.dubbo.remoting.RemotingException: client(url: dubbo://org.apache.dubbo.samples.basic.api.demoservice:20880/org.apache.dubbo.samples.basic.api.DemoService?application=dubbo-sample-consumer&check=true&codec=dubbo&heartbeat=60000&init=false&interface=org.apache.dubbo.samples.basic.api.DemoService&pid=7&register.ip=10.244.0.97&remote.application=&revision=1.0-SNAPSHOT&side=consumer&sticky=false&timeout=3000) failed to connect to server org.apache.dubbo.samples.basic.api.demoservice:20880, error message is:org.apache.dubbo.samples.basic.api.demoservice at org.apache.dubbo.remoting.transport.netty4.NettyClient.doConnect(NettyClient.java:169) at org.apache.dubbo.remoting.transport.AbstractClient.connect(AbstractClient.java:198) at org.apache.dubbo.remoting.transport.AbstractClient.(AbstractClient.java:73) at org.apache.dubbo.remoting.transport.netty4.NettyClient.(NettyClient.java:82) at org.apache.dubbo.remoting.transport.netty4.NettyTransporter.connect(NettyTransporter.java:40) at org.apache.dubbo.remoting.Transporter$Adaptive.connect(Transporter$Adaptive.java) at org.apache.dubbo.remoting.Transporters.connect(Transporters.java:75) at org.apache.dubbo.remoting.exchange.support.header.HeaderExchanger.connect(HeaderExchanger.java:39) at org.apache.dubbo.remoting.exchange.Exchangers.connect(Exchangers.java:109) at org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol.initClient(DubboProtocol.java:610) ... 22 more Caused by: java.net.UnknownHostException: org.apache.dubbo.samples.basic.api.demoservice at java.net.InetAddress.getAllByName0(InetAddress.java:1287) at java.net.InetAddress.getAllByName(InetAddress.java:1199) at java.net.InetAddress.getAllByName(InetAddress.java:1127) at java.net.InetAddress.getByName(InetAddress.java:1077) at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156) at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153) at java.security.AccessController.doPrivileged(Native Method) at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153) at io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41) at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)

Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily.
Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily.

Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily.

Dec 30, 2022
Sample cloud-native application with 10 microservices showcasing Kubernetes, Istio, gRPC and OpenCensus.
Sample cloud-native application with 10 microservices showcasing Kubernetes, Istio, gRPC and OpenCensus.

Online Boutique is a cloud-native microservices demo application. Online Boutique consists of a 10-tier microservices application. The application is

Dec 31, 2022
Istio - An open platform to connect, manage, and secure microservices

Istio An open platform to connect, manage, and secure microservices. For in-dept

Jan 5, 2022
Todolist microservice with Istio

Todo 服务 环境依赖 docker-desktop >= 4.2.0 kubernetes >= 1.21.5 go >= 1.17 istioctl >= 1.11.4 protobuf >= 3.17.3 grpcurl >= 1.8.5 下载安装 Docker Desktop ,并启动内置

Feb 20, 2022
Blog microservices deployed in an Istio-enabled kubernetes cluster
Blog microservices deployed in an Istio-enabled kubernetes cluster

blog-microservices blog microservices deployed in an Istio-enabled kubernetes cl

Dec 28, 2022
A microservice gateway developed based on golang.With a variety of plug-ins which can be expanded by itself, plug and play. what's more,it can quickly help enterprises manage API services and improve the stability and security of API services.
A microservice gateway developed based on golang.With a variety of plug-ins which can be expanded by itself, plug and play. what's more,it can quickly help enterprises manage API services and improve the stability and security of API services.

Goku API gateway is a microservice gateway developed based on golang. It can achieve the purposes of high-performance HTTP API forwarding, multi tenant management, API access control, etc. it has a powerful custom plug-in system, which can be expanded by itself, and can quickly help enterprises manage API services and improve the stability and security of API services.

Dec 29, 2022
A code generator that turns plain old Go services into RPC-enabled (micro)services with robust HTTP APIs.

Frodo is a code generator and runtime library that helps you write RPC-enabled (micro) services and APIs.

Dec 16, 2022
Services-inoeg - The Kiebitz Backend Services. Still a work-in-progess, use with care!

Kiebitz Services This repository contains Kiebitz's backend services: A storage service that stores encrypted user & operator settings and temporary d

Jan 19, 2022
An example microservice demo using kubernetes concepts like deployment, services, persistent volume and claims, secrets and helm chart

Docker vs Kubernetes Docker Kubernetes container tech, isolated env for apps infra management, multiple containers automated builds and deploy apps -

Dec 13, 2021
Pulls ARO RP versions and their corresponding upgrade streams for all regions

aro-rp-versions Description Pulls ARO RP versions and their corresponding upgrade streams for all regions in a table format by default or json if requ

Jul 6, 2022
Connect, secure, control, and observe services.

Istio An open platform to connect, manage, and secure microservices. For in-depth information about how to use Istio, visit istio.io To ask questions

Jan 9, 2023
Study Project for the application of micro services and requisition controls

Starting Endpoint GO with Retry Request Install GoLang for Linux Tutorial: LINK

Jul 4, 2022
Easegress (formerly known as EaseGateway)is an all-rounder traffic orchestration system
Easegress (formerly known as EaseGateway)is an all-rounder traffic orchestration system

Easegress (formerly known as EaseGateway)is an all-rounder traffic orchestration system

Dec 28, 2022
Sample full stack micro services application built using the go-Micro framework.
Sample full stack micro services application built using the go-Micro framework.

goTemp goTemp is a full stack Golang microservices sample application built using go-micro. The application is built as a series of services that prov

Dec 26, 2022
Starter code for writing web services in Go

Ultimate Service Copyright 2018, 2019, 2020, 2021, Ardan Labs [email protected] Ultimate Service 2.0 Video If you are watching the Ultimate Service v

Dec 30, 2022
a microservice framework for rapid development of micro services in Go with rich eco-system
a microservice framework for rapid development of micro services in Go with rich eco-system

中文版README Go-Chassis is a microservice framework for rapid development of microservices in Go. it focus on helping developer to deliver cloud native a

Dec 27, 2022
This tool generates Go language bindings of services in protobuf definition files for go-kit

protoc-gen-go-kit This tool generates Go language bindings of services in protobuf definition files for go-kit. Installation $ go install github.com/x

Nov 9, 2021
An open network for Micro services.
An open network for Micro services.

Micro Network The micro network is an open network for Micro services. Note: The network is still in early development. This document serves as a star

Nov 1, 2022
GoLang utility packages to assist with the development of web micro-services.

GoTil Golang utility packages to assist with the development of web micro-services. Installation As a library. go get github.com/ccthomas/gotil Usage

Nov 26, 2021