记录几个玩Golang微服务生态时踩的坑

 memo
 

go-micro

  • invalid character ‘\‘’ looking for beginning of value

go micro官方文档给的实例里面

Make an RPC call via the CLI. The query is sent as json.

1
micro call go.micro.srv.example Example.Call '{"name": "John"}'

在windows控制台中执行会返回:

invalid character ‘\‘’ looking for beginning of value

经过测试,正确写法是:

1
micro call go.micro.srv.example Example.Call "{\"name\":\"John\"}"

consul + go-micro

  • Go-Micro客户端请求报500错误和408错误

{“id”:”go.micro.client”,”code”:500,”detail”:”service not found”}

{“id”:”go.micro.client”,”code”:408,”detail”:”call timeout: context deadline exceeded”,”status”:”Request Timeout”}

查看一下服务列表和服务详细信息

1
2
3
4
micro list services
比如得到结果:go.micro.srv.example

micro get service go.micro.srv.example

此现象有可能是因为服务没有在consul中注册成功所导致,这里提供一种解决思路:

确保在“告诉consul即将注册的服务的配置信息”时有以下配置项

1
2
3
4
5
6
7
8
9
10
11
12
13
registerService:=api.AgentServiceRegistration{
ID:"xxx",
Tags:[]string{"grpc","consul"},
Name:"grpc And Consul",
Address:"127.0.0.1",
Port:8800,
Check:&api.AgentServiceCheck{
CheckID:"consul grpc test",
TCP:"127.0.0.1:8800",
Timeout:"1s",
Interval:"5s",
},
}

docker

  • VBoxManage.exe: error: Details: code E_FAIL (0x80004005)……

windows7利用DockerToolBox安装Docker出现此问题,经测试,以下方法能解决此问题:

卸载掉VirtualBox,然后从https://www.virtualbox.org/wiki/Downloads 更新最新版本安装,安装完成后再启动docker的客户端

elasticsearch

  • post 中文数据到elasticsearch restful接口报json_parse_exception 问题

{“error”:{“root_cause”:[{“type”:”json_parse_exception”,”reason”:”Invalid UTF-8 middle byte……

在windows7 cmd命令行下执行会报此错误,可尝试通过专业的postman工具进行操作