# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# README
Table of Contents generated with DocToc
- go_package_example(Go常用包)
- 第零章 rpc实现选项
- 第一章 服务注册中心consul
- 第二章 日志库
- 第三章 消息队列
- 第四章 服务注册及配置文件中心 Nacos
- 第五章 关系型数据库
- 第六章 获取对外可用IP和端口
- 第七章 验证器 go-playground/validator
- 第八章 GRPC编程及调优
- 第九章 Nosql 非关系型数据库
- 第十章 链路追踪(Distributed Tracing)
- 第十一章 依赖注入容器(Dependency Injection Container)
- 第十二章 clockwork 虚拟时钟库-->etcd使用
- 第十三章 序列化反序列化-涉及多种协议
- 第十四章 系统监控
- 第十五章 分布式事务
- 第十六章 数据复制
- 第十七章 数据加解密
- 第十八章 日志收集项目 log_collect
- 第十九章 熔断,限流及降级
- 第二十章 应用的命令行框架
- 第二十一章 配置文件解析:viper(依赖mapstructure,fsnotify,yaml,toml)
- 第二十二章 ETCD
- 第二十三章 Go-Micro框架(不推荐)
- 第二十四章 搜索引擎es
- 第二十五章 监控sentry
- 第二十六章 图数据库Neo4j
- 第二十七章 Mysql的binlog
- 第二十八章 OLAP(Online Analytical Processing 联机分析处理)
- 第二十九章 分布式锁及源码分析
- 第三十章 Zookeeper
- 第三十一章 分布式 Id
- 第三十二章 Consensus algorithm 共识算法
- 第三十三章 压缩
- 第三十四章 本地缓存
- 第三十五章 sonar静态代码质量分析-涉及与golangci-lint对比使用
- 第三十六章 Proto管理工具Buf
- 第三十七章 CI持续集成
- 第三十八章 Mergo实现 struct 与 map 之间转换-->k8s中应用
- 第三十九章 权限管理 casbin
- 第四十章 规则引擎 rule engine
- 第四十一章 hashicorp/go-plugin 插件使用-->httprunner 4.0 使用
- 第四十二章 prometheus
- 参考
go_package_example(Go常用包)
第零章 rpc实现选项
- 1 手动实现rpc
- 2 手动实现stub中间人
- 3 json_rpc
- 4 http_rpc
第一章 服务注册中心consul
第二章 日志库
第三章 消息队列
- 1 rabbitmq
- 1.1 消费者:推拉模式
- 1.1 生产者
- 2 kafka
- 2.1 客户端 sarama
- 2.1.1 生产者
- 2.1.2 消费者
- 2.2 客户端 confluent-kafka-go
- 2.2.1 生产者
- 2.2.2 消费者
- 2.1 客户端 sarama
- 3 rocketmq
- 3.1 消费者:简单消费,延迟消费
- 3.2 生产者:简单消息,延迟消息,事务消息
- 4 Asynq 分布式延迟队列
第四章 服务注册及配置文件中心 Nacos
- 1 获取配置及监听文件变化
- 2 服务注册,监听,获取
第五章 关系型数据库
- MySQL的主流驱动 go-mysql-driver插件源码分析
- 1 GORM
- 1.1 GORM原理及实现
- 1.2 连接池使用
- 2 XORM
- 2.1 主从连接
- 2.2 调用mysql函数
- 2.3 事务处理
- 2.4 crud
- 插入Insert
- 原生sql
- 获取retrieve
- 更新update
- 3 database/sql 源码分析
- 4 SQL生成库 Squirrel
第六章 获取对外可用IP和端口
第七章 验证器 go-playground/validator
第八章 GRPC编程及调优
前置知识
-
- 引入其他proto文件,支持编译多个proto文件
- 编码原理
-
protobuf 工具:protoc,protoc-gen-go,protoc-gen-go-grpc,protoc-gen-gofast 等
-
1 HelloWorld 入门使用及源码分析
-
3 流式GRPC
-
10 Grpc插件-使用 gRPC 转码(RPC Transcoding)实现暴露 http服务-->grpc网关在etcd中应用 -buf 在 protobuf 中应用,生成 Pb 文件-->推荐 -原始不使用 buf 生成pb文件
-
- 实现基于 CA 的 TLS 证书认证
- go-grpc-middleware 实现多个中间件:异常保护,日志
-
14 multiplex多路复用
第九章 Nosql 非关系型数据库
- 1 MongoDB
- mongo和mysql对比:储存引擎及内存结构
- 1.1 增删改查
- 2 Redis(协议,原理,持久化方式)
- redis底层数据结构对象源码分析
- redis 集群
- 2.1 redigo使用
- 2.2 go-redis使用(官方)
第十章 链路追踪(Distributed Tracing)
- 1 OpenTracing->Jaeger
- 2 OpenTelemetry 两大开源社区合并
- 跨服务组合tracer代码展示:需开启svc1和svc2两个http服务(url可以是zipkin或则jaeger)
第十一章 依赖注入容器(Dependency Injection Container)
- 1 dig依赖注入及http服务分层->不推荐
- 2 wire依赖注入->推荐
第十二章 clockwork 虚拟时钟库-->etcd使用
第十三章 序列化反序列化-涉及多种协议
- 1 标准库 json
- 2 Jsoniter(完全兼容标准库json,性能较好)-涉及标准库 encoding/json 分析
- 3 mapstructure 将通用的map值解码为结构体
第十四章 系统监控
第十五章 分布式事务
- Note: 使用DTM的代码作为案例
- 1 两阶段提交2pc/XA
- 2 saga事务
- 3 TCC事务
- 4 etcd的STM
第十六章 数据复制
第十七章 数据加解密
- 1 phpserialize(不推荐)
第十八章 日志收集项目 log_collect
- 1 动态选择文件
- 2 文件内容读取发送
第十九章 熔断,限流及降级
- 0 令牌桶官方包 x/time/rate
- 1 Sentinel-->滑动窗口
- 1.1 基于流量QPS控制
- 1.2 熔断
- 2 Hystrix-->滑动窗口
- 3 uber-go/ratelimit-->Leaky Bucket(漏桶)
- 4 envoyproxy/ratelimit-->计数器
第二十章 应用的命令行框架
第二十一章 配置文件解析:viper(依赖mapstructure,fsnotify,yaml,toml)
- 1 viper获取本地文件内容
- 2 监听文件变化(fsnotify)原理分析
- 3 远程读取nacos配置(源码分析)
- 4 gopkg.in/yaml.v3 使用
- 5 pelletier/go-toml 使用
- 6 gopkg.in/ini.v1 使用
第二十二章 ETCD
- 服务端server--读和写流程分析
- 服务端server--鉴权分析
- 服务端server--mvcc并发控制
- 服务端server--watch机制
- etcd 指标
- 1 基本操作CRUD及watch监听
- 2 boltdb基本操作及在etcd中的源码分析
- 3 bbolt改善boldb
第二十三章 Go-Micro框架(不推荐)
第二十四章 搜索引擎es
- es索引及索引生命周期管理
- 1 go-elasticsearch 官方包
- 1.1 批量写入Bulk
- 1.2 es日志
- 1.3 并发批量BulkIndexer
第二十五章 监控sentry
第二十六章 图数据库Neo4j
第二十七章 Mysql的binlog
第二十八章 OLAP(Online Analytical Processing 联机分析处理)
第二十九章 分布式锁及源码分析
第三十章 Zookeeper
第三十一章 分布式 Id
- 1 通用唯一标识码UUID(Universally Unique Identifier)
- 1.1 github.com/google/uuid 8个版本使用
- 2 雪花算法
第三十二章 Consensus algorithm 共识算法
第三十三章 压缩
第三十四章 本地缓存
第三十五章 sonar静态代码质量分析-涉及与golangci-lint对比使用
第三十六章 Proto管理工具Buf
第三十七章 CI持续集成
第三十八章 Mergo实现 struct 与 map 之间转换-->k8s中应用
第三十九章 权限管理 casbin
- 1 ACL(access-control-list,访问控制列表)
- 2 RBAC (role-based-access-control 基于角色的权限访问控制)
- 3 基于domain或tenant租户实现RBAC
- 4 ABAC(Attribute-based access control 基于属性的权限验证)使用 eval()功能构造来实现基于自定义规则