微服务框架对比分析

简介: 微服务框架对比分析

什么是微服务?

微服务是用于构建应用程序的架构风格,一个大的系统可由一个或者多个微服务组成,微服务架构可将应用拆分成多个核心功能,每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作和出现故障的时候不会相互影响,简单来说,微服务架构是把一个大的系统按照不同的业务单元分解成多个职责单一的小系统,并利用简单的方法使多个小系统相互协作,组合成一个大系统,各个小的系统是独立部署的,它们之间是松耦合的。


术语解释

微服务强调的是服务的大小,它关注的是某一个点;

微服务架构是一种架构思想,需要从整体上对软件系统进行考虑。



微服务架构图


每个业务逻辑都被分解为一个微服务,微服务之间通过REST API通信,一些微服务也会向终端用户或客户端开发API接口,但通常情况下,这些客户端并不能直接访问后台微服务,而是通过API Gateway来传递请求,API Gateway一般负责服务路由、负载均衡、缓存、访问控制和鉴权等任务。



微服务架构发展进程

第一代微服务框架

Spring Cloud

spring Cloud为开发者提供了快速构建分布式系统的通用模型的工具(包括配置管理、服务发现、熔断器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等)

第二代微服务框架

dubbo

Dubbo是一个阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案

第三代微服务框架

Service Mesh(服务网格)

istio是开源的Service Mesh(服务网格),Service Mesh翻译成中文就是服务网格下面会带领大家了解到底什么是istio?


微服务框架对比分析

参考:https://istio.cn/t/topic/33

主流微服务框架:SpringCloudDubbo

后起之秀的微服务框架:istio


1、框架背景对比

(1)Spring Cloud,来源于Spring Source ,具有 Spring 社区的强大背书外,还有 Netflix 强大的后盾与技术输出。Netflix 作为一家成功实践微服务架构的互联网公司,在几年前就把几乎整个微服务框架栈开源贡献给了社区,这些框架开源的整套微服务架构套件是 Spring Cloud的核心,核心部分包含如下:

 Eureka: 服务注册发现框架;
 Zuul: 服务网关;
 Karyon: 服务端框架;
 Ribbon: 客户端框架;
 Hystrix: 服务容错组件;
 Archaius: 服务配置组件;
 Servo: Metrics组件;
 Blitz4j: 日志组件。

(2)Dubbo 是一个分布式服务框架,是国内互联网公司开源做的比较不错的阿里开放的微服务化治理框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含如下(官网):

 

    远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模 型,序列化,以及“请求-响应”模式的信息交换方式;
    集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持; 
    自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。


    Dubbo也是采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用 Spring加载Dubbo的配置即可,Dubbo 基于Spring的Schema扩展进行加载。当然也支持官方不推荐的 API 调用方式。

     

    (3)istio 作为用于微服务服务聚合层管理的新锐项目,是 Google、IBM、Lyft(海外共享出行公司、Uber劲敌) 首个共同联合开源的项目,提供了统一的连接,安全,管理和监控微服务的方案。目前是针对Kubernetes环境的,社区宣称在未来几个月内会为虚拟机和Cloud Foundry等其他环境增加支持。istio将流量管理添加到微服务中,并为增值功能(如安全性,监控,路由,连接管理和策略)创造了基础,具有如下功能

      HTTP、gRPC 和 TCP 网络流量的自动负载均衡;
       提供了丰富的路由规则,实现细粒度的网络流量行为控制;
       流量加密、服务间认证,以及强身份声明;
       全范围(Fleet-wide)的策略执行;
       深度遥测和报告。

      2、开源社区活跃度对比

      开源社区情况:现如今企业在采用云计算首选开源,而选择一个开源框架,社区的活跃度将作为重要参考选项。

      查看下在Github上的更新时间

      Spring  Cloud :Spring Cloud · GitHub → 所有项目均更新于『1 小时』内。
       Dubbo :Dubbo · GitHub → 核心项目最近更新于『一个月乃至数月』前。
       istio:istio · GitHub → 所有项目均更新于『30 分钟』内。

      可见,项目在社区活跃度上,istio > Spring Cloud > Dubbo,结合稳定性来看,对于使用 Java 系开发业务较多的企业,Spring Cloud 是相对更优的选择,对于更多企业来说,与语言几乎无绑定的Istio也是可以好好期待一下其在社区的发展。

       

      总结:结合项目背景、提供功能、社区更新活跃度,SpringCloud是目前阶段最为稳妥的可执行微服务框架方案,istio作为支持对于Kubernetes的优先支持来讲,也是一个值得关注的方案。目前对比来看,Dubbo则显得稍逊下来。

      相关文章
      |
      XML JSON API
      ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
      【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
      979 3
      |
      12月前
      |
      人工智能 数据可视化 JavaScript
      颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
      Juggle是国内首个开源的微服务编排框架,专注于解决企业微服务进程中接口重复开发、系统对接复杂等问题。它提供零代码、低代码和AI增强功能,通过可视化拖拽快速组装简单API为复杂接口,支持多协议、多语言脚本和流程多版本管理。相比国外框架如Conductor,Juggle更贴合国内需求,具备高效开发、企业级可靠性及信创适配等优势,助力企业实现敏捷创新与数字化转型。
      颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
      |
      NoSQL MongoDB 数据库
      微服务——MongoDB实战演练——表结构分析
      本文档来源于数据库articledb,展示了一张图片资源。图片宽度为1207像素,高度607像素,采用内联显示方式。内容涉及图像处理与样式设定,适用于文档或网页设计中多媒体元素的布局参考。图片来源为cdn.nlark.com,支持webp格式并附带水印处理。
      205 1
      微服务——MongoDB实战演练——表结构分析
      |
      11月前
      |
      负载均衡 Java API
      基于 Spring Cloud 的微服务架构分析
      Spring Cloud 是一个基于 Spring Boot 的微服务框架,提供全套分布式系统解决方案。它整合了 Netflix、Zookeeper 等成熟技术,通过简化配置和开发流程,支持服务发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)、API网关(Zuul)、配置管理(Config)等功能。此外,Spring Cloud 还兼容 Nacos、Consul、Etcd 等注册中心,满足不同场景需求。其核心组件如 Feign 和 Stream,进一步增强了服务调用与消息处理能力,为开发者提供了一站式微服务开发工具包。
      896 0
      |
      负载均衡 Dubbo 应用服务中间件
      框架巨擘:Dubbo如何一统异构微服务江湖,成为开发者的超级武器!
      【8月更文挑战第8天】在软件开发中,微服务架构因灵活性和可扩展性备受欢迎。面对异构微服务的挑战,Apache Dubbo作为高性能Java RPC框架脱颖而出。它具备服务注册与发现、负载均衡及容错机制等核心特性,支持多种通信协议和序列化方式,能有效连接不同技术栈的微服务。Dubbo的插件化设计保证了面向未来的扩展性,使其成为构建稳定高效分布式系统的理想选择。
      396 80
      |
      Dubbo Java 应用服务中间件
      微服务框架Dubbo环境部署实战
      微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
      1280 17
      微服务框架Dubbo环境部署实战
      |
      运维 NoSQL Java
      后端架构演进:微服务架构的优缺点与实战案例分析
      【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
      709 4
      |
      Dubbo Java 应用服务中间件
      Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
      尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
      |
      负载均衡 Java 网络架构
      实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
      实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
      1020 5
      |
      Kubernetes Java Android开发
      用 Quarkus 框架优化 Java 微服务架构的设计与实现
      Quarkus 是专为 GraalVM 和 OpenJDK HotSpot 设计的 Kubernetes Native Java 框架,提供快速启动、低内存占用及高效开发体验,显著优化了 Java 在微服务架构中的表现。它采用提前编译和懒加载技术实现毫秒级启动,通过优化类加载机制降低内存消耗,并支持多种技术和框架集成,如 Kubernetes、Docker 及 Eclipse MicroProfile,助力开发者轻松构建强大微服务应用。例如,在电商场景中,可利用 Quarkus 快速搭建商品管理和订单管理等微服务,提升系统响应速度与稳定性。
      689 5

      热门文章

      最新文章