最近在做微服务调研,看到了apisix这个网关,于是进行了初步了解一下。
微服务是指,将大型应用分解成多个独立的组件,其中每个组件都各自的负责对应项目。
系统的架构大致经历了:单体应用架构--> SOA架构 -->微服务架构的演变。随着业务发展,API的数量也在剧增,使用网关对API统一管理也将面临挑战,选择一个更强大的API网关,可以有效的增强系统的监控、容灾、鉴权和限流等能力。
API网关是什么?
为客户端与服务系统之间的交互提供统一的接口,也是管理请求和响应的中心点,选择一个合适的API网关,可以有效地简化开发并提高系统的运维与管理效率。API网关作为一个系统访问的切面,对外提供统一的入口访问,隐藏系统架构实现的细节,让微服务使用更为友好;并集成了通用特性,鉴权,限流,熔断,避免每个微服务单独开发,提升效率,使系统更加标准化,单独注重业务。
进入正文,今天主要了解APISIX网关。
APISIX是一个动态、实时、高性能的云原生API网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。可以使用 Apache APISIX 处理传统的南北向流量,也可以处理服务间的东西向流量。
架构主要分为两部分:
第一部分叫做数据面,它是真正去处理客户端请求的组件,去处理用户的真实流量,包括像身份验证、证书卸载、日志分析和可观测性等功能。 不会存储数据。
第二部分是控制面,使用的etcd存储,数据面监听etcd变化即可。
APISIX的主要概念和组件
Route【路由】 : 通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给指定的上游服务。
Upstream【上游】:按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。
入门安装
1.先安装apisix
2.再安装apisix dashboard
在这里进行路由和上游的配置即可进行简单的网关。
方式一,直接进行路由配置:
配置名称和路径
然后配置服务
进行提交,即可完成一个完整的服务路由转发。
我们通过postman进行测试
方式二,也可以先配置好上游
配置好后,在路由的时候选择服务即可。两者功能一致。
https://httpbin.org/#/Anything/get_anything,是apisix官方提供的测试服务,用于测试我们是否配置路由成功。
还可以进行服务注册,在选服务的时候,选择服务类型,就可以勾选nacos,eureka等。便于大型公司技术栈没有统一的使用场景
使用nacos的话,需要在apisix的配置文件 conf/config.yaml中添加nacos配置
discovery:
nacos:
host:
‐ "http:// u s e r n a m e : {username}: username:{password}@ h o s t 1 : {host1}: host1:{port1}"
以上就是简单的入门apisix功能。
后续的一些插件功能,比如限流,黑白名单之类都是插件实现。