Dapr是一种可移植的、无服务器的、事件驱动的运行时,它使开发人员能够轻松地构建运行在云和边缘上的有弹性的、无状态的和有状态的微服务,并拥抱语言和开发人员框架的多样性。
中文注释
Please refer to our Dapr Community Code of Conduct
operator = controlPlaneAddress = dapr-api.dapr-system.svc.cluster.local:80
- daprd sidecar负责流量代理、etc
- 启动过程中会拿着从环境变量获取到ca,cert,key 与 operator 建立grpc连接 ;
- 会与sentry 通信, 证书签名
- 会与operator通信,加载组件配置[crd];去获取dapr的全局配置
- 会与placement通信,服务注册、发现
- 会在启动时进行订阅 pkg/runtime/runtime.go:535
- 域名解析 只在 initDirectMessaging 有用 【服务调用】
- dapr actor 会将自身信息注册到placement,同时placement会将相同信息广播到相同的actor实例上
- Dapr actor Placement 服务仅用于 actor 放置,因此如果您的服务不使用 Dapr actor,则不需要。
- Placement 服务可以运行在所有 ,包括自托管和 Kubernetes。
- 单机模式下,去加目录下获取组件
- injector 负责将daprd注入到副本集中
- placement raft 只负责记录actor 实例 ;以及将所有actor记录同步到每一个actor实例中
- backoff.Retry 函数重试
- 1、在同步actor数据到client时,为什么要分三次请求,lock,update,unlock
- 2、placement收到【客户端流】client心跳时,并不会等到raft同步完后再返回,而是交给了一个channel处理
- pkg/placement/placement.go:234
- /usr/local/go/src/crypto/x509/root_unix.go:20
SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
daprd 在与远程服务进行通信时,会为每个服务保持一个链接
pkg/grpc/grpc.go:79
sidecar 之间是通过grpc链接的
- 1、operator 自定义crd ; 使用kubebuilder