关于抖声项目-随便说说| 青训营笔记

207 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

好的,今天我们来讲讲我们青训营的大项目--抖声 首先我们先来看官网的apifox接口文档,刚看到这个其实我对这个apifox其实还蛮感兴趣的 我去到他们官网,映入眼帘的事apifox = jmeter + postman + mock + swagger 那确实还蛮厉害的,它拥有了jmeter的性能测试,postman的接口调试,mock的静态模拟数据,swagger的文档说明,激动的我马上下载下来看看,使用体验确实还可以,那我们闲话也别多说,来聊聊项目


开始我们的项目,首先就是项目的一个架构设计,肯定是一个微服务框架,那么之前学过官方的一个项目eazy_note,我认为可以简单参考一下这个项目的设计,比如api接入层以及两个微服务模块,这比较简单基础,然后能页面的访问请求通过api去调整,查表操作在另两个服务里进行

image.png

来看一下项目的目录架构组成,api层用rpc包下的东西作为rpc请求的client端,在另两个服务里面handler.go文件来处理这次请求 我们看一下init RPC的代码

func initNoteRpc() {
	r, err := etcd.NewEtcdResolver([]string{constants.EtcdAddress})
	if err != nil {
		panic(err)
	}

	c, err := noteservice.NewClient(
		constants.NoteServiceName,
		client.WithMiddleware(middleware.CommonMiddleware),
		client.WithInstanceMW(middleware.ClientMiddleware),
		client.WithMuxConnection(1),                       // mux
		client.WithRPCTimeout(3*time.Second),              // rpc timeout
		client.WithConnectTimeout(50*time.Millisecond),    // conn timeout
		client.WithFailureRetry(retry.NewFailurePolicy()), // retry
		client.WithSuite(trace.NewDefaultClientSuite()),   // tracer
		client.WithResolver(r),                            // resolver
	)
	if err != nil {
		panic(err)
	}
	noteClient = c
}

可以看到,先注册EtcdResolver然后直接使用目标微服务吓得noteservice.NewClient就可以直接用client.xxx方法调用对应的方法了 可以说,真的是蛮方便了,像Java我们需要先定义一个接口,新写一个client类,然后进行调用,相比起来,其实差不多,但是go的写法上可能更简洁


err := rpc.CreateNote(context.Background(), &notedemo.CreateNoteRequest{
   UserId:  userID,
   Content: noteVar.Content, Title: noteVar.Title,
})

如上所示,创建note直接这样就好了。 今天的分享就到这,明天我们继续