第一课 Go容器化微服务系统实战-基本介绍和使用
tags:
- GO
- 慕课网
categories:
- GO
- 微服务
- go-micro
文章目录
第一节 GO微服务
1.1 微服务介绍
- 微服务首先他是一种架构模式
- 微服务相比较单体架构,微服务架构更独立,能够单独更新和发布
- 微服务里面的服务仅仅用于某一个特定的业务功能
- 特点
- 逻辑清晰
- 快速迭代
- 多语言灵活组合
1.2 微服务与DDD
- 领域驱动设计(Domain Driven Design,简称DDD )
- 还有个定律:康威定律(Conway’s Law)。就是说组织架构对应我们微服务拆分。
- DDD的作用:真正决定软件复杂性的是设计方法
- 有助于指导我们确定系统边界
- 能够聚焦在系统核心元素上
- 帮助我们拆分系统
- DDD常用概念-领域
- 领域:领域是有范围界限的,也可以说是有边界的
- 核心域:核心域是业务系统的核心价值
- 通用子域:所有子域的消费者,提供着通用服务(比如电商领域的短信、邮件就属于这个)
- 支撑子域:专注于业务系统的某一重要的业务
- DDD常用概念-界限上下文
- 理解∶语文中的语境的意思
- 方式∶领域+界限上下文
- 目的:不在于如何划分边界,而在于如何控制边界
- DDD常用概念-领域模型
- 理解∶领域模型是对我们软件系统中要解决问题的抽象表达。
- 领域∶反应的是我们业务上需要解决的问题
- 模型:我们针对该问题提出的解决方案
- DDD域微服务四层架构

- 上面架构继续拆分就是下面微服务架构。

1.3 微服务的设计原则
- 要领域驱动设计,而不是数据驱动设计,也不是界面驱动设计
- 数据驱动设计:系统下来模块拆分完,就设计表结构字段。
- 界面驱动设计:界面页面缺啥补啥
- 要边界清晰的微服务,而不是泥球小单体
- 要职能清晰的分层,而不是什么都放的大箩筐
- 要做自己能hold住的微服务,而不是过度拆分的微服务
第二节 go-micro基础:gRPC和ProtoBuf
2.1 RPC和gRPC介绍
- RPC介绍
- RPC代指远程过程调用(Remote Procedure Call )
- 包含了传输协议和编码(对象序列号)协议
- 允许运行于一台计算机的程序调用另一台计算机的子程序
- 使用RPC有什么好处? 简单、通用、安全、效率
- gRPC介绍
- gRPC是一个高性能、开源、通用的RPC框架(背景:谷歌)
- 基于HTTP2.0协议标准设计开发
- 支持多语言,默认采用Protocol Buffers 数据序列化协议

2.2 ProtoBuf总体介绍
-
ProtoBuf是一种轻便高效的序列化结构化数据的协议
-
通常用在存储数据和需要远程数据通信的程序上
-
跨语言,更小、更快、也更简单
-
优点:
- 加速站点之间数据传输速度
- 解决数据传输不规范问题
-
Protocol Buffers常用概念:
- Message定义∶描述了一个请求或响应的消息格式
- 字段标识: 消息的定义中,每个字段都有一个唯一的数值标签
- 常用数据类型: double , float , int32/64, bool, string,bytes
- Service服务定义∶在Service中可以定义一个RPC服务接口
-
Protocol Buffers Message中字段修饰符
- singular:表示成员有0个或者一个,一般省略不写
- repeated:表示该字段可以包含0~N个元素

-
新建一个proto文件demo。product.proto
syntax = "proto3"; // 版本号
package go.micro.service.product; // 包名
// 定义一个service 驼峰写法 定义服务
service Product {
rpc AddProduct(ProductInfo) returns (ResponseProduct) {}
}
// 消息格式
message ProductInfo {
int64 id = 1 ; // 这里不是赋值 而是字段标识符 修饰符省略
string Product_name = 2; // 这里最好不要超过15 超过15会开两个字节存我们的字段
}
message ResponseProduct {

本文是Go容器化微服务系统实战的第一课,主要介绍了微服务的基本概念、设计原则,深入讲解了gRPC和ProtoBuf,包括它们的用途和优势。并以go-micro框架为例,阐述了如何使用ProtoBuf编写服务端和客户端的简单HelloWorld应用。
最低0.47元/天 解锁文章
910

被折叠的 条评论
为什么被折叠?



