微服务的终极目标,Mecha分布式运行时之Dapr

1,578 阅读4分钟

这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战

  • 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
  • 📢本文作者:由webmote 原创,首发于 【掘金】
  • 📢作者格言: 生活在于折腾,当你不折腾生活时,生活就开始折腾你,让我们一起加油!💪💪💪

1. Mecha 是啥?

微服务发展到今天,已经有很多公司多年前已经改造完毕,也有些公司还在路上,微服务的优势,有过了解的朋友应该也都能说出个一二三来,经历过微服务改造的,应该都知道其中的艰辛。

单体服务有着很多优势,结构简单、事务的ACID保证,系统内的无缝调用,一旦改造为微服务,必然是分布式服务构造,服务间的不稳定性,通讯的复杂性都使得整个系统的复杂性提升。

随着大量的三方服务的引入,也带来了网络、绑定、状态、生命周期管理等的各方面膨胀的需求,Red Hat的首席架构师Bilgin Ibryam从自己的经验出发,提出了未来的发展方向——多运行时微服务架构。

image.png

他简要的概括了微服务的在四个维度的基本需求。

为了满足这些需求,或者换句话说,应该有个 机甲装备-Macha,穿上它,就能实现微服务。

image.png

是的,从蛮荒走向科技,必然会形成的科技天梯。

业务人员在未来的某一天,可以不需要考虑这些基础设施服务,只需要一张清单,Mecha就能满足你。

2.微软开源的世界第一个分布式运行时Dapr

顺时而生的Dapr,是不是那个赢家?

image.png

官方介绍:Dapr 是一个可移植的、无服务器的、事件驱动的运行时,它使开发人员可以轻松构建在云和边缘运行的弹性、无状态和有状态的微服务,并包含语言和开发人员框架的多样性。

Dapr 将构建微服务应用程序的最佳实践编码为开放、独立的构建块,使您能够使用您选择的语言和框架构建可移植的应用程序。每个构建块都是独立的,您可以在应用程序中使用其中的一个、部分或全部。

是的,Dapr制定了和各个基础服务通讯的标准,并对我开放Api以实现编码语言的弱依赖。其提供了众多语言的HTTP、GRPC协议的SDK,使得你可以使用薄薄的SDK层,就可以和所有基础设施服务进行通讯。

Dapr部署方式可以是SideCar,或者Node方式,其来自云原生,和Kuberbetes配合极好;在没有K8s的环境也可以运行,部署灵活而不限制。

image.png

除了能够和其他基础设施服务进行通信外,其还提供了状态管理、pub/sub消息、Actors、可观测、安全存储等特性。

哦哦哦,令我遗憾的是它竟然是Go语言写的,好吧,又是Go语言从业者的狂欢。

3.dapr特性

  • 事件驱动的发布订阅系统,具有可插入的提供者和至少一次语义
  • 与可插入提供程序的输入和输出绑定
  • 具有可插拔数据存储的状态管理
  • 一致的服务到服务发现和调用
  • 选择加入有状态模型:强/最终一致性,先写/最后写获胜
  • 跨平台虚拟演员
  • 从安全密钥库中检索秘密的秘密管理
  • 速率限制
  • 内置可观察性支持
  • 使用专用的 Operator 和 CRD 在 Kubernetes 上本地运行
  • 通过 HTTP 和 gRPC 支持所有编程语言
  • 来自 Azure、AWS、GCP 的多云、开放组件(绑定、发布-订阅、状态)
  • 在任何地方运行,作为一个进程或容器化
  • 轻量级(58MB 二进制,4MB 物理内存)
  • 作为 sidecar 运行 - 无需特殊 SDK 或库
  • 专用 CLI - 易于调试的开发人员友好体验
  • Java、.NET Core、Go、Javascript、Python、Rust 和 C++ 的客户端

4. 底层服务已经支持

可以到这里查看支持列表。 image.png

目前版本1.30,有微服务改造需求的童鞋,可以重点考虑该技术。

🎏 5. 小结

例行小结,理性看待!

结的是啥啊,结的是我想你点赞而不可得的寂寞。😳😳😳

👓都看到这了,还在乎点个赞吗?

👓都点赞了,还在乎一个收藏吗?

👓都收藏了,还在乎一个评论吗?