MSE-Higress应用场景测评报告

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 个人测评

一、背景介绍

随着微服务架构的广泛应用,API网关在微服务场景下发挥着重要作用。MSE-Higress作为阿里云推出的开源微服务网关,提供了服务发现、流量控制、安全防护等功能,可以有效简化网关管理,提高系统性能。

二、产品定位

MSE-Higress定位为云原生微服务网关,采用开源模式,面向Kubernetes环境,与服务网格等云原生技术栈深度融合,降低微服务治理的学习和使用成本。

三、产品功能

MSE-Higress作为新一代微服务网关,主要具备以下功能:

1. 流量调度:支撑多种负载均衡算法,提供精细化的流量调度功能。

2. 服务治理:通过插件实现访问控制、限流熔断、灰度发布等服务治理能力。

3. 安全防护:提供WAF、黑白名单等安全防护能力。

4. 可观察性:支持OpenTracing、Prometheus,实现服务调用链追踪和metrics监控。

5. 扩展性:插件市场帮助快速扩展网关功能,满足业务需求。

四、使用场景

MSE-Higress适用于以下使用场景:

1. 替换传统硬件/软件网关,实现向云原生网关的平滑迁移。

2. Kubernetes上的微服务治理,提供核心的服务注册发现、流量管控、安全防护等功能。

3. 与服务网格结合,在边缘提供入口流量管理和安全控制。

4. 中后台系统的API管理,实现细粒度的访问控制和流量调度。

五、基于MSE实现K8s集群内多服务的灰度发布实操

在容器服务中安装MSE Ingress Controller组件来管理云原生网关,并通过MSEIngress来暴露集群中的容器服务安装Controller。

1.复制以下链接打开浏览器新页面在应用市场开始安装操作。

https://cs.console.aliyun.com/?#/next/app-catalog/ack/incubator/ack-mse-ingress-controller

2.在打开的介绍页面,点击一键部署

3.在创建面板中选择集群(名称随机生成)命名空间,设置组件发布名称,然后单击下一步

4.在参数配置向导中确认组件参数信息,并且确保授权模式为ramrole。然后单击确定

5.安装完成后,切回到ACK集群详情的无状态页面,将目标集群的命名空间切换到mse-ingress-controller,如果出现ack-mse-ingress-controller应用(命名空间出现可能有延迟,稍等一会尝试刷新),表示安装成功。

至此我们完成了MSE Ingress Controller组件的安装工作。

通过Yaml配置创建MSE云原生网关

1.复制以下配置文,用于部署名称为test的Deployment。

apiVersion:mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
  name: test
spec:
  name: mse-ingress
  common:
     pay:
        payType: POSTPAY
     instance:
        spec: 2c4g
        replicas: 1
     network:
        publicSLBSpec: slb.s1.small
     securityGroupType: normal
  global:
    deleteSLB: true

2.切换到工作负载-自定义资源页面点击使用YAML创建资源,在打开的页面粘贴上面复制的内容,点击创建

3.创建完成后,按下图切换到资源对象浏览器,API组中找到mse.alibabacloud.com下的MseIngressConfig资源,左侧列表操作栏点击YAML编辑确认当状态显示为Listening时表示云原生网关创建成功并且处于运行状态。并自动监听集群中IngressClass为mse的Ingress资源。

4.页面切到网络-路由页面,创建并应用以下Ingress资源:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: ingress
 namespace: default
spec:
  ingressClassName:mse
 rules:
 - http:
     paths:
     - backend:
         service:
            name: go-httpbin-v1
            port:
              number: 80
       path: /version
       pathType: Prefix

5.查看目标Ingress的IP地址

6.复制上述端点信息再拼接“/version”进行访问测试。

完成了Ingress资源的配置,并成功验证从公网访问到go-httpbin-v1服务响应返回如上图展示。

7.修改Ingress配置生效灰度

基于客户端请求的流量切分场景假设当前线上环境,您已经有一套服务go-httpbin-v1对外提供7层服务,此时上线了一些新的特性,需要发布上线一个新的版本go-httpbin-v2。但又不想直接替换go-httpbin-v1服务,而是希望将请求头中包含version=v2的客户端请求转发到go-httpbin-v2服务中。

8.页面切到网络-路由页面,再新增一个canary-v2的路由资源。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: canary-v2
  namespace:default
 annotations:
   nginx.ingress.kubernetes.io/canary: 'true'
   nginx.ingress.kubernetes.io/canary-by-header: version
   nginx.ingress.kubernetes.io/canary-by-header-value: 'v2'
spec:
 ingressClassName: mse
 rules:
 - http:
     paths:
     - backend:
         service:
            name: go-httpbin-v2
            port:
              number: 80
       path: /version
       pathType: ImplementationSpecific

9.使用本地电脑打开终端程序(linux/macOS打开终端,windows打开安装有curl命令的CMD或者本地安装有支持header设置的HTTP请求工具,如PostMan)执行以下命令,请求头中满足version=v2的客户端请求访问服务。

10.通过终端测试

curl -H "version: v2"'http://120.55.xx.xx/version'

预期请求头满足version=v2的请求如下返回:

预期没有特殊请求头的请求如下正常返回:

11.通过PostMan测试,请求头带有headerversion=v2 将访问灰度服务go-httpbin-v2。

预期没有特殊请求头的请求将会访问正式服务go-httpbin-v1

至此基于MSE云原生网关在ACK上的Ingress场景灰度就全部实操完毕了。

六、使用评估

1. 部署安装:提供Helm Chart包,可以在Kubernetes集群中一键安装。

2. 使用难易程度:配置简单,采用Kubernetes Ingress API,降低学习成本。

3. 功能完整性:基础功能齐全,支持多种负载均衡算法和丰富的访问控制方式。

4. 扩展能力:插件市场提供认证、限流、Tracing等扩展能力。

5. 性能表现:支持热更新,资源消耗较低。

七、总结评价

1.MSE-Higress作为云原生微服务网关,兼顾了易用性、扩展性和性能,可以有效落地微服务架构中的API管理需求,助力构建高性能和可靠的微服务系统,是云原生架构不可或缺的重要组件之一。

2.竞品比较相比Nginx,Envoy等网关,MSE-Higress具备更丰富的流量管理功能,并基于SIG Ingress标准,支持Kubernetes原生API,降低使用门槛。

3.市场口碑MSE-Higress作为阿里云自研的网关,处于 similar projects的领先地位。开源社区活跃,认可度较高。

4.综合MSE-Higress的产品设计、功能实现、社区口碑等方面,作为云原生微服务网关,其兼顾了易用性、扩展性、安全性和高性能。已经成为云原生架构中不可或缺的API管理组件,值得业界 USER 重点关注和使用。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
10月前
|
Cloud Native 安全 Java
云原生网关MSE-Higress测评报告
MSE-Higress是遵循开源Ingress/Gateway API标准的下一代网关产品,将传统的流量网关、微服务网关、安全网关合三为一,具有高集成、易使用、易扩展、热更新的特点。本报告将从流量调度、服务治理、插件市场等方面对MSE-Higress进行详细测评,并对比其他网关如Nginx、APISIX、Spring Cloud Gateway等,分析其在功能、性能、架构、可扩展性、运维、价格等方面的优势和不足。
485 0
|
10月前
|
监控 安全 Nacos
MSE-Nacos测评报告
个人测评
155 0
|
22天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
411 2
|
22天前
|
监控 Dubbo 前端开发
快速入门分布式系统与Dubbo+zookeeper Demo
快速入门分布式系统与Dubbo+zookeeper Demo
412 0
|
22天前
|
消息中间件 Java 网络安全
JAVAEE分布式技术之Zookeeper的第一次课
JAVAEE分布式技术之Zookeeper的第一次课
519 0
|
22天前
|
监控 NoSQL Java
Zookeeper分布式锁
Zookeeper分布式锁
506 1
|
22天前
|
监控 Dubbo Java
深入理解Zookeeper系列-2.Zookeeper基本使用和分布式锁原理
深入理解Zookeeper系列-2.Zookeeper基本使用和分布式锁原理
69 0
|
22天前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
97 2
|
22天前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
82 0
|
19天前
|
前端开发 JavaScript 算法
分布式系统的一致性级别划分及Zookeeper一致性级别分析
分布式系统的一致性级别划分及Zookeeper一致性级别分析