微服务|现有技术框架选型与资料整理

框架集合

微服务是分布式架构的最佳实践方案,那这种方案它也需要具体的技术框架去落地。所以在全球有很多的互联网公司也都在去尝试开发自己的微服务落地技术。但是在这些技术里,真正广为人知的就是Spring Cloud。Spring Cloud 以微服务为核心的分布式系统构建标准,是一系列框架的有序集合,直至现在,由不同编程语言、不同技术框架所开发的微服务系统中,基于 Spring Cloud 的解决方案仍然是最为主流的选择。

Spring Cloud

Spring Cloud Alibaba

62fcb02ae2c64

Spring Cloud Alibaba的微服务系统可以拆分成图中的架构:

62fcb1f47f158

除了Spring Cloud,还有一些其他方案的框架可以选用,如:

CloudWeGo,是一套由字节跳动开源的、可快速构建企业级云原生微服务架构的中间件集合。

Tars,是一套高性能、多语言的微服务治理框架。

Dubbo,是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案,
涵盖 Java、Golang 等多种语言 SDK 实现。

Seneca,微服务架构的node.js的工具集。

注册发现服务

Nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos

Consul

Consul是一个基于微服务的服务发现和管理工具,可以让我们轻松地管理和发现微服务,并且可以让我们轻松地管理微服务的负载均衡。

Consul

Eureka

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在微服务的中间层服务,以达到负载均衡和中间层服务故障转移的目的。

Eureka

Zookeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper

服务之间的通讯

thift

Apache thift 软件框架,用于可扩展的跨语言服务开发,结合了软件栈和代码生成引擎,可以在 C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、OCaml 和 Delphi 等语言之间高效、无缝地构建服务。

thift

gRPC

GRPC 是一个现代的开源高性能远程过程调用(Remote Process Call,RPC)框架,可以在任何环境中运行。它可以通过可插拔的负载平衡、跟踪、健康检查和身份验证支持,有效地连接数据中心内和数据中心之间的服务。它还适用于物联网设备、移动应用程序和浏览器到后端服务的最后一公里分布式计算。

gRPC

Dubbo

Dubbo 是一款微服务框架,为微服务提供高性能 RPC 通信,提供 Java、Golang 等语言 SDK 实现。

Dubbo

Tars

Tars 是一个高性能、多语言的微服务治理框架。为微服务提供 RPC 通信,提供C++、Java、Go、JavaScript、php 等语言 SDK 实现,还可以部署在k8s集群上。

Tars

feign

feign是一个RESTful客户端框架,主要用于Java。

feign

Kitex

Kitex 是字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点。

Kitex

Hertz

Hertz 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点。

Hertz

负载均衡

Ribbon

Ribbon 是一个内置了软件负载平衡器的进程间通信(远程过程调用)库。主要使用模型包括带有各种序列化方案支持的 REST 调用。

Ribbon

网关

Spring Cloud Gateway

Spring Cloud Gateway 是一个网关服务,用于将多个服务集成到一个网关服务中,并且提供统一的访问接口。

Spring Cloud Gateway

Zuul

Zuul 是一个提供动态路由、监视、弹性、安全等功能的网关服务。

Zuul

容错保护

Sentinel

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件。

Sentinel

Hystrix

Hystrix是由Netflflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。

Hystrix

Resilience4j

Resilicence4J一款非常轻量、简单,并且文档非常清晰、丰富的熔断工具,这也是Hystrix官方推荐的替代产品。不仅如此,Resilicence4j还原生支持Spring Boot 1.x/2.x,而且监控也支持和prometheus等多款主流产品进行整合。

Resilience4j

链路追踪

Zipkin

Zipkin分布式跟踪系统;它可以帮助收集时间数据,解决在微服务架构下的延迟问题;它管理这些数据的收集和查找。

Zipkin

Skywalking

Skywalking 是用于分布式系统的应用程序性能监视工具,特别是为微服务、云本地和基于容器(Kubernetes)架构设计的。

Skywalking

Jaeger

Jaeger 是一个开源端到端分布式跟踪,监视和排除复杂分布式系统中的事务。

Jaeger

分布式事务

Seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

Seata

数据存储

Minio

MinIO 提供高性能、 S3兼容的对象存储。原产于 Kubernetes 的 minIO 是唯一可用于所有公共云、Kubernetes 发行版、私有云和边缘储存的对象存储套件。MinIO 在 GNU AGPL v3下是100% 开源的。

Minio

服务部署

Kubernetes

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

Kubernetes

Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker