easy_note项目学习笔记 | 青训营笔记

64 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天,今天主要就第五节课三大件最后的easy_note项目做一个整理,项目主要用到了上课的GORM、kitex、Hertz框架,部署是用docker,给微服务式的大作业搭了一个样例。本文主要是对微服务的应用vs单体应用的个人思考。主要考虑到程序的具体架构和实现。

环境搭建

老样子

sudo docker compose up

随后执行readme.md给出的运行命令,用curl命令验证。

代码

cmd

概述

image.png 根据github给的框图,api部分是定义了微服务系统内部的一些rpc接口,以及和外部系统的http接口。
可以看到两个服务的代码结构类似,就是架构图里拆出来的两个服务note和user。

api

api部分的代码从Makefile就能看的出来主要是hz的代码,也就是说主要负责的是http接口,作为系统与外界通信的门户,和单体应用类似,主要就是两部分的工作:1.初始化2.配置监听端口,给出router的逻辑。
这部分就看一个接口/api/biz/handler/demoapi/api_service.goCreateUser 发起rpc调用,而不是函数调用,和单体应用最大的区别了。 image.png

note/user

注:虽然是两个服务操作的是同一个数据库
从user端代码走一下流程,note是类似的\

  1. 根据快速入门章节的介绍,kitex可以直接从idl/user.thrift里边生成handler.go
  2. handler.go定义的是服务间的rpc接口,业务代码调用service/底下的代码,rpc响应调用pack/下边的代码 关注,以/user/handler.go里边的CreateUser代码逻辑为例,目前理解这部分的代码除了rpc响应不同,其他应该和单体应用的代码逻辑没有其他的差别。

image.png