# LEARNING_TOOLS
## 博客: [hwholiday](https://www.hwholiday.com/posts/)
- 🤪 golang 基础,微服务,架构,web,k8s,DDD 各种工具任君取用
- 📫 contact me: WECHAT HW_loner
- 📫 contact me: QQ 3355168235
# go-kit 微服务实践,从入门到精通
### [go-kit 系列文章归档地址](https://github.com/hwholiday/learning_tools/tree/master/go-kit) (详细介绍)
1: [v1 go-kit 微服务 基础使用 (HTTP)](https://www.hwholiday.com/2019/go_kit_v1/)
2: [v2 go-kit 微服务 添加日志(user/zap ,并为每个请求添加UUID)](https://www.hwholiday.com/2020/git_kit_v2/)
3: [v3 go-kit 微服务 身份认证 (JWT)](https://www.hwholiday.com/2020/go_kit_v3/)
4: [v4 go-kit 微服务 限流 (uber/ratelimit 和 golang/rate 实现)](https://www.hwholiday.com/2020/go_kit_v4/)
5: [v5 go-kit 微服务 使用GRPC(并为每个请求添加UUID)](https://www.hwholiday.com/2020/go_kit_v5/)
6: [v6 go-kit 微服务 服务注册与发现(etcd实现)](https://www.hwholiday.com/2020/go_kit_v6/)
7: [v7 go-kit 微服务 服务监控(prometheus 实现)](https://www.hwholiday.com/2020/go_kit_v7/)
8: [v8 go-kit 微服务 服务熔断(hystrix-go 实现)](https://www.hwholiday.com/2020/go_kit_v8/)
9: [v9 go-kit 微服务 服务链路追踪(jaeger 实现)(1)](https://www.hwholiday.com/2020/go_kit_v9/)
10: [v10 go-kit 微服务 服务链路追踪(jaeger 实现)(2)](https://www.hwholiday.com/2020/go_kit_v10/)
11: [v11 go-kit 微服务 日志分析管理 (ELK + Filebeat)](https://www.hwholiday.com/2020/go_kit_v12/)
# 用 go 实现的高性能长连接网络库
### [dove](https://github.com/hwholiday/ghost) 用 go 实现的高性能长连接网络库 https://github.com/hwholiday/ghost
# gRPC负载均衡(自定义负载均衡策略--etcd 实现)
### [hlb-grpc](https://github.com/hwholiday/learning_tools/tree/master/hlb-grpc) (gRPC负载均衡(自定义负载均衡策略--etcd 实现)
##### 实现基于版本(version)的grpc负载均衡器,了解过程后可自己实现更多的负载均衡功能
### [详细介绍](https://www.hwholiday.com/2021/etcd_grpc/)
+ 注册中心
- Etcd Lease 是一种检测客户端存活状况的机制。 群集授予具有生存时间的租约。 如果etcd 群集在给定的TTL 时间内未收到keepAlive,则租约到期。 为了将租约绑定到键值存储中,每个key 最多可以附加一个租约
+ 服务注册 (注册服务)
- 定时把本地服务(APP)地址,版本等信息注册到服务器
+ 服务发现 (客户端发起服务解析请求(APP))
- 查询注册中心(APP)下有那些服务
- 并向所有的服务建立HTTP2长链接
- 通过Etcd watch 监听服务(APP),通过变化更新链接
+ 负载均衡 (客户端发起请求(APP))
- 负载均衡选择合适的服务(APP HTTP2长链接)
- 发起调用
```
├── discovery
│ ├── customize_balancer.go
│ ├── discovery.go
│ └── options.go
├── example
│ ├── api
│ │ └── api.pb.go
│ ├── api.proto
│ ├── client_test.go
│ └── server.go
└── register
├── options.go
├── register.go
└── register_test.go
```
# 仿微信 auth2 授权登陆 DDD(领域设计驱动)+ 六边形架构
### [OAuth 2.0-授权码模式(authorization code)仿微信设计(战略篇)](https://www.hwholiday.com/2022/auth2_strategy/)
### [OAuth 2.0-授权码模式(authorization code)仿微信设计(战术篇)](https://www.hwholiday.com/2022/auth2_tactics/)
### [AUTH2 代码地址](https://github.com/hwholiday/learning_tools/tree/master/ddd-auth2-example)
# Golang DDD 的项目分层结构(六边形架构)
### [DDD](https://github.com/hwholiday/learning_tools/tree/master/ddd-project-example) (DDD 项目分层结构)
```base
├── cmd 存放 main.go 等
├── adapter
│ ├── grpc
│ └── http
│ └── facade 引用其他微服务(接口防腐层)
├── application
│ ├── assembler 负责将内部领域模型转化为可对外的DTO
│ └── cqe Command、Query和Event -- 入参
│ └── dto Application层的所有接口返回值为DTO -- 出参
│ └── service 负责业务流程的编排,但本身不负责任何业务逻辑
├── domain
│ ├── aggregate 聚合
│ ├── entity 实体
│ ├── event 事件
│ │ ├── publish
│ │ └── subsctibe
│ ├── repo 接口
│ │ └── specification 统一封装查询
│ ├── service 领域服务
│ └── vo 值对象
└── infrastructure
│ ├── config 配置文件
│ ├── pkg 常用工具类封装(DB,log,tool等)
│ └── repository
│ ├── converter domain内对象转化 do {互转}
│ └── do 数据库映射对象
└── types 封装自定义的参数类型,例如 phone 自校验参数
```
# 封装 zap 日志注入 trace 信息 Trace Id(内含 gin 例子)
### [hlog](https://github.com/hwholiday/learning_tools/tree/master/hlog) (源码地址)
- 实现自动切割文件 (基于 lumberjack 实现)
- 实现可传递 trace 信息 (基于 Context 实现)
```base
{"level":"info","ts":1639453661.4718382,"caller":"example/main.go:36","msg":"hconf example success"}
{"level":"info","ts":1639453664.7402327,"caller":"example/main.go:19","msg":"AddTraceId success","traceId":"68867b89-c949-45a4-b325-86866c9f869a"}
{"level":"info","ts":1639453664.7402515,"caller":"example/main.go:32","msg":"test","traceId":"68867b89-c949-45a4-b325-86866c9f869a"}
{"level":"debug","ts":1639453664.7402549,"caller":"example/main.go:33","msg":"test","traceId":"68867b89-c949-45a4-b325-86866c9f869a"}
```
### [hconfig 插拔式配置读取工具可动态加载](https://github.com/hwholiday/learning_tools/tree/master/hconfig)
- 支持 etcd
- 支持 kubernetes
- 支持 apollo
#### [使用文档](https://www.hwholiday.com/2022/hconfig/)
#### hconfig 配置不同的源
```base
//etcd
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{"127.0.0.1:2379"},})
c, err := etcd.NewEtcdConfig(cli,
etcd.WithRoot("/hconf"),
etcd.WithPaths("app", "mysql"))
//kubernetes
cli, err := kubernetes.NewK8sClientset(
kubernetes.KubeConfigPath("/home/app/conf/kube_config/local_kube.yaml"))
c, err := kubernetes.NewKubernetesConfig(cli,
kubernetes.WithNamespace("im"),
kubernetes.WithPaths("im-test-conf", "im-test-conf2"))
//apollo
c, err := apollo.NewApolloConfig(
apollo.WithAppid("test"),
apollo.WithNamespace("test.yaml"),
apollo.WithAddr("http://127.0.0.1:32001"),
apollo.WithCluster("dev"),
)
```
#### hconfig 使用
```base
conf, err := NewHConfig(
WithDataSource(c),//c 不同的源
)
// 加载配置
conf.Load()
//读取配置
val, err := conf.Get("test.yaml")
t.Logf("val %+v\n", val.String())
//监听配置变化
conf.Watch(func(path string, v HVal) {
t.Logf("path %s val %+v\n", path, v.String())
})
```
# go_push 一个实用的消息推送服务
### [go_push](https://github.com/hwholiday/learning_tools/tree/master/go_push) (推送服务)
```base
├── gateway // 长连接网关服务器
│ ├── push_job.go // 分发任务
│ ├── room.go // 房间,可作为某一类型的推送管理中心
│ ├── room_manage.go // 房间管理
│ ├── ws_conn.go // 简单封装的websocket方法
│ ├── ws_handle.go // 处理websocket协议方法
│ └── ws_server.go // websocket服务
├── logic //逻辑服务器
│ ├── http_handle.go // 推送,房间相关
│ └── http_server.go // http服务
└── main.go
没有合适的资源?快使用搜索试试~ 我知道了~
Go 学习、Go 进阶、Go 实用工具类、Go DDD 项目落地、Go-kit 、Go-Micro 、Go 推送平台、微服务实践
共667个文件
go:487个
proto:22个
sh:21个
0 下载量 125 浏览量
2024-10-15
13:39:14
上传
评论
收藏 1.74MB ZIP 举报
温馨提示
Go 学习、Go 进阶、Go 实用工具类、Go DDD 项目落地、Go-kit 、Go-Micro 、Go 推送平台、微服务实践
资源推荐
资源详情
资源评论
收起资源包目录
Go 学习、Go 进阶、Go 实用工具类、Go DDD 项目落地、Go-kit 、Go-Micro 、Go 推送平台、微服务实践 (667个子文件)
other.log.27.07.2018 373B
logstash-sample.conf 490B
config 272B
description 73B
Dockerfile 595B
Dockerfile 227B
Dockerfile 94B
Dockerfile 66B
Dockerfile 66B
Dockerfile 66B
Dockerfile 66B
Dockerfile 66B
Dockerfile 65B
pay.drawio 22KB
im架构.drawio 15KB
service_plan.drawio 13KB
Untitled Diagram.drawio 9KB
IM2.0.Process.drawio 9KB
BigData.drawio 9KB
IM2.0.drawio 6KB
istio_test.drawio 4KB
.DS_Store 6KB
user-center.excalidraw 33KB
exclude 240B
.gitignore 261B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
.gitignore 0B
generator.go 86KB
api.pb.go 8KB
api.pb.go 8KB
main.go 8KB
api.pb.go 7KB
howie.pb.go 7KB
aes.go 7KB
howie.pb.go 7KB
log.go 6KB
howie.pb.go 6KB
test.pb.go 6KB
msg.pb.go 5KB
x3curve25519_test.go 5KB
hw.go 5KB
log.go 5KB
log.go 5KB
hbase_test.go 5KB
match.go 5KB
main.go 5KB
minio_test.go 5KB
hconf.go 5KB
annoucement.pb.go 4KB
user.pb.go 4KB
kafka_test.go 4KB
timewheel.go 4KB
ebcdic.go 4KB
zap.go 4KB
user.pb.go 4KB
user.pb.go 4KB
user.pb.go 4KB
user.pb.go 4KB
user.pb.go 4KB
user.pb.go 4KB
service.pb.go 4KB
service.pb.go 4KB
service.pb.go 4KB
service.pb.go 4KB
service.pb.go 4KB
service.pb.go 4KB
user_agent_client.go 4KB
customize_balancer.go 4KB
jaeger.go 4KB
jaeger.go 4KB
user_agent_client.go 4KB
main.go 4KB
main.go 4KB
pushkit_push.go 4KB
es_test.go 3KB
docs.go 3KB
main.go 3KB
aes.go 3KB
country_to_continent_mapping.go 3KB
zap.go 3KB
main.go 3KB
tool_test.go 3KB
共 667 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
baidu_37552881
- 粉丝: 534
- 资源: 109
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功