学习笔记:带你十天轻松搞定 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. 高等数学学习笔记——第四十四讲——定积分的几何应用(二)

    1. 平面图形面积计算示例 2. 平行界面面积为已知的立体体积的计算 3. 截面法的基本步骤(画草图:写出截面面积表达式:计算定积分) 4"牟合方盖"的体积的计算 5. 旋转体体积 ...

  2. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast

    OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...

  3. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co

    OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...

  4. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  5. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  6. 【OS学习笔记】三十六 保护模式十:通过中断发起任务切换----中断任务

    上一篇文章学习了:OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 本篇文章接着上一篇文章学习中断任务. 我们在前面文章中一直在说通过中断发起任务切换,本文就是将之前没有说明白的内容:通 ...

  7. 【数学建模学习笔记【集训十天】之第六天】

    数模学习目录 Matplotlib 学习 Matplotlib简介 Matplotlib 散点图 运行效果如下: Matplotlib Pyplot 运行效果如下: 关于plot() 运行效果如下: ...

  8. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...

  9. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

最新文章

  1. PDU (协议数据单元)
  2. 研究生 论文写作【要注意的30个禁忌(总体问题、选题方面、摘要方面、研究方法方面、讨论与结果、结论方面)】
  3. Oracle ASM Cluster File Systems (ACFS)应用指南
  4. Cocos2d-x编程中CCRemoveSelf与CCCallFunc系列函数不能一起使用
  5. python c4.5完整代码_python实现c4.5/Id3自我练习
  6. Python单例模式的4种实现方法
  7. android 字符串对齐,android – 使用Spanable String对齐ImageSpan
  8. 从零开始springboot 第二讲
  9. 解题报告 Lights
  10. 微软批量许可 开放许可区别_网络漫画因开放许可而适用于动画
  11. mysql下载for linux 64_mysql官网下载linux版本安装包
  12. 风景怡人一个生态村子 -国稻种芯-百色:华润谋定希望小镇
  13. html页面广告5秒之后跳过
  14. 使用yq工具合并两个yml文件
  15. HHUOJ 1050: 屁屁上的巴掌
  16. 设计院总工毕生总结的200条经验
  17. 联想win10触摸板失灵
  18. oracle 将多列数据合并成一列显示
  19. Vi/Vim 编辑器常见命令
  20. Matlab添加工具箱Toolbox的方法

热门文章

  1. ubuntu桌面特效
  2. 解决IDEA中多个项目不在同一窗口下显示的问题(操作简单)
  3. 下载YouTube视频的一种方法
  4. [附源码]Python计算机毕业设计Django小型银行管理系统
  5. POJ-3208 Apocalypse Someday (数位DP)
  6. 备战软考(6) 2014年度下半年软考备战分析报告
  7. 义乌个体户可以收美金安全吗?
  8. Raw数据读取以及转换为Mat
  9. 我是科学家系列科普 | 今天直播 - 刘春明:两粒大米的故事
  10. 计算机读不到u盘如何修复u盘,u盘读不出来,教您u盘读不出来如何修复