当你第一次读到微软本周发布的最新开源项目Dapr时,你可能会觉得它是另一个服务网格。相反,Dapr在一篇博客文章中被描述为“一个开源、可移植、事件驱动的运行时,使开发人员能够轻松构建在云和边缘上运行的弹性、微服务无状态和有状态的应用程序。”
虽然该项目在其Istio服务网格实现中使用了特使代理使用的熟悉的侧车架构,但Azure项目管理总监Gabe Monroy在一次电子邮件采访中解释说,Dapr作为侧车运行,但提供了与服务网格完全不同的功能。
“Dapr松散地转换为分布式应用程序运行时。Monroy写道,“与专注于网络关注点的服务网格不同,Dapr专注于提供构建块,使开发人员更容易构建微服务。Dapr以开发人员为中心,而不是以基础架构为中心。”
在启动时,这些构建块包括服务调用、状态管理、服务之间的发布和订阅消息传递、事件驱动的资源绑定、虚拟参与者以及服务之间的分布式跟踪。
有了这些构建块,开发人员可以构建微服务应用程序,而无需更改其代码,既可以构建新的应用程序,也可以将现有代码转换为微服务体系结构。
“Dapr使用的这种侧车模式与您在ServiceMesh体系结构中看到的类似,在ServiceMesh体系结构中,本地代理用于路由请求。然而,在Dapr的情况下,侧车用于在运行时与编译时集成微服务构建块。这允许Dapr通过标准HTTP/gRPC接口与现有和遗留代码一起使用,”Monroy写道Dapr的设计目的是通过使用可以集成到现有代码库中的sidecar容器和标准HTTP API,轻松地与现有代码和遗留代码集成。这使得企业开发人员能够体验到微服务开发的好处,而无需重写他们的应用程序。”
在解释其构建块功能时,博客文章提供了一个开发人员使用Azure Functions运行时构建应用程序的示例,并希望使用发布/订阅模式在服务之间发送消息—Azure Functions目前未提供这一功能。这正是Dapr不仅提供该功能的地方,而且使开发人员能够“动态地选择消息发送方式的不同实现,而无需更改任何代码。”
Dapr的一个关键特性是它完全不依赖于平台和语言,这意味着它可以在任何平台、任何Kubernetes部署、云中或内部部署,甚至任何物联网设备上运行。所有这些都意味着开发人员可以在构建microservices应用程序时使用他们选择的语言、平台、框架等,同时不必处理底层原语,如线程、并发控制、分区和扩展。
为此,Dapr为Go、Java、JavaScript、.NET和Python提供了特定于语言的SDK,这些SDK“通过类型化,博客文章称,语言API而不是调用http/GRPCAPI“使开发人员能够“用自己选择的语言编写无状态和有状态函数和参与者的组合”。
随着微软为Dapr的alpha发行版贡献了代码,Monroy写道,“我们希望这将由开发人员社区作为一个开源项目来推动。我们欢迎开发人员社区塑造和强化这项技术,并帮助扩展我们在初始版本中交付的构建块集。”
根据项目路线图,TypeScript、C#、Scala、Ruby和Rust将在不久的将来用于SDK开发,分布式锁、领导者选举、重试和电路中断机制以及服务注册都在考虑之中。用于Dapr的GitHub存储库目前强调,该项目是alpha版本,因此在1.0稳定版本发布之前,预计不会用于生产工作负载。
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2212.html
暂无评论