上篇说要介绍APISIX的插件,插件模块化管理,配置可插拔。APISIX目前已发布了 70 多个插件,不一一介绍啦,官网已经说的很清楚。如果现有插件不能满足当前业务需求也可以自行开发插件。为了满足不同需求的自主开发,APISIX 还支持多语言开发插件Java、Go、Python 等多种编程语言(配合Plugin Runner插件运行器)。APISIX 对插件进行了模块化管理,通过插件机制来实现各种流量处理和分发的功能,比如限流限速、日志记录、安全检测、故障注入等,支持用户编写自定义插件来对数据面进行扩充。
APISIX架构图上,分为数据面和控制面,控制面:使用etcd来存储和同步网关的配置数据,管理员可以通过Admin API或者Dashboard可以在毫秒级别内通知到所有的数据面节点。因为APISIX使用了使用etcd作为配置中心,当然也支持Console、Eureka、Nacos等服务作为注册中心。
etcd能干什么?
分布式系统中的数据分为控制数据和应用数据。etcd的使用场景默认处理的数据都是控制数据,对于应用数据,只推荐数据量很小,但是更新访问频繁的情况。常见的etcd使用场景包括: 服务发现、分布式锁、分布式队列、分布式通知和协调、主备选举等
为什么要选择etcd?
网关需要在etcd的加持下,可以实现配置下发实时到达所有的网关节点,而且必须要保证强一致性,保证各网关节点的配置一样,即CP模型。