摘要: 使用Postman去点对点调用我们之前写的service,header中设置Content-type是application/json,发送如下图的json数据即可。json指定了jsonrpc,指定了调用的endpoint 启动grpc server package main import (v "github.com/micro/go-micro" "github... 阅读全文
posted @ 2020-01-02 22:14 离地最远的星 阅读(1260) 评论(0) 推荐(0) 编辑
摘要: 首先创建grpc服务原来是micro.NewService还支持http等其他访问方式,但是grpc.NewService这种方法只支持grpc访问,所以需要创建网关让其支持http访问 package main import ( "github.com/micro/go-micro" "github.com/micro/go-micro/registry" "gith... 阅读全文
posted @ 2020-01-02 21:37 离地最远的星 阅读(1315) 评论(0) 推荐(0) 编辑
摘要: 因为新版Micro工具已经弃用了consul,加入了etcd的支持,所以我们把服务注册放入到etcd中 package main import ( "github.com/micro/go-micro" "github.com/micro/go-micro/registry" "github.com/micro/go-micro/registry/etcd" ... 阅读全文
posted @ 2020-01-02 19:44 离地最远的星 阅读(734) 评论(0) 推荐(0) 编辑
摘要: 如果熔断器只设置timeout参数,那么只是解决了报错后服务怎么处理的问题,但是每次请求都会两秒,但是如果请求的服务一直很慢,那么每次至少要等待timeout的时间才会调用降级方法返回结果,这是相当慢的,所以我们可以设置其他参数,让熔断器在服务请求超时或失败一定次数后,以后接受到请求直接走降级方法,这样就提高了响应的速度 代码如下 package Wrappers import ( ... 阅读全文
posted @ 2020-01-02 16:32 离地最远的星 阅读(730) 评论(0) 推荐(0) 编辑
摘要: 很多时候我们一个service有很多响应类型,当请求超时或者失败的时候熔断器会调用降级服务,并返回值,但是我们熔断器一个service只定义了一次,所以具体应该返回哪个类型的response我们不知道,所以可以使用下面的通用方法来解决这个问题 package Wrappers import ( "context" "github.com/afex/hystrix-go/hyst... 阅读全文
posted @ 2020-01-02 16:13 离地最远的星 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 首先定义proto文件 syntax = "proto3"; package Services; import "Models.proto"; message ProdsRequest { // @inject_tag: json:"size" form:"size" int32 size = 1; // @inject_tag: uri:"pid" int32 ... 阅读全文
posted @ 2020-01-02 15:51 离地最远的星 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 使用go-micro的装饰器整合熔断器 package Wrappers import ( "context" "github.com/afex/hystrix-go/hystrix" "github.com/micro/go-micro/client" "go-micro/Services" "strconv" ) type ProdsWrapper... 阅读全文
posted @ 2020-01-02 13:41 离地最远的星 阅读(887) 评论(0) 推荐(0) 编辑
摘要: 使用熔断器降级,商品查询出错,降级使用系统推荐的商品 package Weblib import ( "github.com/afex/hystrix-go/hystrix" "github.com/gin-gonic/gin" "go-micro/Services" "strconv" ) func newProd(id int32, pname strin... 阅读全文
posted @ 2020-01-02 12:09 离地最远的星 阅读(665) 评论(0) 推荐(0) 编辑
摘要: 现在rpc服务端设置3秒延迟模拟 package ServiceImpl import ( "context" "go-micro-grpc/Services" "strconv" "time" ) type ProdService struct { } func (*ProdService) GetProdsList(ctx context.Con... 阅读全文
posted @ 2020-01-02 10:56 离地最远的星 阅读(814) 评论(0) 推荐(0) 编辑