诞生于 2014 年的“微服务架构”,其思想经由 Martin Fowler 阐述后,在近几年持续受到重视,理论与相关实践都不断发展,目前它已经成为了主流软件架构模式。

关于微服务架构是什么,没有一个明确的定义,每个实践者有自己的理解,但是有人给出的一个公式值得思考:

微服务架构 = 80% 的 SOA 服务架构思想 + 100% 的组件化架构思想 + 80% 的领域建模思想

微服务架构的优点很多,比如它解耦业务,提供更高的灵活性,允许在服务频繁发版的同时保持系统其它部分的可用性与稳定性;解耦编程语言,针对不同业务可以使用更加合适的语言进行开发;解耦开发团队,不同团队各自负责一个微服务,互不影响,加速交付。

关于微服务架构,网上资料相当多(因为现在很火,各家都有实践案例分享),读者可以另行查阅,这里不赘述。

下边为大家列举了当前最为火热,最常被人提及的开源微服务开发框架,希望对开发者有一定的帮助(点击项目名,可以直接跳转介绍页):

Spring Cloud

Spring Cloud 为开发者提供了分布式系统配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话与集群状态等的开发工具。使用 Spring Cloud 开发者可以快速实现上述这些模式。

Eclipse MicroProfile

Eclipse MicroProfile 是一个 Java 微服务开发的基础编程模型,它致力于定义企业 Java 微服务规范,MicroProfile 提供指标、API 文档、运行状况检查、容错与分布式跟踪等能力,使用它创建的云原生微服务可以自由地部署在任何地方,包括 Service Mesh 架构,如 Istio。

Dubbo

Dubbo 是阿里开源的一款高性能 RPC 框架,特性包括基于透明接口的 RPC、智能负载均衡、自动服务注册和发现、可扩展性高、运行时流量路由与可视化的服务治理。

Tars

Tars 是腾讯将其内部使用的微服务框架 TAF(Total Application Framework)多年的实践成果总结而成的开源项目,在腾讯内部有上百个产品使用,服务内部数千名 C++、Java、Golang、Node.Js 与 PHP 开发者。其包含一整套开发框架与管理平台,兼顾多语言、易用性、高性能与服务治理,理念是让开发更聚焦业务逻辑,让运营更高效。

Helidon

Helidon 是甲骨文开源的一个微服务框架,编写的微服务运行在由 Netty 提供支持的快速 Web 内核上。

SOFAStack

SOFAStack™(Scalable Open Financial Architecture Stack)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里锤炼出来的最佳实践。

gRPC

gRPC 是谷歌开源的高性能通用 RPC 框架。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩与单 TCP 连接上的多路复用请求等特性,这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

Thrift

Thrift 是一个 RPC 框架,用来开发可扩展且跨语言的服务。它结合了功能强大的软件堆栈和代码生成引擎,以构建可以在 C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk 与 OCaml 等语言间无缝结合的、高效的服务。

brpc

brpc 是百度内部最常使用的工业级 RPC 框架,有 1000 000+ 个实例(不包含 client)和上千种服务,在百度内叫做“baidu-rpc”,目前只开源了 C++ 版本。

上边列出的主要是一些微服务架构的开发框架或者与微服务架构至关重要的 RPC 框架,而其实微服务又涉及到分布式,这又会涉及到各种各样的中间件,数量太过于庞大,下回再议吧。

但是有一个方面是一定要在这里指出来的,那就是 Service Mesh。现在提到微服务架构,一般都会涉及到 Service Mesh 的相关内容,Service Mesh 被誉为“下一代微服务架构”,它源于对早期的服务代理模式 Sidecar 的扩展,其理念虽然由来已久,但是直到近两年随着微服务的火速兴起和 Buoyant 创建 Linkerd 并将其重新演绎,才逐渐以崭新的姿态呈现给世人。

Service Mesh 重点在 Mesh,它在 Sidecar 的基础上,强调了各个代理之间形成的有机网络。以通用组件的形式管控系统中所有服务通信流量,同时下沉了微服务开发的技术栈,可以做到语言无关、功能可扩展。

通过一个网格,Service Mesh 可以将服务治理的各个部分、微服务架构建设中的各个环节都不断延申,最终成为一套微服务开发完全解决方案。

这里也列出几个目前在 Service Mesh 领域稳坐主流地位的开源项目:

Linkerd

Linkerd 是一个提供弹性云端原生应用 Service Mesh 的开源项目,也是面向微服务的开源 RPC 代理,它的核心是一个透明代理。

Envoy

Envoy 是开源的边缘和服务代理,用于云原生应用,其最初是在 Lyft 构建的,它是为单一服务和应用程序设计的高性能 C++ 分布式代理,以及为大型微服务 Service Mesh 架构设计的通信总线和通用数据平面。

Istio

Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。

Conduit

Conduit  是一个 Kubernetes 的超轻量级 Service Mesh,其目标是成为最快、最轻、最简单并且最安全的 Service Mesh。它使用 Rust 构建了快速、安全的数据平面,用 Go 开发了简单强大的控制平面,总体设计围绕着性能、安全性和可用性进行。它能透明地管理服务之间的通信,提供可测性、可靠性、安全性和弹性的支持。虽然与 Linkerd 相仿,数据平面是在应用代码之外运行的轻量级代理,控制平面是一个高可用的控制器,然而与 Linkerd 不同的是,Conduit 的设计更加倾向于 Kubernetes 中的低资源部署。

注:在发布 0.5 版本后,后续 Conduit 已经整合到了 Linkerd 2,详情查看:

  • Conduit 0.5 成为终曲,后续并入 Linkerd 2.0

对 Service Mesh 的建设其实已经成为当前的业内共识,从下边这些项目都在往这个方向上演进就可以大致有所体会:

WeiboMesh

Motan 是新浪微博开源的是一套高性能、易于使用的分布式 RPC 框架,后来在 Motan Agent 的基础上演化出了 WeiboMesh。WeiboMesh 偏向服务治理方向,同时提供服务的动态管理能力,如服务降级、动态配置、权限管理、数据采集与服务指令处理等。

Dubbo Mesh

Dubbo 在 v3 中发展 Service Mesh,官方希望 Dubbo Mesh 进入 Envoy 社区,目前 Dubbo 协议已经被 Envoy 支持,数据层选址、负载均衡和服务治理方面的工作还在继续,控制层目前在丰富 Istio/Pilot-discovery。

SOFAMOSN

MOSN 是 SOFAStack 的组件,它一款采用 Go 语言开发的 Service Mesh 数据平面代理,功能和定位类似 Envoy ,旨在提供分布式,模块化,可观察,智能化的代理能力。MOSN 支持 Envoy 和 Istio 的 API ,可以和 Istio 集成。

nginMesh

nginMesh 是 NGINX 开源的 Service Mesh 方案,它提供基于 NGINX 的 Service Mesh 实现。nginMesh 与 Istio 兼容,利用 NGINX 实现 Sidecar 代理,集成在 Istio 中,可以标准、可靠和安全的方式促进服务之间的通信。

注:nginMesh 项目目前已经不再积极开发。

MicroProfile Service Mesh

MicroProfile Service Mesh 是 MicroProfile 的 Service Mesh 规范。MicroProfile 定义了用于开发云原生微服务的一系列规范,本质上它也是为 Istio 而生的微服务编程模型,而 Istio 本身就是 Service Mesh 的代名词。此规范关注 Service Mesh,并且更多地聚焦于 Istio。

Ambassador

Ambassador 是一个基于 Envoy 构建的 Kubernetes 原生 API 网关,专为微服务而设计,它本质上是一个 Envoy 入口控制器,但具有更多功能,包括支持 gRPC、HTTP/2 与 WebSockets,支持 CORS、超时、加权轮询调度、粘性会话与速率限制等。

Gloo

Gloo 是一个基于 Envoy 的 Kubernetes 原生入口控制器和下一代 API 网关。Gloo 在函数级路由方面表现卓越,它支持传统应用程序、微服务与 Serverless。Gloo 设计独特,可支持混合应用,其中的多种技术、架构、协议和云可以共存。

Kong

Kong 在 1.0 GA 的时候带来了 Service Mesh 能力,用户不仅可以将 Kong 部署为 API 网关,还可以将其部署为独立的 Service Mesh 代理。Kong 插件能为 Service Mesh 提供开箱即用的关键功能,并能与其它云原生技术集成,包括 Prometheus、Zipkin、健康检查、canary 测试与蓝绿测试等。

Consul Connect

Connect 是 Consul 中的 Service Mesh 方案,它可以自动将任何现有的 Consul 群集转换为 Service Mesh 解决方案。Connect 通过自动 TLS 加密和基于身份的认证实现安全的服务到服务通信。

借此机会特别感谢以 ServiceMesher 为代表的社区在国内普及与发展 Service Mesh 上的贡献。

当然,除了列出的这些框架值得期待,还可以在下边这几个分类中搜索、查看更多相关项目:

  • 分布式:https://www.oschina.net/project/tag/191/distributed-and-grid
  • 微服务:https://www.oschina.net/project/tag/461/microservice
  • 容器/云原生:https://www.oschina.net/project/tag/406/paas
  • RPC:https://www.oschina.net/project/tag/347/xmlrpc
  • 中间件:https://www.oschina.net/project/tags

开源微服务框架 汇总相关推荐

  1. 闲聊go开源微服务框架pitaya(1)

    闲聊go开源微服务框架pitaya(1) go极少有经典的框架,关于pitaya,摘自网上的一段话: "基于golang,可伸缩的分布式游戏服务器框架 使用的技术比较先进 ETCD实现服务发 ...

  2. GoLang开源微服务框架

    搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071,或关注公众号:程序猿AirGo 开源微服务框架 Go 微服务框架,同时支持 gRPC 和 HTTP,封装各种常用组件,开箱即用,专注业务 ...

  3. 常用开源微服务框架有几个特点?

    近些年,随着低代码开发技术的盛行,开源微服务框架的发展也逐渐成熟.很多客户朋友咨询关于开源微服务的特点和优势,今天,我们就针对客户朋友较为关注的话题做一个内容介绍.概括起来,如果想了解常用开源微服务框 ...

  4. golang微服务框架对比_最强开源微服务框架,全网独家整理

    诞生于 2014 年的"微服务架构",其思想经由 Martin Fowler 阐述后,在近几年持续受到重视,理论与相关实践都不断发展,目前它已经成为了主流软件架构模式. 关于微服务 ...

  5. 闲聊go开源微服务框架pitaya(2)

    App.rpcto所需参数serverid,从哪里来哪?首先pitaya框架有以下几个函数: GetServer() *cluster.Server GetServerByID(id string) ...

  6. 企业级微服务框架落地

    根据康威定律,当互联网公司业务和团队发展到一定规模,微服务架构是一种必然的演化趋势.我们看看唯品会对微服务框架体系的建设及实践. 先来看一下唯品会微服务基础中台架构的设计思路.围绕微服务,唯品会自主研 ...

  7. 如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计

    2019独角兽企业重金招聘Python工程师标准>>> 写在前面 开源微服务框架 Apache ServiceComb 的前身为华为云的 微服务引擎 CSE (Cloud Servi ...

  8. 滴滴大型微服务框架设计实践

    导读:在不久前的 Gopher China 大会中,滴滴高级专家工程师杜欢以<大型微服务框架设计实践>为主题的深度分享. ---- 大家好,我是杜欢,很荣幸能代表滴滴来做分享.我来滴滴的第 ...

  9. 滴滴杜欢:大型微服务框架设计实践

    杜欢:滴滴出行 / R lab 高级专家工程师 先后在微软和百度任职.曾自主创业作为创始⼈和 CTO ,专注于游戏领域创新项⽬研发落地.2015 年⾄今:历任滴滴出⾏平台产品中⼼技术负责⼈.出⾏创新业 ...

  10. java 微服务框架对比_多云架构下,JAVA微服务技术选型实例解析

    [摘要] 本文介绍了基于开源自建和适配云厂商开发框架两种构建多云架构的思路,以及这些思路的优缺点. 微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. ...

最新文章

  1. java ee 6 sdk中文版,Java EE 6 SDK+Eclipse JEE+Android ADT-Fun言
  2. matlab显示服务器出现意外,Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决...
  3. spring配置datasource三种方式
  4. 数据探查与可视化平台
  5. python解决鸡兔同笼问题
  6. oracle画圆,元宵佳节:看Oracle技术粉们用SQL画团圆
  7. Pandas的学习(3.DataFrame的创建方法和三种索引方法(iloc、loc、values)以及切片)
  8. PyCharm使用技巧(六):Regullar Expressions的使用
  9. LTTng 简介使用实战
  10. let 只能在严格模式下吗_LET的完整形式是什么?
  11. SpringCloud项目总结
  12. ORACLE start with… connect by prior 子句用法
  13. Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架
  14. java 小技巧_Java中有哪些好用的小技巧?
  15. 国内手机市场寒风持续,华为与OV竞争将更激烈
  16. ES2015 解构 Destructuring
  17. Vue项目首页-热销推荐组件开发(7-6)
  18. symfony框架Twig模板语言的使用
  19. 免费邮箱排名用什么好?学校邮箱如何注册?邮件群发哪个多?
  20. 浅谈人力外派与校企合作的可能性,或许是另一条新的出路,收藏

热门文章

  1. 什么是DDD开发模式
  2. 基础线性代数知识点总结与回顾(三):向量空间和二次型
  3. 用128行代码实现一个文字冒险游戏
  4. 截止2020年中国有多少大学生?
  5. 常用邮箱SMTP服务器地址大全
  6. 《电磁学》学习笔记1——电场
  7. Python做人工智能?让电脑自己学会玩游戏,实战带你入门机器学习
  8. hmcl启动器java下载_HMCL启动器
  9. arma 预测 matlab代码,求助:ARMA模型进行预测
  10. linux天气软件,Ubuntu 18.04 6款查询天气的小工具推荐(适用于其它Linux)