ในสถาปัตยกรรม API gateway สมัยใหม่ ความสามารถในการจัดระเบียบปลั๊กอินแบบไดนามิกแสดงถึงความก้าวหน้าครั้งสำคัญในการจัดการทราฟฟิกและการประมวลผลคำขอ ระบบการจัดระเบียบปลั๊กอินของ Apache APISIX ใช้แนวทางที่ซับซ้อนในการจัดการสถานการณ์ API ที่ซับซ้อนผ่านรูปแบบการดำเนินการ directed acyclic graph (DAG)
ยังคงมีปัญหาในการเขียนเอกสาร API อยู่ใช่ไหม? ต้องการสร้างเอกสาร API แบบไดนามิกที่เป็นมืออาชีพโดยอัตโนมัติหรือไม่?
ใช้ APIDog เพื่อให้เอกสาร API ของคุณเป็นปัจจุบันอยู่เสมอโดยอัตโนมัติ!
ไม่ต้องกังวลกับการอัปเดตเอกสารของคุณทุกครั้งที่คุณทำการเปลี่ยนแปลงในพารามิเตอร์ API หรืออัปเดตเป็น API เวอร์ชันใหม่ APIDog จะอัปเดตทุกอย่างอยู่เสมอ!
เพิ่มประสิทธิภาพการทดสอบ API ของคุณด้วย APIDog!

ภาพรวมโดยย่อเกี่ยวกับการจัดระเบียบปลั๊กอินของ APISIX
โดยหลักแล้ว การจัดระเบียบปลั๊กอินใน APISIX ช่วยให้เส้นทางการประมวลผลแบบมีเงื่อนไขขึ้นอยู่กับผลลัพธ์การดำเนินการปลั๊กอิน ทำให้สามารถจัดการคำขอแบบไดนามิกได้โดยไม่ต้องใช้โค้ดที่กำหนดเอง ระบบนี้ทำงานผ่านสถาปัตยกรรมแบบกระจายที่รักษาส่วนแยกระหว่างระนาบควบคุมและระนาบข้อมูล ในขณะเดียวกันก็รับประกันประสิทธิภาพสูงผ่านการจัดการสถานะที่เหมาะสมและการประมวลผลในหน่วยความจำ

เครื่องมือการจัดระเบียบประมวลผลปลั๊กอินผ่านระบบการจัดการสถานะที่ซับซ้อน ซึ่งรักษาสภาพแวดล้อมการดำเนินการในขณะที่เปิดใช้งานตรรกะแบบมีเงื่อนไขที่ซับซ้อน ปลั๊กอินแต่ละตัวในสายโซ่สามารถมีอิทธิพลต่อเส้นทางการดำเนินการของปลั๊กอินที่ตามมา ทำให้เกิดโฟลว์การประมวลผลแบบไดนามิกและตอบสนอง แนวทางนี้ช่วยให้สถานการณ์ต่างๆ เช่น:
- โฟลว์การตรวจสอบสิทธิ์แบบมีเงื่อนไขตามแอตทริบิวต์คำขอ
- การจำกัดอัตราแบบไดนามิกตามผลลัพธ์การตรวจสอบสิทธิ์
- การบันทึกตามบริบทตามผลลัพธ์การประมวลผลคำขอ
- การกำหนดเส้นทางการรับส่งข้อมูลแบบปรับเปลี่ยนได้ตามสถานะการดำเนินการปลั๊กอิน
การนำไปใช้งานทางเทคนิคใช้ประโยชน์จากส่วนประกอบสำคัญหลายอย่าง:
- เครื่องมือการดำเนินการ DAG ที่จัดการการพึ่งพาปลั๊กอินและโฟลว์
- ระบบการจัดการสถานะสำหรับการรักษาสภาพแวดล้อมการดำเนินการปลั๊กอิน
- ระบบการประมวลผลในหน่วยความจำที่ปรับให้เหมาะสมสำหรับการทำงานที่มีประสิทธิภาพสูง
- ระบบการกำหนดค่าแบบกระจายโดยใช้ etcd สำหรับการอัปเดตแบบเรียลไทม์
สถาปัตยกรรมนี้ช่วยให้สถานการณ์การจัดการ API ที่ซับซ้อน ในขณะเดียวกันก็รักษาประสิทธิภาพสูงผ่านการเพิ่มประสิทธิภาพการจัดการสถานะและเส้นทางการดำเนินการปลั๊กอินอย่างระมัดระวัง ระบบรองรับการโหลดปลั๊กอินแบบไดนามิก การรวมปลั๊กอินแบบกำหนดเอง และตรรกะแบบมีเงื่อนไขที่ซับซ้อน ทั้งหมดนี้ยังคงรักษาลักษณะประสิทธิภาพที่จำเป็นสำหรับการปรับใช้การผลิต

ในการจัดระเบียบปลั๊กอินของ APISIX "Context" แสดงถึงสถานะที่ใช้ร่วมกันซึ่งคงอยู่ตลอดวงจรการดำเนินการปลั๊กอิน บริบทนี้ทำงานในหลายขั้นตอนการดำเนินการ: rewrite, access, before_proxy, header_filter, body_filter และ log ตัวอย่างเช่น Execution Context จะรักษา:
- ข้อมูลคำขอ: ส่วนหัว HTTP, เนื้อหา และข้อมูลไคลเอนต์
- สถานะปลั๊กอิน: ผลลัพธ์การตรวจสอบสิทธิ์และข้อมูลคำขอ/การตอบสนองที่แก้ไข
- การควบคุมโฟลว์: เส้นทางการดำเนินการปัจจุบันและผลลัพธ์ปลั๊กอิน
ด้วยการใช้สถาปัตยกรรมนี้ APISIX จึงมีระบบที่ยืดหยุ่นแต่ทรงพลังสำหรับการจัดการข้อกำหนดการจัดการ API ที่ซับซ้อนผ่านการกำหนดค่าแทนโค้ด ซึ่งช่วยลดความซับซ้อนในการดำเนินงานได้อย่างมากในขณะที่ยังคงรักษาความน่าเชื่อถือและประสิทธิภาพของระบบ
การตั้งค่าโครงสร้างพื้นฐาน สิ่งแรกที่ต้องทำ
พื้นฐานของการปรับใช้ APISIX ที่ปลอดภัยเริ่มต้นด้วยการแยกและการกำหนดค่าเครือข่ายที่เหมาะสม ก่อนอื่น ให้สร้างเครือข่ายเฉพาะที่มีการกำหนดค่าซับเน็ตเฉพาะ:
docker network create \
--driver=bridge \
--subnet=172.18.0.0/16 \
--ip-range=172.18.5.0/24 \
--gateway=172.18.5.254 \
apisix
การกำหนดค่าเครือข่ายนี้ช่วยให้มั่นใจได้ถึงการแยกและการสื่อสารที่เหมาะสมระหว่างส่วนประกอบ APISIX
ปรับใช้ส่วนประกอบหลัก
การกำหนดค่า ETCD
ETCD ทำหน้าที่เป็นศูนย์กลางการกำหนดค่า ปรับใช้ด้วยการตั้งค่าความปลอดภัยที่เหมาะสม:
docker run -it --name etcd-server \
-v $(pwd)/example/etcd_conf/etcd.conf.yml:/opt/bitnami/etcd/conf/etcd.conf.yml \
-p 2379:2379 \
-p 2380:2380 \
--network apisix \
--ip 172.18.5.10 \
--env ALLOW_NONE_AUTHENTICATION=yes bitnami/etcd:3.4.9
การกำหนดค่านี้ช่วยให้มั่นใจได้ถึงความคงอยู่ของข้อมูลและการเข้าถึงเครือข่ายที่เหมาะสม
การติดตั้ง APISIX Core
ปรับใช้ APISIX ด้วยการบันทึกและการกำหนดค่าที่ครอบคลุม:
docker run --name test-api-gateway \
-v $(pwd)/example/apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml \
-v $(pwd)/example/apisix_log:/usr/local/apisix/logs \
-p 9080:9080 \
-p 9091:9091 \
-p 9443:9443 \
--network apisix \
--ip 172.18.5.11 \
-d apache/apisix
การตั้งค่านี้รวมถึงการติดตั้งโวลุ่มสำหรับการกำหนดค่าและบันทึก
ใช้ความปลอดภัย
เลเยอร์การตรวจสอบสิทธิ์
APISIX มีการตรวจสอบสิทธิ์ตามคีย์ที่แข็งแกร่ง นี่คือการใช้งานที่สมบูรณ์:
# สร้างผู้บริโภคพร้อมการตรวจสอบสิทธิ์
curl http://127.0.0.1:9180/apisix/admin/consumers -H "X-API-KEY: $admin_key" -X PUT -d '
{
"username": "jack",
"plugins": {
"key-auth": {
"key": "auth-one"
}
}
}'
# กำหนดเส้นทางด้วยการตรวจสอบสิทธิ์
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H "X-API-KEY: $admin_key" -X PUT -d '
{
"methods": ["GET"],
"uri": "/index.html",
"plugins": {
"key-auth": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
การกำหนดค่านี้สร้างเลเยอร์การตรวจสอบสิทธิ์ที่ปลอดภัยซึ่งต้องใช้คีย์ API สำหรับการเข้าถึง
การใช้งานการจำกัดอัตรา
ปกป้อง API ของคุณจากการละเมิดด้วยการจำกัดอัตราที่ซับซ้อน:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H "X-API-KEY: $admin_key" -X PUT -d '
{
"uri": "/index.html",
"plugins": {
"limit-count": {
"count": 2,
"time_window": 60,
"rejected_code": 503,
"key": "remote_addr",
"policy": "redis",
"redis_host": "127.0.0.1",
"redis_port": 6379,
"redis_password": "password",
"redis_database": 1,
"redis_timeout": 1001
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
การกำหนดค่านี้ใช้การจำกัดอัตราแบบกระจายตาม Redis
กลยุทธ์การจำกัดอัตราขั้นสูง
สำหรับการจำกัดอัตราในระดับคลัสเตอร์ด้วยความแตกต่างของผู้บริโภค:
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
"uri": "/index.html",
"plugins": {
"limit-count": {
"count": 2,
"time_window": 60,
"rejected_code": 503,
"key_type": "var_combination",
"key": "$consumer_name $remote_addr"
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:9001": 1
}
}
}'
การกำหนดค่านี้ช่วยให้สามารถจำกัดอัตราที่ซับซ้อนตามทั้งข้อมูลประจำตัวของผู้บริโภคและที่อยู่ IP
การตรวจสอบสุขภาพและเมตริก
การรวม Prometheus
เปิดใช้งานการรวบรวมเมตริกที่ครอบคลุม:
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
"uri": "/metrics",
"plugins": {
"prometheus": {
"prefer_name": true,
"metrics": {
"http_status": true,
"latency": true,
"bandwidth": true
}
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"prometheus:9090": 1
}
}
}'
การกำหนดค่านี้เปิดใช้งานการรวบรวมเมตริกโดยละเอียดสำหรับการตรวจสอบและการวิเคราะห์
การจัดการระบบ
การเริ่มต้นบริการ
หลังจากการติดตั้ง ให้เริ่มต้นระบบด้วยการกำหนดค่าที่เหมาะสม:
# เริ่มต้นการกำหนดค่า
sudo apisix init
# เริ่มบริการ
sudo apisix start
# สำหรับระบบที่ใช้ systemd
systemctl start apisix
คำสั่งเหล่านี้ช่วยให้มั่นใจได้ถึงการเริ่มต้นระบบและการจัดการบริการที่เหมาะสม
การอัปเดตการกำหนดค่า
อัปเดตคีย์ API ของผู้ดูแลระบบเพื่อความปลอดภัยที่ดียิ่งขึ้น:
deployment:
admin:
admin_key:
- name: "admin"
key: newsupersecurekey
role: admin
การกำหนดค่านี้ช่วยเพิ่มความปลอดภัยของ API ของผู้ดูแลระบบ
บทสรุป
การนำการกำหนดค่าเหล่านี้ไปใช้อย่างครอบคลุมสร้างโครงสร้างพื้นฐาน API gateway ที่แข็งแกร่ง ปลอดภัย และปรับขนาดได้ การรวมกันของการตรวจสอบสิทธิ์ การจำกัดอัตรา และการตรวจสอบทำให้มั่นใจได้ทั้งความปลอดภัยและความน่าเชื่อถือ การบำรุงรักษาเป็นประจำ รวมถึงการอัปเดตคีย์ผู้ดูแลระบบและการตรวจสอบเมตริกระบบ เป็นสิ่งสำคัญในการรักษาความสมบูรณ์ของการปรับใช้
โปรดจำไว้ว่าให้ปรับการกำหนดค่าเหล่านี้ตามข้อกำหนดเฉพาะและความต้องการด้านความปลอดภัยของคุณ ธรรมชาติแบบโมดูลาร์ของ APISIX ช่วยให้ขยายและปรับแต่งได้ง่ายผ่านระบบปลั๊กอิน ทำให้เหมาะสำหรับสถานการณ์การจัดการ API ทั้งแบบง่ายและซับซ้อน



