微服务框架全家福(多语言版)

2020-07-02 00:00:00 微服 开发 框架 开源 服务

微服务这个词从2013年开始在社区兴起,据2016年一个比较活跃的开发者社区对2000多家企业(包括北美、欧洲、亚太的企业)做的调研报告,已经接近 30%的企业在使用微服务架构,而 15%的企业目前正在试验开发和测试微服务架构,还有 24%的企业正在积极学习和拥抱微服务架构。从这个数据来说,微服务架构正在得到越来越广泛的应用。

微服务这个概念并不是新出现的概念,但可以说是正当红的主角。什么是微服务?微服务能做什么?这些问题可以在网络上找到非常丰富的答案,本文将从语言维度整理现在常用于微服务构建框架,希望能对读者有所帮助。

Java系微服务框架

  • Spring Boot/ Netflix OSS/Spring Cloud

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。作为受欢迎的微服务开发框架,据调查已有64.6%的受访者决定在2017年使用它。

SpringCloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等都可以用SpringBoot的开发风格做到一键启动和部署。

SpringCloud用基于HTTP(s)的REST服务来构建整个服务体系(与Dubbo不同),是Spring Source的产物,Spring社区可以说是Java企业界有影响力的组织了。除此之外,其还有Pivotal和Netflix作为强大的后盾与技术输出。其中Netflix开源的整套微服务架构套件Netflix OSS是Spring Cloud的核心。

由于有了Spring社区的背书,SpringCloud开源社区活跃度很高,其对于中小型互联网公司来说是一种福音。微服务架构需要一套完整的技术生态圈,Spring Cloud做到了这一点。它是所有微服务框架中完整的,提供全套的开源微服务解决方案,下图是SpringCloud的各个工具。Spring Cloud的人气非常高,并有更多的企业正在或者考虑使用SpringCloud。

  • Dubbo

Dubbo是阿里巴巴开源的分布式服务化治理框架(微服务框架),是通过RPC请求方式访问的,久经阿里巴巴电商平台的大规模复杂业务的高并发考验,而且Dubbo比Spring Cloud出现得早,并且当时国内在这方面并未成熟,因此很多团队在做服务化改造时采用了Dubbo,国内使用Dubbo的企业有:阿里巴巴、京东、当当、携程、去哪儿、搜狐、南方航空、中软国际、软通动力、各大电信运营商等。

Dubbo只是服务治理框架,其他功能需要与其他第三方开源产品配合实现。Dubbo社区曾于2016年5月后停止更新过,但是2017年7月底该框架正式得到了官方的维护和支持。从社区的活跃程度和生态完整性上,Dubbo不及Spring Cloud,但其背后有阿里强大的支持,并且有很好的用户基础,相信将来表现不俗。

  • Dropwizard

Dropwizard是由Yammer团队贡献的一个后台服务开发框架,集成了Java生态系统中各问题域中的组件,可以帮助开发者快速打造一个Rest风格的后台服务。Dropwizard Modules可整合那些不在Dropwizard核心内的额外项目,其社区也开发了一些模块用以整合类似Netflix Eureka的项目,可与Spring Cloud媲美。

Dropwizar 在国使用得很少,能搜索到的资源也很少,但是其背后的社区支持是非常强大的。与SpringBoot相比,如果你更喜欢轻量,无疑Dropwizard胜出;如果你已经有Spring经验,无疑会使用SpringBoot。下图是Dropwizard的logo图。

  • Akka

Akka是Java虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行时。Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。微服务是使用Akka Actors支持集群实现的。

  • Vert.x/ Lagom/ ReactiveX/Spring 5

这几种框架在这里放在一起,主要是它们可以进行响应式微服务开发。响应式是一种异步技术,本身跟微服务无关,是一种提升应用性能的技术,但其可以与微服务技术结合,提升应用性能。相信未来响应式技术与微服务技术会更广泛地结合,这几个框架也都比上一年度得到了更多的关注。

  • 其他Java系框架

除了以上介绍的这些主流微服务框架外,还有Grizzly、KumuluzEE、ConductR、Ninja、Jodd、Restlet、RESTEasy、Payara Micro、Redkale、RestExpress、restx、JessMA、eventuate、Rapidoid、Ratpack、Javalite、JHipster及Bootique.io等。基于各个语言的微服务框架中,Java系的框架在数量、质量和人气上占有优势,很多业内人士表示Java是非常适合微服务开发的语言。

.Net系微服务框架

首先,跨平台应用程序开发框架 .NET Core 就是专门针对模块化微服务架构而设计的,是.NETFramework的新一代版本,是微软开发的个官方版本,并在一开始发展时就开源的软件平台。

  • Service Fabric

微软开发的微服务框架,Azure 上众多云服务都是基于Servie Fabric构建,微软也明确表态ServiceFabric将开源。

  • Surging

Surging从技术层面来说就是基于RPC协议的分布式微服务技术框架,是基于.NET Core的微服务框架。

  • Steeltoe OSS

用于开发.NET Core应用的微服务框架。

  • Microdot Framework

这是一个2017年4月开源的.NET微服务框架,可以专注于编写定义服务逻辑的代码,无须解决开发分布式系统的无数挑战,可很好地进行MicrosoftOrleans的集成。

  • .NET China Foundation

组织整合了一系列国内社区开源项目,里面有多个项目都是以微服务为方向的。

除以上框架,还有Xigadee、Apworks framework、Cronus、NancyFx、GRPC等相关框架和项目。

Node.js微服务框架

  • Seneca

Seneca是Node.js微服务框架开发工具, 这个工具包的目的是让你可以集中于编写可用于产品环境的代码。

  • Hapi/ restify/ LoopBack

如要开发简单的微服务后端,那么Hapi 和 restify 很合适。如果是大型的复杂应用,甚至是在现有微服务上构建,那么 LoopBack可能是个好选择,它可以把很多服务 glue 到一起。

Go微服务框架

  • Go-Kit

Go-Kit 是一个分布式的开发工具集,在大型的组织(业务)中可以用来构建微服务。

  • Goa

Goa 是一款用 Go 语言构建微服务的框架,采用独特的设计优先的方法。

  • Dubbogo

Dubbogo 是与阿里巴巴Dubbo兼容的Golang微服务框架。

除了上面3种基于Go语言的微服务框架,还有Micro、Gizmo等。

Python微服务框架

Nameko是Python微服务框架,它将微服务的实现变得简单并且强大。其支持服务发现、负载均衡,支持依赖自动注入,使用很方便,但是其缺点是超时、限速、权限等机制不完善。

Python的微服务框架非常少,暂时就列出一个框架,如果将来有机会再进行补充。

总的来说,微服务框架非常多并且各有特点,正是这种百花齐放的态势才能促进技术的不断革新和进步。但需要说的是,Java系的微服务框架,特别是其中的Spring Boot、SpringCloud人气非常高,生态非常完整,到目前为止稳居所有框架之首。


推荐新书《Java微服务实战》,感兴趣的小伙伴可以到书中了解更多~

------------

更多科技资讯请见微信公众号:博文视点Broadview(微信号:bvbooks)

相关文章