微服务框架全家福【多语言版】

2017-09-28 15:03:32 Free/付睿 前沿技墅


微服务这个词从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微服务实战》,对此有精彩、详解的讲解。

参考文献:

[1] 基于 DevOps 的微服务生态系统与工程实践(一).http://www.yunweipai.com/archives/21309.html.

[2] SpringBoot与Spring Cloud 是什么关系?知乎:https://www.zhihu.com/question/47304987?sort=created.

[3] 百度百科相关词条,知乎相关问题及答案.

[4] Java微服务:这个画饼是个谎言,但你却不能忽视它.http://www.jianshu.com/p/ 7633997a8556.

[5]Netflix OSS, Spring Cloud 以及Kubernetes. http://www.60kb.com/post/38.html

[6] 2017Node.js 开发框架比较. https://cnodejs.org/topic/58caaec27dee71e5193a53-ce.

[7] .NET平台微服务项目汇集. http://www.cnblogs.com/shanyou/archive/2017/08/27/7440074.html.

[8] 2017年UI、Web、微服务顶级框架都有啥?http://tech.it168.com/a2017/0308/3103/000003103896.shtml.


点击 阅读原文 可以看到一本广受好评的Spring Cloud图书。



长按二维码,关注“前沿技墅”,抢先接收新知、了解书讯、结识大咖。

任何伟大,无不起步于不经意间,你可以选择不经意错过,或不经意开始……