go工程整体结构设计 | 青训营笔记

96 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记

主要分析上课时给出的笔记服务的代码组织结构,来学习并给予最后的抖音项目做参考。

工程实践

图片来自青训营ppt image-20220530152915421

kitex demo

解析笔记项目中kitex生成代码的组织结构

user

user服务部分

graph TB

	subgraph Enity
		BaseResp
		User
		MGetUserRequest
		MGetUserResponse
		MGetUserResponse -.- User
		MGetUserResponse -.- BaseResp
	end

	Request --1.MGetUserRequest--> handler
	
	subgraph service
		MGetUserService
	end
	
	handler --2.MGetUserRequest--> MGetUserService
	MGetUserService --7.Entity.User-->handler
	
	subgraph db
		DB
		db.User[User]
		DB -.- db.User
	end
	MGetUserService --3.Ids--> DB
	DB --4.db.Users-->MGetUserService
	
	subgraph pack
		PackUser
	end
	
	MGetUserService --5.db.User--> PackUser
	PackUser --6.Entity.User--> MGetUserService
	
	handler --8.MGetUserResponse--> Response

note

note服务部分

graph
	subgraph Entity
			
		subgraph RPC
			User
		end
		BaseResp
		Note
		MGetNoteRequest
		BaseResp-.-MGetNoteResponse	
		MGetNoteResponse -.- Note

   	end
	
	Request --1.MGetNoteRequest-->handler
	
	subgraph service
		MGetNoteService
	end
	
	handler--2.MGetNoteRequest--> MGetNoteService
	
    subgraph db
		DB
		db.Note[Note]
		DB -.- db.Note
	end
	MGetNoteService --3.Ids--> DB
	DB --4.db.Note-->MGetNoteService
	
	subgraph pack
		UserIds
		Notes
	end
	MGetNoteService --5.db.Note--> UserIds
	UserIds --6.uids--> MGetNoteService
	
	subgraph rpc
		MGetUser
	end
	
	MGetNoteService --7.uids--> MGetUser
	MGetUser --8.User-->MGetNoteService
	
	MGetNoteService --9.db.Note-->Notes
	Notes --10.Entity.Note-->MGetNoteService
	MGetNoteService --11.set User for Note--> MGetNoteService
	
	MGetNoteService--12.Entity.Note-->handler
	handler --13.MGetNoteResponse--> Response
  1. handler接受请求,并组建基本响应
  2. handler讲请求传交给service层
  3. service层将获取查询中的id,并查询数据库
  4. 数据库返回查询结果,此时结果为数据库中定义的model类型
  5. 将查询结果交给pack获取用户的iduids
  6. pack将用户id返沪
  7. 调用用户rpc,查询id对应的用户
  8. rpc返回结果,其类型为rpc的Entity中定义的数据类型
  9. service将model类型的数据交给pack进行打包
  10. pack将model类型的数据打包为entity中定义的数据类型
  11. 将rpc的结果整合进最终结果
  12. service将结果返回给handler,其类型为定义的entity中的类型
  13. handler将查询结果和基本响应组装在一起并返回