ใช้ปลั๊กอิน

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

Edge Microgateway v. 3.3.x

กลุ่มเป้าหมาย

หัวข้อนี้มีไว้สำหรับผู้ปฏิบัติงาน Edge Microgateway ที่ต้องการใช้ปลั๊กอินที่มีอยู่ซึ่ง ติดตั้งพร้อมกับ Microgateway นอกจากนี้ยังอธิบายรายละเอียดเกี่ยวกับปลั๊กอินการป้องกันการเพิ่มขึ้นของทราฟิกและโควต้า (ทั้ง 2 อย่างรวมอยู่ในการติดตั้ง) หากคุณเป็นนักพัฒนาแอปที่ต้องการพัฒนาปลั๊กอินใหม่ โปรดดูพัฒนา ปลั๊กอินที่กำหนดเอง

ปลั๊กอิน Edge Microgateway คืออะไร

ปลั๊กอินคือโมดูล Node.js ที่เพิ่มฟังก์ชันการทำงานให้กับ Edge Microgateway โมดูลปลั๊กอิน มีรูปแบบที่สอดคล้องกันและจัดเก็บไว้ในตำแหน่งที่ Edge Microgateway รู้จัก ทำให้ microgateway ค้นหาและโหลดโมดูลเหล่านั้นได้โดยอัตโนมัติ Edge Microgateway มีปลั๊กอินที่มีอยู่หลายรายการ และคุณยังสร้างปลั๊กอินที่กำหนดเองได้ด้วย ดังที่อธิบายไว้ในพัฒนาปลั๊กอินที่กำหนดเอง

ปลั๊กอินที่มีอยู่ซึ่งมาพร้อมกับ Edge Microgateway

Edge Microgateway มีปลั๊กอินหลายตัวให้ใช้งานเมื่อติดตั้ง ตารางต่อไปนี้อธิบายปลั๊กอินที่ใช้กันโดยทั่วไป

ปลั๊กอิน เปิดใช้โดยค่าเริ่มต้นแล้ว คำอธิบาย
Analytics ใช่ ส่งข้อมูลวิเคราะห์จาก Edge Microgateway ไปยัง Apigee Edge
oauth ใช่ เพิ่มการตรวจสอบโทเค็น OAuth และคีย์ API ลงใน Edge Microgateway ดูการตั้งค่า และการกำหนดค่า Edge Microgateway
โควต้า ไม่ บังคับใช้โควต้าในคำขอไปยัง Edge Microgateway ใช้ Apigee Edge เพื่อจัดเก็บและจัดการ โควต้า ดูหัวข้อการใช้ปลั๊กอินโควต้า
spikearrest ไม่ ป้องกันการรับส่งข้อมูลที่เพิ่มขึ้นอย่างรวดเร็วและการโจมตีแบบ DoS โปรดดูหัวข้อการใช้ปลั๊กอินการป้องกันช่วงที่เพิ่มขึ้น
header-uppercase ไม่ พร็อกซีตัวอย่างที่มีคำอธิบายมีจุดประสงค์เพื่อเป็นคำแนะนำในการช่วยให้นักพัฒนาแอปเขียนปลั๊กอินที่กำหนดเอง ดู ปลั๊กอินตัวอย่างของ Edge Microgateway
accumulate-request ไม่ รวบรวมข้อมูลคำขอเป็นออบเจ็กต์เดียว ก่อนส่งข้อมูลไปยังตัวแฮนเดิลถัดไป ในเชนของปลั๊กอิน มีประโยชน์สำหรับการเขียนปลั๊กอินการแปลงที่ต้องดำเนินการกับออบเจ็กต์เนื้อหาคำขอที่สะสมรายการเดียว
accumulate-response ไม่ สะสมข้อมูลการตอบกลับเป็นออบเจ็กต์เดียวก่อนส่งข้อมูลไปยังแฮนเดิลเลอร์ถัดไป ในเชนของปลั๊กอิน มีประโยชน์สำหรับการเขียนปลั๊กอินการแปลงที่ต้องดำเนินการกับออบเจ็กต์เนื้อหาการตอบกลับแบบสะสมรายการเดียว
transform-uppercase ไม่ แปลงข้อมูลคำขอหรือการตอบกลับ ปลั๊กอินนี้แสดงถึงแนวทางปฏิบัติแนะนำ ในการติดตั้งใช้งานปลั๊กอินการแปลง ปลั๊กอินตัวอย่างจะทำการแปลงที่เรียบง่าย (แปลงข้อมูลคำขอหรือการตอบกลับเป็นตัวพิมพ์ใหญ่) แต่สามารถปรับเปลี่ยนให้ ทำการแปลงประเภทอื่นๆ ได้อย่างง่ายดาย เช่น XML เป็น JSON
json2xml ไม่ แปลงข้อมูลคำขอหรือการตอบกลับตามส่วนหัว Accept หรือ Content-Type โปรดดูรายละเอียดในเอกสารประกอบของปลั๊กอินใน GitHub
quota-memory ไม่ บังคับใช้โควต้าในคำขอไปยัง Edge Microgateway จัดเก็บและจัดการโควต้าในหน่วยความจำภายใน
healthcheck ไม่ แสดงข้อมูลเกี่ยวกับกระบวนการ Edge Microgateway เช่น การใช้งานหน่วยความจำ การใช้ CPU เป็นต้น หากต้องการใช้ปลั๊กอิน ให้เรียกใช้ URL /healthcheck ในอินสแตนซ์ Edge Microgateway ปลั๊กอินนี้มีไว้เพื่อเป็นตัวอย่างที่คุณใช้ ติดตั้งใช้งานปลั๊กอินการตรวจสอบสถานะของคุณเองได้

ตำแหน่งค้นหาปลั๊กอินที่มีอยู่

ปลั๊กอินที่มีอยู่ซึ่งรวมอยู่ใน Edge Microgateway จะอยู่ที่นี่ โดย [prefix] คือไดเรกทอรีคำนำหน้า npm ดู ตำแหน่งที่ติดตั้ง Edge Microgateway หากคุณหาไดเรกทอรีนี้ไม่พบ

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

การเพิ่มและกำหนดค่าปลั๊กอิน

ทำตามรูปแบบนี้เพื่อเพิ่มและกำหนดค่าปลั๊กอิน

  1. หยุด Edge Microgateway
  2. เปิดไฟล์การกำหนดค่า Edge Microgateway โปรดดูรายละเอียดที่หัวข้อ ทำการเปลี่ยนแปลงการกำหนดค่าสำหรับตัวเลือก
  3. เพิ่มปลั๊กอินไปยังองค์ประกอบ plugins:sequence ของไฟล์การกำหนดค่า ดังนี้ ระบบจะเรียกใช้ปลั๊กอินตามลำดับที่ปรากฏในรายการนี้
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. กำหนดค่าปลั๊กอิน ปลั๊กอินบางตัวมีพารามิเตอร์ที่ไม่บังคับซึ่งคุณกำหนดค่าได้ใน ไฟล์กำหนดค่า เช่น คุณสามารถเพิ่มกลุ่มคำสั่งต่อไปนี้เพื่อกำหนดค่าปลั๊กอินการป้องกันการเพิ่มขึ้นของทราฟิก ดูข้อมูลเพิ่มเติมได้ที่การใช้ปลั๊กอินการป้องกันช่วงที่เพิ่มขึ้น
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
  1. บันทึกไฟล์
  2. รีสตาร์ทหรือโหลด Edge Microgateway ซ้ำ โดยขึ้นอยู่กับไฟล์การกำหนดค่าที่คุณแก้ไข

การกำหนดค่าเฉพาะปลั๊กอิน

คุณลบล้างพารามิเตอร์ปลั๊กอินที่ระบุไว้ในไฟล์กำหนดค่าได้โดยสร้างการกำหนดค่าเฉพาะปลั๊กอินในไดเรกทอรีนี้

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

โดยที่ [prefix] คือไดเรกทอรีคำนำหน้า npm ดู ตำแหน่งที่ติดตั้ง Edge Microgateway หากคุณหาไดเรกทอรีนี้ไม่พบ

plugins/<plugin_name>/config/default.yaml เช่น คุณอาจใส่บล็อกนี้ ใน plugins/spikearrest/config/default.yaml และบล็อกนี้จะลบล้างการตั้งค่า อื่นๆ ทั้งหมด

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

การใช้ปลั๊กอินป้องกันการเพิ่มขึ้นของปริมาณการเข้าชม

ปลั๊กอินการป้องกันการเพิ่มขึ้นของทราฟิกจะป้องกันการเพิ่มขึ้นของทราฟิก จำกัดจำนวนคำขอ ที่อินสแตนซ์ Edge Microgateway ประมวลผล

การเพิ่มปลั๊กอินป้องกันไฟกระชาก

ดูหัวข้อการเพิ่มและกำหนดค่าปลั๊กอิน

ตัวอย่างการกำหนดค่าสำหรับ การป้องกันการเพิ่มขึ้นของปริมาณการเข้าชม

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

ตัวเลือกการกำหนดค่าสำหรับ การป้องกันช่วงที่เพิ่มขึ้น

  • timeUnit: ความถี่ที่หน้าต่างการดำเนินการป้องกันการเพิ่มขึ้นของทราฟิกจะรีเซ็ต ค่าที่ใช้ได้คือ วินาทีหรือนาที
  • allow: จำนวนคำขอสูงสุดที่อนุญาตในช่วง timeUnit ดูหากคุณเรียกใช้กระบวนการ Edge Micro หลายรายการด้วย
  • bufferSize: (ไม่บังคับ ค่าเริ่มต้น = 0) หาก bufferSize > 0 การควบคุมอัตราการรับส่ง จะจัดเก็บคำขอจำนวนนี้ไว้ในบัฟเฟอร์ ทันทีที่ "ช่วงเวลา" การดำเนินการถัดไปเกิดขึ้น ระบบจะประมวลผลคำขอที่บัฟเฟอร์ไว้ก่อน ดูเพิ่มเติมที่การเพิ่ม บัฟเฟอร์

Spike Arrest ทำงานอย่างไร

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

ลักษณะการทำงานของการป้องกันการเพิ่มขึ้นของรันไทม์จะแตกต่างจากสิ่งที่คุณอาจคาดหวังที่จะเห็นจากค่าต่อนาทีหรือต่อวินาทีที่คุณป้อน

เช่น หากคุณระบุอัตราคำขอ 30 รายการต่อนาที ดังนี้

spikearrest:
   timeUnit: minute
   allow: 30

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

แล้วจะเกิดอะไรขึ้น การป้องกันการเพิ่มขึ้นอย่างรวดเร็วจะช่วยลดการเพิ่มขึ้นของการรับส่งข้อมูลที่อนุญาตโดยการแบ่งการตั้งค่าออกเป็นช่วงเวลาที่สั้นลง ดังนี้

ราคาต่อนาที

ระบบจะปรับอัตราต่อนาทีให้เป็นช่วงเวลาที่อนุญาตเป็นวินาที ตัวอย่างเช่น คำขอ 30 รายการต่อนาทีจะได้รับการปรับให้ราบรื่นดังนี้

60 วินาที (1 นาที) / 30 = ช่วงเวลา 2 วินาที หรืออนุญาตคำขอประมาณ 1 รายการทุกๆ 2 วินาที คำขอที่ 2 ภายใน 2 วินาทีจะล้มเหลว นอกจากนี้ คำขอที่ 31 ภายใน 1 นาทีจะล้มเหลว

ราคาต่อวินาที

ระบบจะปรับอัตราต่อวินาทีให้เป็นคำขอที่อนุญาตในช่วงเวลาเป็นมิลลิวินาที เช่น คำขอ 10 รายการ/วินาทีจะได้รับการปรับให้ราบรื่นดังนี้

1, 000 มิลลิวินาที (1 วินาที) / 10 = ช่วงเวลา 100 มิลลิวินาที หรืออนุญาตคำขอประมาณ 1 รายการ ทุกๆ 100 มิลลิวินาที คำขอที่ 2 ภายใน 100 มิลลิวินาทีจะล้มเหลว นอกจากนี้ คำขอที่ 11 ภายใน 1 วินาทีจะดำเนินการไม่สำเร็จ

เมื่อเกินขีดจำกัด

หากจำนวนคำขอเกินขีดจำกัดภายในช่วงเวลาที่ระบุ การป้องกันการเพิ่มขึ้นของทราฟิก จะแสดงข้อความแสดงข้อผิดพลาดนี้พร้อมสถานะ HTTP 503

{"error": "spike arrest policy violated"}

การเพิ่มช่วงเผื่อเวลา

คุณมีตัวเลือกในการเพิ่มบัฟเฟอร์ลงในนโยบาย สมมติว่าคุณตั้งค่าบัฟเฟอร์เป็น 10 คุณจะเห็นว่า API ไม่แสดงข้อผิดพลาดทันทีเมื่อคุณเกินขีดจํากัดการควบคุมการเพิ่มขึ้นของทราฟิก แต่ระบบจะบัฟเฟอร์คำขอ (สูงสุดตามจำนวนที่ระบุ) และประมวลผลคำขอที่บัฟเฟอร์ทันทีที่ช่วงเวลาดำเนินการที่เหมาะสมถัดไปพร้อมใช้งาน ค่าเริ่มต้นของ bufferSize คือ 0

หากคุณเรียกใช้กระบวนการ Edge Micro หลายรายการ

จำนวนคำขอที่อนุญาตจะขึ้นอยู่กับจำนวนกระบวนการของ Edge Micro Worker ที่ กำลังทำงานอยู่ การควบคุมอัตราคำขอจะคำนวณจำนวนคำขอที่อนุญาตต่อกระบวนการ Worker โดยค่าเริ่มต้น จำนวนกระบวนการ Edge Micro จะเท่ากับจำนวน CPU ในเครื่องที่ติดตั้ง Edge Micro ไว้ อย่างไรก็ตาม คุณสามารถกำหนดค่าจำนวนกระบวนการของ Worker เมื่อเริ่ม Edge Micro โดยใช้ตัวเลือก --processes ในคำสั่ง start ตัวอย่างเช่น หากคุณต้องการให้การป้องกันการเพิ่มขึ้นของจำนวนคำขอทริกเกอร์ที่คำขอ 100 รายการในช่วงเวลาที่กำหนด และหากคุณเริ่ม Edge Microgateway ด้วยตัวเลือก --processes 4 ให้ตั้งค่า allow: 25 ในการกำหนดค่าการป้องกันการเพิ่มขึ้นของจำนวนคำขอ โดยสรุปแล้ว หลักการทั่วไปคือการตั้งค่าพารามิเตอร์ allow config เป็นค่า "จำนวนการป้องกันการเพิ่มขึ้นที่ต้องการ / จำนวนกระบวนการ"

การใช้ปลั๊กอินโควต้า

โควต้าจะระบุจำนวนข้อความคำขอที่แอปได้รับอนุญาตให้ส่งไปยัง API ในช่วงเวลา 1 ชั่วโมง 1 วัน 1 สัปดาห์ หรือ 1 เดือน เมื่อแอปใช้โควต้าถึงขีดจำกัด ระบบจะปฏิเสธการเรียก API ครั้งต่อๆ ไป ดูเพิ่มเติมที่การป้องกันการเพิ่มขึ้นของทราฟิกและการจำกัดโควต้าแตกต่างกันอย่างไร

การเพิ่มปลั๊กอินโควต้า

ดูหัวข้อการเพิ่มและกำหนดค่าปลั๊กอิน

การกำหนดค่าผลิตภัณฑ์ใน Apigee Edge

คุณกำหนดค่าโควต้าใน UI ของ Apigee Edge ซึ่งเป็นที่ที่คุณกำหนดค่าผลิตภัณฑ์ API คุณต้องทราบว่า ผลิตภัณฑ์ใดมีพร็อกซีที่รองรับ Microgateway ที่คุณต้องการจำกัดด้วยโควต้า คุณต้องเพิ่มผลิตภัณฑ์นี้ลงในแอปของนักพัฒนาซอฟต์แวร์ เมื่อคุณทำการเรียก API ที่ได้รับการตรวจสอบสิทธิ์โดยใช้คีย์ในแอปของนักพัฒนาซอฟต์แวร์ ระบบจะใช้โควต้ากับการเรียก API เหล่านั้น

  1. เข้าสู่ระบบบัญชีขององค์กร Apigee Edge
  2. ใน UI ของ Edge ให้เปิดผลิตภัณฑ์ที่เชื่อมโยงกับพร็อกซีที่รับรู้ถึง Microgateway ซึ่งคุณต้องการ ใช้โควต้า
    1. ใน UI ให้เลือกผลิตภัณฑ์จากเมนูเผยแพร่
    2. เปิดผลิตภัณฑ์ที่มี API ที่คุณต้องการใช้โควต้า
    3. คลิกแก้ไข
    4. ในช่องโควต้า ให้ระบุช่วงโควต้า เช่น คำขอ 100 รายการทุกๆ 1 นาที หรือ 50,000 คำขอทุก 2 ชั่วโมง

  1. คลิกบันทึก
  2. ตรวจสอบว่าได้เพิ่มผลิตภัณฑ์ลงในแอปของนักพัฒนาแอปแล้ว คุณจะต้องใช้คีย์จากแอปนี้เพื่อทำการเรียก API ที่ผ่านการตรวจสอบสิทธิ์

ตัวอย่างการกำหนดค่าสำหรับโควต้า

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

ตัวเลือกการกำหนดค่าสำหรับโควต้า

หากต้องการกำหนดค่าปลั๊กอินโควต้า ให้เพิ่มองค์ประกอบ quotas ลงในไฟล์การกำหนดค่า ดังที่แสดงในตัวอย่างต่อไปนี้

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota
quotas:
    bufferSize:
      hour: 20000
      minute: 500
      month: 1
      default: 10000
    useDebugMpId: true
    failOpen: true
    isHTTPStatusTooManyRequestEnabled: true
...
ตัวเลือก คำอธิบาย
bufferSize

(จำนวนเต็ม) bufferSizeการกำหนดค่าช่วยให้คุณปรับความถี่ที่ Edge Microgateway ซิงค์จำนวนโควต้ากับ Apigee Edge ได้ หากต้องการทําความเข้าใจ bufferSize ให้ดูตัวอย่างการกําหนดค่าต่อไปนี้

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

โดยค่าเริ่มต้น Microgateway จะซิงค์ตัวนับโควต้ากับ Apigee Edge ทุกๆ 5 วินาที หาก ตั้งค่าช่วงเวลาโควต้าเป็น "นาที" การกำหนดค่าข้างต้นระบุว่าหากตั้งค่าช่วงโควต้าในผลิตภัณฑ์ API เป็น "นาที" Edge Microgateway จะซิงค์กับ Edge เพื่อรับจำนวนโควต้าปัจจุบันหลังจากคำขอทุกๆ 500 รายการหรือหลังจาก 5 วินาที แล้วแต่ว่าสิ่งใดจะเกิดขึ้นก่อน ดูข้อมูลเพิ่มเติมได้ที่ทำความเข้าใจวิธีนับโควต้า

หน่วยเวลาที่อนุญาต ได้แก่ minute, hour, day, week, month และ default

isHTTPStatusTooManyRequestEnabled

กำหนดค่าปลั๊กอินโควต้าให้แสดงสถานะการตอบกลับ HTTP 429 แทนสถานะ 403 หากมีการละเมิดโควต้า

ค่าเริ่มต้น: false โดยค่าเริ่มต้นหรือหากตั้งค่า Flag เป็น false โควต้าจะแสดงสถานะ HTTP 403 เมื่อเกินโควต้า

หากตั้งค่าสถานะเป็น true โควต้าจะแสดงสถานะ HTTP 429 เมื่อมีการใช้งานเกินโควต้า

หากต้องการเปลี่ยนสถานะการคืนค่า HTTP เริ่มต้นเป็น 429 ให้ใช้การกำหนดค่าต่อไปนี้

edgemicro:
...
quotas:
  isHTTPStatusTooManyRequestEnabled: true
...
failOpen เมื่อเปิดใช้ฟีเจอร์นี้ หากเกิดข้อผิดพลาดในการประมวลผลโควต้า หรือหากคำขอ "ใช้โควต้า" ไปยัง Edge อัปเดตตัวนับโควต้าจากระยะไกลไม่สำเร็จ ระบบจะประมวลผลโควต้า ตามจำนวนในเครื่องเท่านั้นจนกว่าการซิงค์โควต้าจากระยะไกลครั้งถัดไปจะสำเร็จ ในทั้ง 2 กรณีนี้ ระบบจะตั้งค่าสถานะ quota-failed-open ใน ออบเจ็กต์คำขอ

หากต้องการเปิดใช้ฟีเจอร์ "เปิดเมื่อล้มเหลว" ของโควต้า ให้ตั้งค่าการกำหนดค่าต่อไปนี้

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId ตั้งค่าสถานะนี้เป็น true เพื่อเปิดใช้การบันทึกรหัส MP (Message Processor) ในการตอบกลับโควต้า

คุณต้องตั้งค่าต่อไปนี้จึงจะใช้ฟีเจอร์นี้ได้

edgemicro:
...
quotas:
  useDebugMpId: true
...

เมื่อตั้งค่า useDebugMpId การตอบกลับโควต้าจาก Edge จะมีรหัส MP และ Edge Microgateway จะบันทึกข้อมูล เช่น

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis หากตั้งค่าเป็น true ปลั๊กอินจะใช้ Redis สำหรับที่เก็บข้อมูลโควต้า โปรดดูรายละเอียดที่หัวข้อการใช้ที่เก็บข้อมูลสำรอง Redis สำหรับโควต้า

ทำความเข้าใจวิธีกำหนดโควต้า

โดยค่าเริ่มต้น Microgateway จะซิงค์ตัวนับโควต้ากับ Apigee Edge ทุกๆ 5 วินาที หาก ตั้งค่าช่วงเวลาโควต้าเป็น "นาที" หากตั้งค่าช่วงเวลาเป็นระดับที่สูงกว่า "นาที" เช่น "สัปดาห์" หรือ "เดือน" ระยะเวลาการรีเฟรชเริ่มต้นจะเป็น 1 นาที

โปรดทราบว่าคุณต้องระบุช่วงโควต้า ในผลิตภัณฑ์ API ที่กำหนดไว้ใน Apigee Edge ช่วงเวลาของโควต้าจะระบุจำนวนคำขอที่อนุญาต ต่อนาที ชั่วโมง วัน สัปดาห์ หรือเดือน เช่น ผลิตภัณฑ์ ก อาจมีช่วงเวลาโควต้าเป็น 100 คำขอต่อนาที และผลิตภัณฑ์ ข อาจมีช่วงเวลาโควต้าเป็น 10,000 คำขอต่อชั่วโมง

การกำหนดค่า YAML ของปลั๊กอิน Edge Microgateway quotaไม่ได้ตั้งค่าช่วงเวลาของโควต้า แต่จะให้วิธีปรับความถี่ที่อินสแตนซ์ Edge Microgateway ในเครื่องซิงค์จำนวนโควต้า กับ Apigee Edge

ตัวอย่างเช่น สมมติว่ามีผลิตภัณฑ์ API 3 รายการที่กำหนดไว้ใน Apigee Edge โดยมีช่วงโควต้าดังนี้

  • ผลิตภัณฑ์ ก มีโควต้าคำขอ 100 รายการต่อนาที
  • ผลิตภัณฑ์ B มีโควต้าคำขอ 5,000 รายการต่อชั่วโมง
  • ผลิตภัณฑ์ C มีโควต้าคำขอ 1,000,000 รายการต่อเดือน

เมื่อพิจารณาถึงการตั้งค่าโควต้าดังกล่าวแล้ว ควรตั้งค่าปลั๊กอิน Edge Microgateway quota อย่างไร แนวทางปฏิบัติแนะนำคือการกำหนดค่า Edge Microgateway ด้วยช่วงเวลาการซิงค์ที่ ต่ำกว่าช่วงเวลาโควต้าที่กำหนดไว้ในผลิตภัณฑ์ API เช่น

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

การกำหนดค่านี้จะกำหนดช่วงเวลาการซิงค์ต่อไปนี้สำหรับผลิตภัณฑ์ API ที่อธิบายไว้ก่อนหน้านี้

  • ตั้งค่าผลิตภัณฑ์ ก. เป็นช่วง "นาที" Edge Microgateway จะซิงค์กับ Edge หลังจาก ทุกๆ 50 คำขอหรือ 5 วินาที แล้วแต่ว่าสิ่งใดจะเกิดขึ้นก่อน
  • ผลิตภัณฑ์ B ตั้งค่าเป็นช่วงเวลา "ชั่วโมง" Edge Microgateway จะซิงค์กับ Edge หลังจาก ทุกๆ 2, 000 คำขอหรือ 1 นาที แล้วแต่ว่าสิ่งใดจะเกิดขึ้นก่อน
  • ผลิตภัณฑ์ C ตั้งค่าเป็นช่วง "เดือน" Edge Microgateway จะซิงค์กับ Edge หลังจาก คำขอแต่ละรายการหรือ 1 นาที แล้วแต่ว่าสิ่งใดจะเกิดขึ้นก่อน

ทุกครั้งที่อินสแตนซ์ Microgateway ซิงค์กับ Edge ระบบจะตั้งค่าจำนวนโควต้าของ Microgateway เป็นจำนวนโควต้าที่เรียกข้อมูลมา

bufferSize การตั้งค่าช่วยให้คุณปรับวิธีซิงค์ตัวนับโควต้า กับ Edge ได้ ในสถานการณ์ที่มีการเข้าชมสูง bufferSizeการตั้งค่า จะช่วยให้ตัวนับบัฟเฟอร์ซิงค์ได้ก่อนที่จะมีการเรียกใช้การซิงค์ตามเวลาเริ่มต้น

ทำความเข้าใจขอบเขตโควต้า

การนับโควต้าจะกำหนดขอบเขตไว้ที่สภาพแวดล้อมในองค์กร หากต้องการให้ได้ขอบเขตนี้ Edge Microgateway จะสร้างตัวระบุโควต้าซึ่งเป็นการรวมกันของ "org + env + appName + productName"

การใช้ที่เก็บข้อมูลสำรอง Redis สำหรับโควต้า

หากต้องการใช้ที่เก็บข้อมูลสำรอง Redis สำหรับโควต้า ให้ใช้การกำหนดค่าเดียวกับที่ใช้สำหรับ ฟีเจอร์ Synchronizer การกำหนดค่าพื้นฐานที่จำเป็นต่อการใช้ Redis สำหรับ ที่เก็บข้อมูลโควต้ามีดังนี้

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
โปรดดูรายละเอียดเกี่ยวกับพารามิเตอร์ edgemicro.redis* ที่หัวข้อการใช้ตัวซิงโครไนซ์

การทดสอบปลั๊กอินโควต้า

เมื่อใช้โควต้าเกิน ระบบจะแสดงสถานะ HTTP 403 กลับไปยังไคลเอ็นต์พร้อมข้อความต่อไปนี้

{"error": "exceeded quota"}

การป้องกันการเพิ่มขึ้นของทราฟิกและการจำกัดโควต้าแตกต่างกันอย่างไร

คุณควรเลือกเครื่องมือที่เหมาะสมกับงานที่ทำ นโยบายโควต้าจะกำหนดค่า จำนวนข้อความคำขอที่แอปไคลเอ็นต์ได้รับอนุญาตให้ส่งไปยัง API ในช่วง 1 ชั่วโมง 1 วัน 1 สัปดาห์ หรือ 1 เดือน นโยบายโควต้าจะบังคับใช้ขีดจำกัดการใช้งานในแอปไคลเอ็นต์โดย การดูแลตัวนับแบบกระจายที่นับคำขอขาเข้า

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

ใช้การควบคุมอัตราการเข้าชมเพื่อป้องกันการเข้าชม API ที่เพิ่มขึ้นอย่างฉับพลัน โดยปกติแล้ว การจำกัดการเพิ่มขึ้นของทราฟิกจะใช้เพื่อป้องกันการโจมตีแบบ DDoS หรือการโจมตีที่เป็นอันตรายอื่นๆ