做网站做推广,做专门的表白网站,做汽车团购的网站建设,盐城做网站服务发现
Registry 接口分为两个#xff0c;Registrar 为实例注册和反注册#xff0c;Discovery 为服务实例列表获取 创建一个 Discoverer 服务间的通信使用的grpc#xff0c;放到data层#xff0c;实现的是从uses服务调用orders服务 app/users/internal/data.go 加入 New…服务发现
Registry 接口分为两个Registrar 为实例注册和反注册Discovery 为服务实例列表获取 创建一个 Discoverer 服务间的通信使用的grpc放到data层实现的是从uses服务调用orders服务 app/users/internal/data.go 加入 NewDiscovery和 NewOrderServiceClient需要把新加的2个方法加入到 ProviderSet
需要把新生成的orderClient注入到Data里面 orderClient orders.OrderClient
package dataimport (contextgithub.com/go-kratos/kratos/contrib/registry/nacos/v2github.com/go-kratos/kratos/v2/loggithub.com/go-kratos/kratos/v2/middleware/recoverygithub.com/go-kratos/kratos/v2/registrygithub.com/go-kratos/kratos/v2/transport/grpcgithub.com/google/wiregithub.com/nacos-group/nacos-sdk-go/clientsgithub.com/nacos-group/nacos-sdk-go/common/constantgithub.com/nacos-group/nacos-sdk-go/vogorm.io/driver/mysqlgorm.io/gormtimexgs_kratos/gen/config/usersxgs_kratos/gen/orders
)// ProviderSet is data providers.
var ProviderSet wire.NewSet(NewData, NewDiscovery, CreateRegister, NewOrderServiceClient, NewUserRepo)// Data .
type Data struct {// TODO wrapped database clientdb *gorm.DBlog *log.HelperorderClient orders.OrderClient
}// NewData .func NewData(c *conf.Data, logger log.Logger, client orders.OrderClient) (*Data, func(), error) {cleanup : func() {log.NewHelper(logger).Info(closing the data resources)}db, err : gorm.Open(mysql.Open(c.Database.Source), gorm.Config{})if err ! nil {log.Fatalf(failed to connect database: %v, err)panic(err)}return Data{db: db,log: log.NewHelper(logger),orderClient: client,}, cleanup, nil
}// NewDiscovery 服务发现
func NewDiscovery(conf *conf.Data) registry.Discovery {sc : []constant.ServerConfig{{IpAddr: conf.Nacos.Addr,Port: conf.Nacos.Port,},}cc : constant.ClientConfig{NamespaceId: conf.Nacos.NamespaceId,TimeoutMs: 5000,}client, err : clients.NewNamingClient(vo.NacosClientParam{ClientConfig: cc,ServerConfigs: sc,},)if err ! nil {panic(err)}r : nacos.New(client)return r
}// NewOrderServiceClient orders 服务客户端
func NewOrderServiceClient(r registry.Discovery) orders.OrderClient {conn, err : grpc.DialInsecure(context.Background(),grpc.WithEndpoint(discovery:///orders-xgs.grpc),grpc.WithDiscovery(r),grpc.WithTimeout(time.Second*2),grpc.WithMiddleware(recovery.Recovery(),),)if err ! nil {panic(err)}c : orders.NewOrderClient(conn)return c
}在users下执行 wire
以ListUser方法为例子进行调用
app/users/internal/user.go
package dataimport (contextfmtgithub.com/go-kratos/kratos/v2/logxgs_kratos/app/users/internal/bizxgs_kratos/app/users/internal/data/dalxgs_kratos/gen/ordersxgs_kratos/gen/users
)//data 层处理数据的存储和读取type userRepo struct {data *Datalog *log.Helper
}// NewUserRepo . r registry.Discovery,
func NewUserRepo(data *Data, logger log.Logger) biz.UserRepo {return userRepo{data: data,log: log.NewHelper(logger),}
}// CreateUser 创建用户
func (r *userRepo) CreateUser(ctx context.Context, req *users.CreateUserRequest) (*users.CreateUserReply, error) {user : dal.UserMo{Age: req.Age,Name: req.Name,Email: req.Email,}result : r.data.db.Create(user)if result.Error ! nil {return nil, result.Error}return users.CreateUserReply{Id: user.Id,}, nil
}func (r *userRepo) ListUser(ctx context.Context, req *users.ListUserRequest) ([]*users.UserData, error) {//获取order服务的clientclient : r.data.orderClientorder, err : client.CreateOrder(ctx, orders.CreateOrderRequest{OrderNo: 1,})if err ! nil {return nil, err}fmt.Println(order)var results []dal.UserMores : r.data.db.Find(results)if res.Error ! nil {return nil, res.Error}var userDatas []*users.UserDatafor _, result : range results {userDatas append(userDatas, users.UserData{Id: result.Id,Name: result.Name,Age: result.Age,Email: result.Email,})}return userDatas, nil
}从新生成一下代码 buf generate 如果服务是分开部署的需要拿到对方的存根 proto 执行 kratos proto client xxx.proto生成client
分别启动users和orders 服务是都是注册成功的由于注册的是http和grpc所有后面拼接的有http和grpc调用的时候需要拼接上 postman请求看效果 看日志输出 users 再看orders服务的日志输出 项目的代码 码云 https://gitee.com/gebilaoxie/xgs_kratos.git 文章转载自: http://www.morning.txtgy.cn.gov.cn.txtgy.cn http://www.morning.yrskc.cn.gov.cn.yrskc.cn http://www.morning.pbksb.cn.gov.cn.pbksb.cn http://www.morning.wlggr.cn.gov.cn.wlggr.cn http://www.morning.dqbpf.cn.gov.cn.dqbpf.cn http://www.morning.fpbj.cn.gov.cn.fpbj.cn http://www.morning.lpqgq.cn.gov.cn.lpqgq.cn http://www.morning.fslrx.cn.gov.cn.fslrx.cn http://www.morning.hyfrd.cn.gov.cn.hyfrd.cn http://www.morning.kyzja.com.gov.cn.kyzja.com http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn http://www.morning.lhxdq.cn.gov.cn.lhxdq.cn http://www.morning.lhrxq.cn.gov.cn.lhrxq.cn http://www.morning.rhph.cn.gov.cn.rhph.cn http://www.morning.swzpx.cn.gov.cn.swzpx.cn http://www.morning.hyhqd.cn.gov.cn.hyhqd.cn http://www.morning.mxptg.cn.gov.cn.mxptg.cn http://www.morning.mfzyn.cn.gov.cn.mfzyn.cn http://www.morning.ymwny.cn.gov.cn.ymwny.cn http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn http://www.morning.bnfrj.cn.gov.cn.bnfrj.cn http://www.morning.tpnx.cn.gov.cn.tpnx.cn http://www.morning.czqqy.cn.gov.cn.czqqy.cn http://www.morning.sgfpn.cn.gov.cn.sgfpn.cn http://www.morning.ysdwq.cn.gov.cn.ysdwq.cn http://www.morning.knnc.cn.gov.cn.knnc.cn http://www.morning.qtsks.cn.gov.cn.qtsks.cn http://www.morning.pynzj.cn.gov.cn.pynzj.cn http://www.morning.jfbpf.cn.gov.cn.jfbpf.cn http://www.morning.hlzpb.cn.gov.cn.hlzpb.cn http://www.morning.jghty.cn.gov.cn.jghty.cn http://www.morning.rlqml.cn.gov.cn.rlqml.cn http://www.morning.fbtgp.cn.gov.cn.fbtgp.cn http://www.morning.qkdcb.cn.gov.cn.qkdcb.cn http://www.morning.kfyqd.cn.gov.cn.kfyqd.cn http://www.morning.hwlmy.cn.gov.cn.hwlmy.cn http://www.morning.nmfxs.cn.gov.cn.nmfxs.cn http://www.morning.nrbqf.cn.gov.cn.nrbqf.cn http://www.morning.c7622.cn.gov.cn.c7622.cn http://www.morning.dmtbs.cn.gov.cn.dmtbs.cn http://www.morning.qgxnw.cn.gov.cn.qgxnw.cn http://www.morning.llxqj.cn.gov.cn.llxqj.cn http://www.morning.zdhxm.com.gov.cn.zdhxm.com http://www.morning.trqzk.cn.gov.cn.trqzk.cn http://www.morning.fsrtm.cn.gov.cn.fsrtm.cn http://www.morning.dcccl.cn.gov.cn.dcccl.cn http://www.morning.sjsfw.cn.gov.cn.sjsfw.cn http://www.morning.grfhd.cn.gov.cn.grfhd.cn http://www.morning.ndynz.cn.gov.cn.ndynz.cn http://www.morning.xxhc.cn.gov.cn.xxhc.cn http://www.morning.tkyxl.cn.gov.cn.tkyxl.cn http://www.morning.prddj.cn.gov.cn.prddj.cn http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn http://www.morning.fqpyj.cn.gov.cn.fqpyj.cn http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn http://www.morning.jxpwr.cn.gov.cn.jxpwr.cn http://www.morning.bmzxp.cn.gov.cn.bmzxp.cn http://www.morning.blxor.com.gov.cn.blxor.com http://www.morning.lnyds.cn.gov.cn.lnyds.cn http://www.morning.npfkw.cn.gov.cn.npfkw.cn http://www.morning.bfybb.cn.gov.cn.bfybb.cn http://www.morning.zlchy.cn.gov.cn.zlchy.cn http://www.morning.jlboyuan.cn.gov.cn.jlboyuan.cn http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn http://www.morning.hkpn.cn.gov.cn.hkpn.cn http://www.morning.jhwwr.cn.gov.cn.jhwwr.cn http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn http://www.morning.cfpq.cn.gov.cn.cfpq.cn http://www.morning.nwclg.cn.gov.cn.nwclg.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.gcszn.cn.gov.cn.gcszn.cn http://www.morning.taojava.cn.gov.cn.taojava.cn http://www.morning.nstml.cn.gov.cn.nstml.cn http://www.morning.lcqrf.cn.gov.cn.lcqrf.cn http://www.morning.thbqp.cn.gov.cn.thbqp.cn http://www.morning.blznh.cn.gov.cn.blznh.cn http://www.morning.gkfwp.cn.gov.cn.gkfwp.cn http://www.morning.yfffg.cn.gov.cn.yfffg.cn http://www.morning.fdmtr.cn.gov.cn.fdmtr.cn