云原生集成开发环境——TitanIDE
通过网页在任何地方更安全、更高效地编码2022-04-20
810
4月14日,《行云圆桌派第一期:云原生Dapr的发展与实践》正式开播!活动由行云创新CEO马洪喜,微软最有价值专家、.NET技术专家张善友,微软云技术布道师卢建晖,行云创新云原生架构师张磊四位嘉宾与大家聊聊Dapr的发展情况和落地遇到的问题、Dapr应用场景实践、未来展望等。
以下内容为活动实录:
马洪喜:我们这次活动有三方面的议题,第一部分,我们先来看一下Dapr的发展情况,其实我自己是门外汉,但我听得很多,也跟经常跟几位老师交流。Dapr由微软公司主要发起,我感觉它算是一个比较革命性的技术,为开发者在构建微服务上带来很多优势。首先由卢老师来给大家讲一讲Dapr的前世今生,包括微软为啥会投入推出Dapr,还有整个的社区的发展情况怎么样?
卢建晖:如果要说微软推出Dapr的原因,我反而是想从Dapr这个产品,它诞生的意义是什么来聊聊。谈到分布式的云原生应用,我们会先想到微服务,即所谓现代的分布式云原生应用程序的主要方式,有很多人会拿它去跟传统的单体架构做对比。微服务相比起传统架构有很多优势,但同时微服务架构也会带来非常多的挑战。例如,微服务如何更好被发现?开发者如何轻松地在本地调用服务?如何在最大的限度里减少应用升级需要的时间等。Dapr提供很多的构建块,主要解决了几个问题:有服务到服务的调用,发布订阅的信息,状态的管理,观察性和密钥的一些管理,这些东西都是Dapr的能力。
我在这里举一个Dapr常用的例子,例如一个微服务要调用另外一个微服务,通常我们需要做几件事?第一个,我们要实现服务之间的通信,如果你用K8S去实现的话,可能会用类似的DNS去做一些管理,如果开发人员在本地运行这些微服务,那会遇到什么问题?由于每个微服务都会有不同的端口,这个时候需要有一些替代的机制来在本地运行使用这些正确的服务。但Dapr不论你是在自托管的这种模式,还是说k8s上面,都可以非常方便去运作。
另外是微服务之间的通讯,有可能会有网络上的问题。开发者可能需要去重试,不断得去重试。当然你可能会用很多的一些库去完成,很麻烦,Dapr自带这功能。还有安全通信的问题。我们现在通信要用加密的话就是用mTLS ,用身份验证去做相关的工作。但是如果你要自行配置,就会很麻烦,我自己也会有时候会懵掉。而Dapr已经有所有的服务到服务之间的通讯,带mTLS 的服务,可以为你去加密,而且证书会自动循环,可以消除很多烦恼。
分布式的跟踪也是Dapr上自带的功能。在安全性上,服务a可能被允许访问服务b,但是相反的话是不能进行的,所以在进行配置的时候也会非常痛苦。如果不特别注重安全,也会很容易出错。但是Dapr是非常方便的,通过控制的列表去提供这种访问。作为http的微服务的访问的一个替代的方案,从http迁移到grpc。如果你在微服务的环境里面去做,有些时候如果你不熟悉,也会遇到很多的问题。因为你同时需要做很多,客户端的服务器都需要去升级,另外的就是两个协议之间的改变,你可能都要花很多的时间,但是Dapr可以很好解决这些问题,所以Dapr的诞生为开发者提供的一些API,它支持了多语言,面向多跨云的能力,可以让你更容易的去专注到业务上面,或者一些实际的工作上面,不需要太过复杂,而且它解决了很多开发者可能要面临很多的配置化设定的一些问题。
大家会一直在问Dapr这个社区是怎么样的,包括微软是怎么用好Dapr的。微软虽然说Dapr的发起方,但其实现在有很多的一些友商,包括说像阿里,华为也在Dapr社区去贡献一些代码,说明Dapr具有开放性。而且在社区里面我看得到,很多公司包括行云都在推广推广Dapr做社群,目前dapr是非常的年轻,相信随着时间的推移,我觉得dap的社区会越来越壮大。
张善友:我用Dapr时间比较久,从一开始就跟踪做一些例子,我博客上有一篇Dapr的介绍文章,目前为止大概有好几万的浏览量。今年我也用Dapr落地了几个项目,有 .NET的,也有Java的。我觉得Dapr为项目解决非常大的一个问题就是语言选择,特别是很多.NET开发同学,或者从.NET转到到java的同学会有较深的感受。有很多原来.NET开发者,想找一个较好的微服务框架,后来看上SpringCloud,它发展非常成熟。但多用户用SpringCloud,不仅仅是要解决业务开发问题,还是解决一堆基础设施的问题,搞一堆的中间件,而且局限于Java,而Dapr就能很好解决这个问题。而且我们开发的应用通常会部署在多个云上,这样就会容易被云厂商绑定,使用Dapr就比较自由,不用做太多的调整。
Dapr还有一个比较好的分布式模型Actor,如果是做.NET的同学会知道它有一个开源项目叫"奥尔良",也是微软推出。Dapr 的实现基于项目 "奥尔良" 中引入的虚拟Actor模式,这也是我最看重Dapr的地方,也积极把Dapr推荐给行云,他们也把Actor的应用他们的解决方案里面去。
张磊:我个人也是从张善友老师了解到Dapr。我简单说下使用Dapr在项目应用中的一些感受,首先最重要的感受是我不会被任何一个技术或者环境,包括中间件所绑架。原来在做应用开发之前,要明确一些需求,包括语言,中间件,集中缓存等,一旦确定之后,在未来项目的生命周期中是很难被替换掉。还有运行环境,如果一开始使用虚拟机,或者选择阿里云、腾讯云、微软云,以及这些云厂商提供的一系列增值服务或中间件后,未来很有可能会被这些云厂商所绑架。因为我们对他们的一系列的服务和中间件以及运行环境,已经有重度的依赖。如果说仅仅只是SaaS产品可能还好,但如果是需要部署到各地的一些私有化产品就很麻烦。
还有中间件,作为研发人员应该很了解,用到什么中间件往往需要很深入的学习,这对研发人员来说也是比较大的负担,而Dapr很好解决了这些问题。我们用了Dapr之后,最直观的感受就是研发效率提升了很多,包括代码量也减少了很多,所以我个人对Dapr还是蛮看好的。