学习笔记:带你十天轻松完成 Go 微服务系列(二)- 服务拆分
学习笔记:带你十天轻松搞定 Go 微服务系列(二)
- 1、学习课程
- 2、服务拆分
- 2.1 按业务服务拆分
- 2.2 按调用方式拆分
- 3、创建项目目录
- 3.1 在 code 中新建项目
- 3.2 创建 mall 工程
- 3.3 创建 common 目录
- 3.4 创建 service 目录
- 3.5 创建 user api,user rpc,user model 目录
- 3.6 创建 product api,product rpc,product model 目录
- 3.7 创建 order api,order rpc,order model 目录
- 3.8 创建 pay api,pay rpc,pay model 目录
- 3.9 最终项目目录
- 4、系列
1、学习课程
带你十天轻松搞定 Go 微服务系列(二)
2、服务拆分
2.1 按业务服务拆分
- 用户服务(user)
- 订单服务(order)
- 产品服务(product)
- 支付服务(pay)
- 售后服务(afterSale)
- … …
2.2 按调用方式拆分
区别 | API 服务 | RPC 服务 |
---|---|---|
传输协议 | 基于 HTTP 协议 | 可以基于 HTTP 协议,也可以基于 TCP 协议 |
传输效率 | 如果是基于 http1.1 的协议,请求中会包含很多无用的内容,如果是基于 HTTP2.0,那么简单的封装下可以作为一个 RPC 来使用,这时标准的 RPC 框架更多的是服务治理。 | 使用自定义的 TCP 协议,可以让请求报文体积更小,或者使用 HTTP2 协议,也可以很好的减小报文体积,提高传输效率 |
性能消耗 | 大部分是基于 json 实现的,字节大小和序列化耗时都比 thrift 要更消耗性能 | 可以基于 thrift 实现高效的二进制传输 |
负载均衡 | 需要配置 Nginx、HAProxy 配置 | 基本自带了负载均衡策略 |
服务治理:(下游服务新增,重启,下线时如何不影响上游调用者) | 需要事先通知,如修改 NGINX 配置。 | 能做到自动通知,不影响上游 |
3、创建项目目录
3.1 在 code 中新建项目
$ cd gonivinck/code/
3.2 创建 mall 工程
$ mkdir mall && cd mall
$ go mod init mall
3.3 创建 common 目录
$ mkdir common
3.4 创建 service 目录
$ mkdir service && cd service
3.5 创建 user api,user rpc,user model 目录
$ mkdir -p user/api
$ mkdir -p user/rpc
$ mkdir -p user/model
3.6 创建 product api,product rpc,product model 目录
$ mkdir -p product/api
$ mkdir -p product/rpc
$ mkdir -p product/model
3.7 创建 order api,order rpc,order model 目录
$ mkdir -p order/api
$ mkdir -p order/rpc
$ mkdir -p order/model
3.8 创建 pay api,pay rpc,pay model 目录
$ mkdir -p pay/api
$ mkdir -p pay/rpc
$ mkdir -p pay/model
3.9 最终项目目录
├── common # 通用库
├── service # 服务
│ ├── order
│ │ ├── api # order api 服务
│ │ ├── model # order 数据模型
│ │ └── rpc # order rpc 服务
│ ├── pay
│ │ ├── api # pay api 服务
│ │ ├── model # pay 数据模型
│ │ └── rpc # pay rpc 服务
│ ├── product
│ │ ├── api # product api 服务
│ │ ├── model # product 数据模型
│ │ └── rpc # product rpc 服务
│ └── user
│ ├── api # user api 服务
│ ├── model # user 数据模型
│ └── rpc # user rpc 服务
└── go.mod
4、系列
学习笔记:带你十天轻松搞定 Go 微服务系列(一)- 环境搭建
学习笔记:带你十天轻松搞定 Go 微服务系列(二)- 服务拆分
学习笔记:带你十天轻松搞定 Go 微服务系列(三)- 用户服务
学习笔记:带你十天轻松搞定 Go 微服务系列(四)- 产品服务
学习笔记:带你十天轻松搞定 Go 微服务系列(五)- 订单服务
学习笔记:带你十天轻松搞定 Go 微服务系列(六)- 支付服务
学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证
学习笔记:带你十天轻松搞定 Go 微服务系列(八)- 服务监控
学习笔记:带你十天轻松搞定 Go 微服务系列(九)- 链路追踪
学习笔记:带你十天轻松搞定 Go 微服务系列大结局(十)- 分布式事务
学习笔记:带你十天轻松完成 Go 微服务系列(二)- 服务拆分相关推荐
- 高等数学学习笔记——第四十四讲——定积分的几何应用(二)
1. 平面图形面积计算示例 2. 平行界面面积为已知的立体体积的计算 3. 截面法的基本步骤(画草图:写出截面面积表达式:计算定积分) 4"牟合方盖"的体积的计算 5. 旋转体体积 ...
- OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast
OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...
- OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...
- OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC
OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- 【OS学习笔记】三十六 保护模式十:通过中断发起任务切换----中断任务
上一篇文章学习了:OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 本篇文章接着上一篇文章学习中断任务. 我们在前面文章中一直在说通过中断发起任务切换,本文就是将之前没有说明白的内容:通 ...
- 【数学建模学习笔记【集训十天】之第六天】
数模学习目录 Matplotlib 学习 Matplotlib简介 Matplotlib 散点图 运行效果如下: Matplotlib Pyplot 运行效果如下: 关于plot() 运行效果如下: ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...
- OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五
OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...
最新文章
- PDU (协议数据单元)
- 研究生 论文写作【要注意的30个禁忌(总体问题、选题方面、摘要方面、研究方法方面、讨论与结果、结论方面)】
- Oracle ASM Cluster File Systems (ACFS)应用指南
- Cocos2d-x编程中CCRemoveSelf与CCCallFunc系列函数不能一起使用
- python c4.5完整代码_python实现c4.5/Id3自我练习
- Python单例模式的4种实现方法
- android 字符串对齐,android – 使用Spanable String对齐ImageSpan
- 从零开始springboot 第二讲
- 解题报告 Lights
- 微软批量许可 开放许可区别_网络漫画因开放许可而适用于动画
- mysql下载for linux 64_mysql官网下载linux版本安装包
- 风景怡人一个生态村子 -国稻种芯-百色:华润谋定希望小镇
- html页面广告5秒之后跳过
- 使用yq工具合并两个yml文件
- HHUOJ 1050: 屁屁上的巴掌
- 设计院总工毕生总结的200条经验
- 联想win10触摸板失灵
- oracle 将多列数据合并成一列显示
- Vi/Vim 编辑器常见命令
- Matlab添加工具箱Toolbox的方法