Table of Contents generated with DocToc
- go_package_example(Go常用包)
- 第零章 rpc实现选项
- 第一章 服务注册中心consul
- 第二章 日志库
- 第三章 消息队列
- 第四章 服务注册及配置文件中心 Nacos
- 第五章 关系型数据库
- 第六章 获取对外可用IP和端口
- 第七章 Gin前端form验证器
- 第八章 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
- 参考
- 1 手动实现rpc
- 2 手动实现stub中间人
- 3 json_rpc
- 4 http_rpc
- 1 rabbitmq
- 1.1 消费者:推拉模式
- 1.1 生产者
- 2 kafka
- 2.1 客户端sarama
- 2.2 客户端confluent-kafka-go源码分析
- 2.2.1 生产者
- 2.2.2 消费者
- 3 rocketmq
- 3.1 消费者:简单消费,延迟消费
- 3.2 生产者:简单消息,延迟消息,事务消息
- 4 Asynq 分布式延迟队列
- 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
前置知识
-
- 引入其他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多路复用
- 1 MongoDB
- mongo和mysql对比:储存引擎及内存结构
- 1.1 增删改查
- 2 Redis(协议,原理,持久化方式)
- redis底层数据结构对象源码分析
- redis 集群
- 2.1 redigo使用
- 2.2 go-redis使用(官方)
- 1 OpenTracing->Jaeger
- 2 OpenTelemetry 两大开源社区合并
- 跨服务组合tracer代码展示:需开启svc1和svc2两个http服务(url可以是zipkin或则jaeger)
- 1 dig依赖注入及http服务分层->不推荐
- 2 wire依赖注入->推荐
- 1 标准库 json
- 2 Jsoniter(完全兼容标准库json,性能较好)-涉及标准库 encoding/json 分析
- 3 mapstructure 将通用的map值解码为结构体
- Note: 使用DTM的代码作为案例
- 1 两阶段提交2pc/XA
- 2 saga事务
- 3 TCC事务
- 4 etcd的STM
- 1 phpserialize(不推荐)
- 1 动态选择文件
- 2 文件内容读取发送
- 0 令牌桶官方包 x/time/rate
- 1 Sentinel-->滑动窗口
- 1.1 基于流量QPS控制
- 1.2 熔断
- 2 Hystrix-->滑动窗口
- 3 uber-go/ratelimit-->Leaky Bucket(漏桶)
- 4 envoyproxy/ratelimit-->计数器
- 1 viper获取本地文件内容
- 2 监听文件变化(fsnotify)原理分析
- 3 远程读取nacos配置(源码分析)
- 4 gopkg.in/yaml.v3 使用
- 5 pelletier/go-toml 使用
- 6 gopkg.in/ini.v1 使用
- 服务端server--读和写流程分析
- 服务端server--鉴权分析
- 服务端server--mvcc并发控制
- 服务端server--watch机制
- 1 基本操作CRUD及watch监听
- 2 boltdb基本操作及在etcd中的源码分析
- 3 bbolt改善boldb
- es索引及索引生命周期管理
- 1 go-elasticsearch 官方包
- 1.1 批量写入Bulk
- 1.2 es日志
- 1.3 并发批量BulkIndexer
- 1 ACL(access-control-list,访问控制列表)
- 2 RBAC (role-based-access-control 基于角色的权限访问控制)
- 3 基于domain或tenant租户实现RBAC
- 4 ABAC(Attribute-based access control 基于属性的权限验证)使用 eval()功能构造来实现基于自定义规则