本文目录

一、常见的API网关

1.1、Nginx

1.2、Zuul

1.3、SpringCloud Gateway

1.4、Kong

1.5、Traefik

1.6、OpenResty

二、常见的注册中心

2.1、Eureka

2.2、Zookeeper

2.3、Consul

2.4、Nacos

三、常见的RPC框架

3.1、Dubbo

3.2、Motan

3.3、Tars

3.4、Spring Cloud

3.5、gRPC

3.6、Thrift


一、常见的API网关

1.1、Nginx

Nginx 是一个高性能的HTTP和反向代理服务器。Nginx一方面可以做反向代理,另外一方面可以做静态资源服务器,接口使用Lua动态语言可以完成灵活的定制功能。

Nginx 在启动后,会有一个 Master 进程和多个 Worker 进程,Master 进程和 Worker 进程之间是通过进程间通信进行交互的。Nginx 采用了异步非阻塞的方式来处理请求,也就是说,Nginx 是可以同时处理成千上万个请求的。

Nginx 官网

1.2、Zuul

Zuul 是 Netflix 开源的一个API网关组件,它可以和 Eureka、Ribbon、Hystrix 等组件配合使用。社区活跃,融合于 SpringCloud 完整生态,是构建微服务体系前置网关服务的最佳选型之一。

Zuul 目前有两个大的版本:Zuul1 和 Zuul2

Zuul1 是基于 Servlet 框架构建,它采用的是阻塞和多线程方式,即一个线程处理一次连接请求,这种方式在内部延迟严重、设备故障较多情况下会引起存活的连接增多和线程增加的情况发生。

Netflix 发布的 Zuul2 有重大的更新,它运行在异步和无阻塞框架上,每个 CPU 核一个线程,处理所有的请求和响应,请求和响应的生命周期是通过事件和回调来处理的,这种方式减少了线程数量,因此开销较小。

Zuul 官网

Zuul 源码托管

1.3、SpringCloud Gateway

Spring Cloud Gateway 是Spring Cloud 的一个全新的API网关项目,目的是为了替换掉Zuul1,它基于Spring5.0 + SpringBoot2.0 + WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于Zuul,官⽅测试,Spring Cloud GateWay是Zuul的1.6倍,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式。

Spring Cloud Gateway可以与Spring Cloud Discovery Client(如Eureka)、Ribbon、Hystrix等组件配合使用,实现路由转发、负载均衡、熔断、鉴权、路径重写、⽇志监控等,并且Gateway还内置了限流过滤器,实现了限流的功能。

Spring Cloud Gateway 官网

1.4、Kong

Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

Kong主要有三个组件:

  • Kong Server :基于Nginx的服务器,用来接收API请求。
  • Apache Cassandra/PostgreSQL :用来存储操作数据。
  • Kong dashboard:官方推荐UI管理工具,也可以使用 restfull 方式管理admin api。

Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。

Kong 官网

Kong 源码托管

1.5、Traefik

Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。

Traefik 官网

Traefik 中文官网

1.6、OpenResty

OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty 中文官网

OpenResty 源码托管

二、常见的注册中心

Spring Cloud支持的多种注册中心Eureka、Consul、Zookeeper、以及阿里巴巴推出Nacos。这些注册中心在本质上都是用来管理服务的注册和发现以及服务状态的检查的

2.1、Eureka

原生,2.0遇到性能瓶颈,停止维护。

Eureka 是 Netflix 出品的用于实现服务注册和发现的工具。 Spring Cloud 集成了 Eureka,并提供了开箱即用的支持。其中, Eureka 又可细分为 Eureka Server 和 Eureka Client。

Eureka 源码托管

2.2、Zookeeper

支持,专业的独立产品。例如:dubbo。

ZooKeeper是一种集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。分布式应用程序以某种形式使用所有这些类型的服务。每次实现它们时,都需要做大量工作来修复不可避免的bug和竞争条件。由于实现这些类型的服务很困难,应用程序最初通常会忽略它们,这使得它们在发生变化时变得脆弱,难以管理。即使做得正确,这些服务的不同实现也会导致应用程序部署时的管理复杂性。

Zookeeper 官网

2.3、Consul

原生,GO语言开发。

Consul是一个服务网络解决方案,使团队能够管理服务之间以及跨多云环境和运行时的安全网络连接。Consul提供服务发现、基于身份的授权、L7流量管理和服务对服务加密。

Consul 官网

2.4、Nacos

相对于 Spring Cloud Eureka 来说,Nacos 更强大。

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

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

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

Nacos 官网

Nacos 源码托管

三、常见的RPC框架

3.1、Dubbo

国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。后来贡献给了Apache软件基金会。

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

Dubbo 官网

3.2、Motan

微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。Motan是一个跨语言远程过程调用(RPC)框架,用于快速开发高性能分布式服务。

Motan生态系统相关项目:

  • Motan go是golang实现。
  • MotanPHP是PHP客户端可以直接或通过Motan go代理与Motan服务器交互。
  • Motan openresty是基于openresty的Lua(Luajit)实现。

Motan 源码托管

3.3、Tars

腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。

TARS是一个Linux基金会项目。它是一个基于名称服务和Tars协议的高性能RPC框架,也是一个集成的管理平台,并通过灵活的调度实现了托管服务。

Tars,又名TAF(Total Application Framework),自2008年以来一直在腾讯使用。目前它支持C++、Java、Nodejs和PHP。该框架为开发、维护和测试提供了一套解决方案,使开发、部署和测试服务更加高效。它集成了可扩展的编码/解码协议、高性能RPC通信框架、名称服务、监视器、统计和配置。您可以使用它快速开发基于微服务的可靠分布式应用程序,并实现完全高效的服务管理。

Tars 源码托管

3.4、Spring Cloud

国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言。Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。

Spring Cloud 官网

Spring Cloud 中文官网

3.5、gRPC

Google 于 2015 年对外开源的跨语言 RPC 框架,支持多种语言。

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

gRPC 官网

3.6、Thrift

最初是由 Facebook 开发的内部系统跨语言的 RPC 框架,2007 年贡献给了 Apache 基金,成为 Apache 开源项目之一,支持多种语言。

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

thrift 最初由 facebook 开发,07 年四月开放源码,08 年 5 月进入 apache 孵化器,现在是 Apache 基金会的顶级项目。

thrift 允许你定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成 RPC 客户端和服务器通信的无缝跨编程语言。。

著名的 Key-Value 存储服务器 Cassandra 就是使用 Thrift 作为其客户端 API 的。

Thrift 官网

完结!

【微服务】微服务常用组件汇总相关推荐

  1. ReactNative常用组件汇总

    导航组件 react-navigation: https://github.com/react-community/react-navigation 网络请求 asios: https://githu ...

  2. K8S架构常用组件核心资源

    架构 k8s的物理架构师master/node模式.集群至少需要一个master结点和多个工作结点,Master节点是集群的控制节点,负责整个集群的管理和控制,主要用于暴露API.调度部署和对节点进行 ...

  3. java 熔断器模式_微服务架构熔断器机制的概念以及常用组件类型

    熔断器机制是我们在学习微服务编程开发的时候需要重点掌握的一个编程技术知识点,而今天我们就通过案例分析来了解一下,熔断器机制的概念以及常用组件类型都有哪些. 所谓熔断器机制,即类似电流的保险器,当然电压 ...

  4. 微服务高频热点面试题汇总

    1.SpringBoot面试题 1.1.简单聊聊SpringBoot的作用是什么? 知识背景: SpringBoot采用默认配置,帮助我们快速的构建和运行Spring项目: - 简化spring初始搭 ...

  5. 布道微服务_08服务治理的常用手段

    文章目录 概述 常用的服务治理手段 节点管理 1. 注册中心主动摘除机制 2. 服务消费者摘除机制 负载均衡 1. 随机算法 2. 轮询算法 3. 最少活跃调用算法 4. 一致性 Hash 算法 服务 ...

  6. 打死都要记住!微服务架构的常用设计模式!

    作者:duanxz 来源:cnblogs.com/duanxz/p/3514895.html 大家好,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许我休息一下哈).今天跟大家分享微服务架 ...

  7. SpringCloud微服务:基于Nacos组件,整合Dubbo框架

    源码地址:GitHub·点这里 || GitEE·点这里 一.基础组件简介 1.Dubbo框架 Dubbo服务化治理的核心框架,之前几年在国内被广泛使用,后续由于微服务的架构的崛起,更多的公司转向微服 ...

  8. SpringCloud微服务(07):Zipkin组件,实现请求链路追踪

    一.链路追踪简介 1.Sleuth组件简介 Sleuth是SpringCloud微服务系统中的一个组件,实现了链路追踪解决方案.可以定位一个请求到底请求了哪些具体的服务.在复杂的微服务系统中,如果请求 ...

  9. 微服务get请求条用_SpringCloud微服务(07):Zipkin组件,实现请求链路追踪

    一.链路追踪简介 1.Sleuth组件简介 Sleuth是SpringCloud微服务系统中的一个组件,实现了链路追踪解决方案.可以定位一个请求到底请求了哪些具体的服务.在复杂的微服务系统中,如果请求 ...

最新文章

  1. DHCP的安装与分配
  2. Python自动化运维之函数进阶
  3. TCP、UDP绑定同一端口通信的解释
  4. Windows Phone 执行模型概述
  5. scala 方法重载_Scala中的方法重载
  6. 的正确使用_如何正确使用安全带 安全带正确系法
  7. Python使用更相减损术计算两个整数的最大公约数
  8. 【人脸检测】+【五官定位】基于MATLAB的人脸检测系统
  9. 华为拍月亮申请专利;魅族黄章回应李楠离职;GoLand 2019.2 Beta 发布 | 极客头条...
  10. 标记偏置 隐马尔科夫 最大熵马尔科夫 HMM MEMM
  11. Mysql常见的引擎
  12. buctoj2021年ACM竞赛班训练(四)全题解
  13. win的反义词_单词还死记硬背?反义词法让孩子轻松记单词!
  14. WordPress有没有好的主题推荐?27个Ultra WordPress企业主题分享:不再有选择 困难症了
  15. 关联规则:一款在策略挖掘中必不可少的算法
  16. 搞渗透!还不会信息收集的看这里(大佬的秘籍)
  17. 有吧友需要PDF的下载站点,好吧,我这边汇总一下
  18. 比较有意思的.NET反调—《.NET在蹉跎中一路前行》
  19. HTML如何引入md5算法,MD5算法实现
  20. response.getWriter().write()和 response.getWriter().print()的区别 以及 PrintWriter对象 和 out对象 的区别

热门文章

  1. less加管道tail_第二天作业
  2. plink - 关于提取某一个特定的SNP
  3. 新概念二册 Lesson 26 The best art critics最佳艺术评论家 ( 宾语从句+一般现在时现在进行时宾语从句)
  4. android xlintdeprecation 重新编译,天博体育官网-官网首页
  5. dump java 原理_dumpsys实现原理
  6. 精灵宝可梦需考虑季节因素
  7. 书写可静心----《人生》
  8. 基于构件开发的应用框架设计
  9. html中看到php代码_分享查看页面源代码的四种方法
  10. 苹果公司下魔怔的6月,watch OS 和 IPv6的更新说明。