API网关的主要场景介绍
网关作为现代应用架构中的关键组件,承担着多种重要职责。
1)协议转换:当企业内部使用了多种不同的服务通信协议时,网关能够将这些不同协议统一转换为标准格式,如将HTTP请求转换为dubbo或grpc调用,确保了后端微服务间的高效沟通。
2)安全隔离:是网关不可或缺的功能之一。场景也很简单,内部服务对外暴露接口,总归不能随便让外部的请求随便访问内部的API。那么通过设置访问控制列表、执行身份验证和授权检查等措施,它有效地防止了未授权的外部请求直接接触到敏感数据或系统资源,保护了企业信息资产的安全。
3)流量控制:面对突发高并发场景下,比如电商大促期间,阿里云提供的开源解决方案可以智能地分配流入系统的请求量,避免单个服务因过载而崩溃,同时保证用户体验流畅无阻。
Higress:阿里开源的多功能API网关
Higress 是一款源自阿里巴巴多年实战经验的开源 微服务 API 网关,完全免费并开源。
它结合了流量网关、微服务网关和安全网关的功能,提供了一种高度集成且易于管理的解决方案。
Higress 支持多种协议和服务发现机制,可以只通过配置快速接入spring cloud alibaba的所有其他组件 ,如 Dubbo 和 Nacos,能够帮助用户简化复杂的网络架构,并提升系统的安全性与稳定性。
作为阿里云 MSE 云原生网关的开源版本,Higress 在性能、易用性及扩展性方面都得到了充分验证,值得信赖。
Higress网关关键特性详解
Higress网关集成了流量网关、微服务网关和安全网关的功能,能够通过简单的配置实现复杂的服务管理需求,而无需额外的开发工作。
其核心能力包括:
协议转换,支持HTTP转Dubbo等多种协议,简化了传统微服务暴露为外部可访问形式的过程;
安全隔离与防护:内置WAF模块可以有效防御异常流量攻击,确保应用的安全性;
流量控制:则提供了限流降级等机制,以应对突发流量冲击。
这些功能都可以只通过配置就可以实现。
同时,Higress已经经过阿里巴巴内部多个高流量场景如双11购物节的实际验证,证明了其在大规模分布式系统中的稳定性和高效性。
Higress基于Docker的单机版快速部署及HelloWorld示例
前置条件
确保您的计算机上已安装了Docker。如果尚未安装,请访问Docker官方指南进行安装。
部署Higress
- 创建一个工作目录:首先,您需要在本地创建一个用于存放Higress相关配置文件的工作目录。
mkdir higress
- 启动Higress容器:使用
docker run
命令启动Higress容器,并将上述创建的工作目录挂载到容器内的指定路径。这一步骤同时映射了几个关键端口以供后续操作。
docker run -d --rm --name higress-ai -v ./higress:/data \
-p 8001:8001 -p 8080:8080 -p 8443:8443 \
higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest
这里映射的端口分别是:
-
8001
端口:Higress UI 控制台入口
-
8080
端口:网关 HTTP 协议入口
-
8443
端口:网关 HTTPS 协议入口
登录并配置Higress控制台
- 打开浏览器访问控制台:在浏览器中输入
http://127.0.0.1:8001
进入Higress控制台界面。
- 初始化管理员账号:首次访问时,系统会要求你设置初始管理员账户。请按照页面提示完成初始化过程。
- 登录控制台:初始化完成后,使用刚刚设定的用户名和密码登录Higress控制台。
- 添加服务来源:点击左侧菜单栏中的“服务来源”,接着点击右上角的“创建服务来源”按钮。这里我们为示例服务定义一个DNS域名服务源:
-
- 服务类型:选择“DNS域名”
-
- 服务名称:填入任意你喜欢的名字,比如
hello-service
- 服务名称:填入任意你喜欢的名字,比如
-
- 服务端口:保持默认80即可
-
- 域名列表:填写
httpbin.org
(这是一个公开可用的服务,用于测试目的)
- 域名列表:填写
- 配置路由:再次转到左侧菜单栏,这次选择“路由配置”。点击“创建路由”来定义一条新的路由规则:
-
- 路由名称:如
hello-route
- 路由名称:如
-
- 匹配规则:选择“精确匹配”,并在路径字段输入
/get
- 匹配规则:选择“精确匹配”,并在路径字段输入
-
- 目标服务:从下拉列表中选择之前创建的服务名称
hello-service.dns
- 目标服务:从下拉列表中选择之前创建的服务名称
测试Higress是否正常工作
- 验证路由有效性:打开一个新的浏览器标签页或者终端窗口,执行以下curl命令以检查配置是否生效。
curl http://localhost:8080/get -H 'host: httpbin.org'
如果一切正常,你应该能看到JSON格式的响应数据,表示请求已经被成功代理至httpbin.org
。
通过以上步骤,你已经完成了Higress基于Docker的单机版本部署,并且配置了一个简单的Hello World服务来进行验证。值得注意的是,Higress也支持使用K8s等方式来做部署和集成,具体可以去Higress官网查询更多相关信息。