项目简介
本项目是基于Go语言和Dapr框架的微服务演示项目。采用envoy作为API网关,包含gRPC服务器、HTTP服务器等多种类型的服务。项目专注于业务实现,借助Dapr实现服务发现、认证、调用重试、限流、状态管理、消息系统和可观测性等功能。
项目的主要特性和功能
- 多类型服务支持:涵盖gRPC服务器与HTTP服务器,适应不同场景需求。
- 服务治理:通过Dapr达成服务发现、服务mtls认证、服务调用重试、限流和服务访问策略。
- 数据管理:支持状态管理和消息系统。
- 可观测性:集成zipkin实现服务的可观测性。
- 权限控制:借助IAM服务实现权限控制,仅允许特定Bearer Token的请求。
安装使用步骤
安装开发环境
- 安装Go语言。
- 使用
brew install protobuf安装Protobuf。 - 使用
brew install envoy安装Envoy。 - 安装相关的Protobuf生成工具:
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
安装Kubernetes和Dapr运行时
- 准备具有StorageClass的Kubernetes集群。
- 安装Helm:
wget https://get.helm.sh/helm-v3.10.1-linux-amd64.tar.gz - 安装Dapr运行时:
dapr init -k --enable-ha=true - 安装Zipkin:
kubectl create deployment zipkin --image openzipkin/zipkinkubectl expose deployment zipkin --type ClusterIP --port 9411
安装OpenEBS(可选)
helm repo updatemkdir -pv /datahelm install openebs openebs/openebs -n openebs --create-namespace --set localprovisioner.basePath=/datakubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
安装Redis
helm repo add bitnami https://charts.bitnami.com/bitnamihelm repo updatehelm install redis bitnami/redis --set image.tag=6.2
部署项目
kubectl create cm gateway-config --from-file=envoy.yaml=deploy/envoy.yamlkubectl create cm gateway-proto --from-file=proto.pb=proto/proto.pbkubectl apply -f deploy/
测试项目
所有请求若无有效的Bearer Token hanamichi 或 spike 将会被拒绝。
- 无有效Token调用dapr HTTP echo 处理程序:
```
Request:
curl -X POST \
'192.168.234.3:31484/s/echo' \
--header 'Accept: /' \
--header 'Authorization: Bearer spike2' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "value2"
}'
Respond:
http status: 401
body: PERMISSION_DENIED
- 有有效Token调用dapr HTTP `echo` 处理程序:
Request:
curl -X POST \
'192.168.234.3:31484/s/echo' \
--header 'Accept: /' \
--header 'Authorization: Bearer spike' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "value2"
}'
Respond: http status: 200 body: { "name": "value2" } ```
参考文档
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】