微服务架构

微服务架构是一种架构风格,这种架构下的应用是由一系列的细粒度、互相连接的服务组成的,其发展如火如荼,甚至已经成为构建弹性可扩展应用的新标准。The Software House发布的2020年微服务状态报告显示微服务首先在扩张性和性能上表现不俗,其次在搭建新项目、可维护性和可调试性、工作效率、团队协作上都得到高分。

应用现状

奥莱利技术咨询最近发布的关于云计算增长的技术雷达问卷调查报告显示, 52%以上的企业或组织正在使用微服务架构。其中使用年限超过3年的占比在28%以上。image.png

开发语言分布

微服务架构对编程语言没有要求,其解耦能力使得不同项目可以用不同的编程语言实现,只需要提供标准接口供互相调用即可。虽然如此,但调查显示,NodeJs占据了统治地位(本来很长的一段时间里,微服务都是和通常由Java或者.NET实现的企业级的大型解决方案相关联的),占比65%,远超出第二名Java和第三名.NET;而其中的26%将NodeJs作为其微服务里唯一的技术栈。可以看出NodeJs不仅变得越来越流行,还和微服务结合得相当好。而当前“微服务加Serverless”模型正在成为云计算的新趋势,在各个云厂商提供的Serverless服务中,NodeJs都是绝对的一等公民。
Picture1.jpg

趋势

主流的微服务开源框架有阿里的 Dubbo 和 Netflix 的 Spring Cloud,而 Google 的 Kubernetes 则是平台级的微服务框架。虽然微服务架构本身对语言没有要求,而且 NodeJs 被广泛使用,但是主流的微服务开发框架比如 Dubbo 和 Spring Cloud 还是只支持 Java。尽管如此, Kubernetes 的出现使得其他语言也能应用在微服务架构中。比如以上报告显示出的 NodeJs 的极高使用占比,很可能就是因为使用 NodeJs 的公司同时也使用了 Kubernetes。正好我本身服务过的两家公司,一家是小型创业公司,一家是全球知名跨国企业,都是使用了 Kubernetes 和 NodeJs 技术栈。可以预见到 Kubernetes 是一个长期趋势。

Dubbo、Spring Cloud 和 Kubernetes 对比

个人只用过 Kubernetes,对 Dubbo 和 Spring Cloud 一窍不通,这里贴上几张架构师杨波在极客时间的视频课上分享的对比图,相信看了之后小白也能秒懂:
image.png
image.png
image.png

参考文献