Closed bluedragonflyliu closed 4 years ago
Hi.
非常感谢你的回复 我在与api gateway 相同的机器上启动 ./user-srv --registry=consul --registry_address=192.168.1.34(consul 也在这个机器上) http://192.168.1.34:8080/user/User/Call {"name":"aaa"}正确返回 但是复制到例外一个机器上./user-srv --registry=consul --registry_address=192.168.1.34 却报错{"id":"go.micro.client","code":500,"detail":"connection error: dial tcp 192.168.1.33:36464: connect: no route to host","status":"Internal Server Error"} 在33上 netstat查看 这个服务是有的consul 上也有 我是否缺什么参数 另外我发现micro api 运行时 必须是MICRO_REGISTRY=consul MICRO_REGISTRY_ADDRESS=192.168.1.34 形式不可以用--registry 的形式我试了很多次之后才弄清楚注册到consul
micro api 使用consul这里面有两层应用
micro --registry=consul api
这也是我在教程里为什么要用consul的原因,如果不用就是默认的mdns,大家入门时就不会注意到可以使用--registry来指定注册机制。
网关与具体服务是不需要在一台的,针对您说的情况,麻烦使用以下步骤重试:
micro --registry=consul --registry_address=ip:port api
./srv --registry=consul --registry_address=ip:port
curl http://gatewayIP:8080/srv-path?params
好像是防火墙引起的 还是有个问题我创建时用的是micro new micro_test/user --type=srv 运行api网关 --handler=rpc 可以得到正常结果,而用 --handler=api 就不可以获得参数正常返回, 是不是 srv 用--handler=rpc 而 api用--handler=api 才能正常,(GET 方式http://192.168.1.34:8080/user/User/Call?name=sansu POST 方式 http://192.168.1.34:8080/user/User/Call { "name": "John" }} Curl rpc curl -H 'Content-Type: application/json' -d '{"service": "com.aa.srv.user", "method": "User.Call", "request": {"name": "John"}}' http://192.168.1.34:8080/rpc {"id":"go.micro.api","code":500,"detail":"service not found","status":"Internal Server Error"}
实际使用时是不是 要用时 api 网关用 handler=api 的方式,然后user-api 程序调用user-srv
是的, --handler=rpc 负责暴露srv的接口,目前是默认的 --handler=api 负责暴露api类型的 --handler=web|proxy|http 负责暴露web类型的
有时候一直不通可能是网络代理或防火墙问题,不少朋友有这个现象
非常感谢你的耐心解答
我看了多次micro的官方文档但是部署的问题还是未能找到解决答案