前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务框架全家福【多语言版】

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

作者头像
用户1682855
发布2018-06-08 11:17:10
1.4K0
发布2018-06-08 11:17:10
举报
文章被收录于专栏:前沿技墅前沿技墅

微服务这个词从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.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前沿技墅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档