apache / servicecomb-pack

Apache ServiceComb Pack is an eventually data consistency solution for micro-service applications. ServiceComb Pack currently provides TCC and Saga distributed transaction co-ordination solutions by using Alpha as a transaction coordinator and Omega as an transaction agent .
https://servicecomb.apache.org/
Apache License 2.0
1.93k stars 435 forks source link

根据自己搭建springcloud项目,远程调用出错,使用FeignClient实现远程调用方式实现 #481

Open Joe192168 opened 5 years ago

Joe192168 commented 5 years ago

这个是远程抛出的异常信息: org.apache.servicecomb.pack.omega.transaction.OmegaException: Failed to get reconnected sender, all alpha server is down.

但是我alpha服务器确认是启动着

WillemJiang commented 5 years ago

你有使用多个Alpha Cluster,还是在Omega这端直接指定地址的? 具体可以参考 demo中的例子 https://github.com/apache/servicecomb-pack/blob/master/demo/saga-spring-demo/hotel/src/main/resources/application.yaml#L27 如果没有配域名,可以直接写IP地址。

Joe192168 commented 5 years ago

就是按照上面提供的demo配置的,下面是我配置的alpha地址。 alpha: cluster: address: localhost:8080

我配置的是ip,我把aplha服务注册到springcloud集群中了。这个有影响吗

Joe192168 commented 5 years ago

我去掉集群, java.lang.NullPointerException: null at org.apache.servicecomb.pack.contract.grpc.GrpcTxEvent$Builder.setGlobalTxId(GrpcTxEvent.java:999) ~[pack-contract-grpc-0.3.0.jar:0.3.0]

org.apache.servicecomb.pack.omega.transaction.OmegaException: Failed to get reconnected sender, all alpha server is down. at org.apache.servicecomb.pack.omega.connector.grpc.core.GrpcOnErrorHandler$GrpcRetryContext$1.get(GrpcOnErrorHandler.java:73)

还是同样报异常,啥情况???

WillemJiang commented 5 years ago

就是按照上面提供的demo配置的,下面是我配置的alpha地址。 alpha: cluster: address: localhost:8080

我配置的是ip,我把aplha服务注册到springcloud集群中了。这个有影响吗

如果是这样,你需要在Omega端做工作获取到Alpha的地址。

Joe192168 commented 5 years ago

就是按照上面提供的demo配置的,下面是我配置的alpha地址。 alpha: cluster: address: localhost:8080 我配置的是ip,我把aplha服务注册到springcloud集群中了。这个有影响吗

如果是这样,你需要在Omega端做工作获取到Alpha的地址。

omega端咋获取alpha地址,有列子吗,不就是在omega端的application.yml文件里面配置address地址吗?

cmonkey commented 5 years ago

如果不使用目前的spring cloud discovery, 自定义的话,应该自定义一个AlphaClusterDiscovery Bean , 构建这个对象就可以了

coolbeevip commented 5 years ago

就是按照上面提供的demo配置的,下面是我配置的alpha地址。 alpha: cluster: address: localhost:8080 我配置的是ip,我把aplha服务注册到springcloud集群中了。这个有影响吗

如果是这样,你需要在Omega端做工作获取到Alpha的地址。

omega端咋获取alpha地址,有列子吗,不就是在omega端的application.yml文件里面配置address地址吗?

请提供以下信息:

  1. 你使用的是alpha什么版本
  2. 你启动alpha的方式是什么?启动命令参数是如何写的
  3. 如果你在alpha使用了eureka注册,那么在eureka的注册中心是否可以看到alpha实例
  4. 可否提供以下你omega端程序的 /env
Jakty commented 4 years ago

@Joe192168 这个是远程抛出的异常信息: org.apache.servicecomb.pack.omega.transaction.OmegaException: Failed to get reconnected sender, all alpha server is down.

但是我alpha服务器确认是启动着

上面这个问题你找到解决的方法了吗?我也遇到同样的问题

cmonkey commented 4 years ago

在应用日志里面应该会有omega得到alpha地址的信息,看看输出是否和alpha的地址匹配