开源微服务框架

article/2025/8/27 9:55:38

诞生于 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 上的贡献。

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

  • 分布式:分布式应用/网格 - 开源软件 - OSCHINA - 中文开源技术交流社区
  • 微服务:微服务框架 - 开源软件 - OSCHINA - 中文开源技术交流社区
  • 容器/云原生:PaaS系统/容器 - 开源软件 - OSCHINA - 中文开源技术交流社区
  • RPC:RPC/XMLRPC项目 - 开源软件 - OSCHINA - 中文开源技术交流社区
  • 中间件:软件分类 - 开源软件 - OSCHINA - 中文开源技术交流社区


http://chatgpt.dhexx.cn/article/k9V3nRLk.shtml

相关文章

微服务框架入门(springcloud)

在学习微服务之前我们先理解一下什么是微服务? 微服务是springcloud吗? 微服务是分布式架构的一种,分布式架构就是要把服务拆分,拆分的过程中存在着许多的问题,springcloud仅仅是解决了拆分过程中的服务治理问题,至于其他的复制的问题并没有给出方案 传统的架构把业务写在…

golang 微服务框架

rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golang net/rpc实现。 谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。 不知道dubbo在阿里的内部竞争中败给了HSF,还是阿里有意将其闭源…

微服务框架-SpringCloud

3 总结 拜托!面试请不要再问我Spring Cloud底层原理_云深i不知处的博客-CSDN博客 最后再来总结一下,上述几个Spring Cloud核心组件,在微服务架构中,分别扮演的角色: Eureka:各个服务启动时,E…

SpringCloud微服务框架(通俗易懂,一秒上手)

🎁🎁资源:https://pan.baidu.com/s/1zRmwSvSvoDkWh0-MynwERA&pwd1234 SpringCloud微服务框架 (一)认识微服务服务架构演变SpringCloud (二)微服务拆分案例服务拆分服务间调用 (三…

微服务学习——微服务框架

Nacos配置管理 统一配置管理 配置更改热更新 将配置交给Nacos管理的步骤: 在Nacos中添加配置文件在微服务中引入nacos的config依赖在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个…

SpringCloud 微服务框架

单体架构:将业务全部功能集中到一个项目中,打成一个war包存储,部署在一台服务器中,只有一个数据库 优点 :架构简单,部署成本低。适合小型项目 问题:高并发性能问题,开发时代码耦合问题&#x…

零基础秒懂:手把手教你搭建一套微服务框架!

个人博客请访问 http://www.x0100.top 这套微服务框架能干啥? 这套系统搭建完之后,可以实现: 微服务架构,你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行,系统与系统之间通过 RPC 接口通…

微服务架构 — 微服务框架

目录 文章目录 目录微服务框架第一代微服务框架Spring CloudDubbo下一代微服务框架 — Service MeshIstioEnvoyKubernetes + Service Mesh = 完整的微服务框架微服务框架 微服务架构首先要面对分布式架构的内生复杂性,即:服务通信和服务治理的复杂性,例如:服务发现、熔断、…

微服务架构与开源框架

微服务架构介绍及实践 微服务现在是一个很火的概念,尤其是搞IT的大多数都对其有所了解。 到底火到什么程度呢?2016年有一个统计说,两千家企业里,30%在使用微服务,15%在实验开发和测试微服务架构,24%在学习…

微服务框架

这里写自定义目录标题 微服务框架功能Spring Cloud简介Eureka简介Eureka⼊⻔源码解析Eureka的⼀些概念 Register 服务注册 微服务框架功能 微服务具有以上的这些特点,那么作为⼀个微服务框架,⽐如Spring Cloud,应该具备⼀些什么功能 呢&…

微服务框架springcloud

基础 单体架构:将业务全部功能集中到一个项目中,打成一个war包存储,部署在一台服务器中,只有一个数据库 优点 :架构简单,部署成本低。适合小型项目 问题:高并发性能问题,开发时代码耦合问题&…

微服务框架的介绍

一、什么是微服务 微服务并没有一个官方的定义,可以理解为一种架构风格,将一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在…

第六篇:微服务框架(SpringBoot、SpringCloud)

目录 一. 微服务框架 1. 微服务架构概念 2. 微服务的利与弊(为什么要用微服务) 二. SpringBoot 1. SpringBoot是什么? 2. SpringBoot核心注解是什么? 3. 什么是SpringBoot的自动配置?原理是什么? 4…

DLL文件的创建和调用

文章目录 前言一、DLL的优势二、使用步骤1.创建DLL文件2.调用DLL文件 总结 前言 动态数据库 (DLL) 是作为共享函数库的可执行文件。动态数据库提供了一种方法,使进程可以调用不属于其可执行代码的函数。本文将对DLL的创建和调用步骤进行保姆级讲解。 一、DLL的优势…

C# 调用 dll 文件

一、先使用C来创建一个 .dll 文件 1、创建新项目:CreateDll01 2、选择 “动态链接库(.dll)” 文件 3、在 CreateDll01.cpp 源文件中添加如下代码 // CreateDll01.cpp : 定义 DLL 应用程序的导出函数。 //#include "stdafx.h"extern "C" __decl…

dll是什么呢?dll丢失如何解决?

DLL的概念 DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件&#xff0…

C++ 制作动态链接库.dll及.dll使用

声明:IDE是Visual studio -version 2022 其制作的动态链接库dll里面实现简单的加减法,提供给其他项目调用。 一、动态链接库(DLL)创建 1、创建DLL工程 流程:文件 -> 新建 -> 项目 -> 动态链接库&#xf…

.dll、.lib、.dll.a 的区别

我们已 ffmpeg 的动态链接库为例,描述一下这三个文件的作用: 目录整体结构: 分析 bin 目录: ffmpeg、ffplay、ffprobe 之所以这么小,是因为他们运行的时候会调用 .dll 文件当中的代码。dll:真正存放函数…

Java调用dll文件

目录 1 C创建dll 1.1 项目与工具 1.2 步骤与代码 2 Java使用JNA调用dll 2.1 项目与工具 2.2 步骤与代码 3 实际效果 4 参考链接 1 C创建dll 1.1 项目与工具 Visual Studio 2019 1.2 步骤与代码 ①使用VS创建动态链接库(DLL)项目 ②设置项目名与…

什么是dll文件

动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含…