项目简介
本项目是基于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.28
go 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/zipkin
kubectl expose deployment zipkin --type ClusterIP --port 9411
安装OpenEBS(可选)
helm repo update
mkdir -pv /data
helm install openebs openebs/openebs -n openebs --create-namespace --set localprovisioner.basePath=/data
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
安装Redis
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install redis bitnami/redis --set image.tag=6.2
部署项目
kubectl create cm gateway-config --from-file=envoy.yaml=deploy/envoy.yaml
kubectl create cm gateway-proto --from-file=proto.pb=proto/proto.pb
kubectl 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】