第 72 期 2019-12-19 Go-Micro 编写微服务实战 (二)

观看视频

分享者

舒先

【Go 夜读】#72 Go-Micro 编写微服务实战

往期:第一期

基于Go-Micro开发、实现如下服务架构:

包含Go-Micro核心功能

大纲

设计中,大致如下:

  1. 使用Go-Micro编写微服务
  2. 示例架构,使用微服务进行两个数学计算并返回结果
  3. Go-Micro中的服务类型:Srv、Web、API
  4. Broker与异步消息
  5. Wrapper与日志、限流
  6. 如何使用插件:示例使用RabbitMQ插件
  7. Micro API网关浅讲

分享者自我介绍

Micro 中国团队

陈洪波:本期资料提供与审核,10年,成都云创新技术经理,Gopher、Phper,全栈码农,专注于微服务架构&服务网格技术的应用。

Edward Chen:本期资料提供与审核,10年+,Honeywell HBT 研发技术专家,擅长Racher/K8S/Go/C#/C++/C/Typescript,专注于大规模IOT容器化微服务架构,一线开发。

舒先:本期资料提供与主讲,7年+金融级微服务开发经验,OPPO,Micro维护者团队成员,负责中国生态。

徐旭:本期资料提供与审核,应届,趣头条工程师,喜欢开源,Gev作者,擅长网络编程与表情包。

分享时间

2019-12-19 21:00:00 UTC+8

分享地址

Slides

GoogleDoc

参考资料

Micro中文资源

分享中提到的资料

如何使用Wrapper

示例代码与PPT

问题

  1. 什么是 Function,其场景是什么?

答:Function 是 FaaS 服务中的一种服务类型,旨在提供只响应一次的服务,响应后该服务便不会再生存,会被卸载掉。场景比较我们有时接口是用来初始化数据的,那就可以用 Function,借用容器管理,可以重复发布 Function 类的服务,让其在有限的范围内提供服务。参考代码示例

  1. 服务聚合的场景是什么?

答:这个是业务架构的设定,当我们把服务拆分成微服务时,各服务之间处理的能力基本是独立不耦合的,那我们要把它们结合起来提供能力对外服务,就需要服务聚合。比如常见的订单查询,通常会有查询用户订单与商品详情的需要,而用户服务与商品服务又是各自独立,这便是聚合服务存在的价值。它的本质是把服务能力按业务需要整合。

  1. 多个 Server 分仓库,proto 文件如何存放?

答:proto 文件本质是接口描述文件,推荐放在公共目录或公共仓库,定义后,转成不同语言的接口包,也存放在公共仓库,这样任何服务想用就去找就行了。

  1. http可以替换成其它框架吗?

答:可以,go-micro 的 web 包只是为大家包装了注册到 go-micro 生态的能力,其它使用的基本是 go 原生的 http 能力。如果想使用其它框架,自行定义 go-micro 的 client(client.NewClient(opts…))来请求其它 go-micro srv 服务即可。

  1. HttpTransport 为什么要改成 gRPC 的?

答:这个 Http 始终只适合放在C端的客户端,在RPC框架中使用,基于gRPC更好,总得来说,gRPC 是基于 2.0 的 HTTP 构建通信模式,它是专业的面向后台应用的通信协议。gRPC 优化了很多部分,比如一般我们用HTTP传送数据时,都是可读的 JSON 结构,而 gRPC 使用了效率更高的 protobuf 格式,HTTP 当然也可以使用 protobuf 的 Payload,但是 gRPC 已经做了,为什么我们要再重新做呢?gRPC 的缺点就是通信两端都要支持,否则没用,HTTP 则没有这个顾虑。go-micro 在这方面都是可插拔的,大家想用哪个 Transport,在命令行或 API 参数中使用即可。