กลยุทธ์การจัดการข้อมูลเข้าสู่ระบบ

การแชร์ข้อมูลเข้าสู่ระบบในคำขอ API จะช่วยเพิ่มประสิทธิภาพและหลีกเลี่ยงการใช้จ่ายมากเกินไปซึ่งอาจทำให้เกิดข้อผิดพลาดเกี่ยวกับขีดจำกัดอัตรา คู่มือนี้อธิบายวิธีเพิ่มประสิทธิภาพการจัดการข้อมูลเข้าสู่ระบบ OAuth2 เพื่อให้แอปโต้ตอบกับ Google Ads API ได้อย่างมีประสิทธิภาพ

กลยุทธ์การแชร์ข้อมูลเข้าสู่ระบบจะขึ้นอยู่กับว่าแอปเป็นแบบมัลติเทรดหรือมัลติโปรเซส (หรือกระจาย) แอปที่เป็นทั้งหลายกระบวนการและมัลติเทรดภายในแต่ละกระบวนการควรนำทั้ง 2 กลยุทธ์มาปรับใช้ กลยุทธ์เหล่านี้ยังสามารถนำไปใช้กับบัญชี Google Ads หลายบัญชีได้อีกด้วย

แอปหลายเทรด

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

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

มัลติโปรเซสหรือกระจาย

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

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

รีเฟรชงาน

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

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

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

ที่เก็บข้อมูล

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

ควรเพิ่มประสิทธิภาพที่เก็บข้อมูลเพื่อการดำเนินการอ่านที่รวดเร็ว เนื่องจากจะมีคำขออ่านมากกว่าการเขียนมาก และข้อมูลเข้าสู่ระบบต้องได้รับการจัดเก็บอย่างปลอดภัย

เมื่อจัดเก็บข้อมูลเข้าสู่ระบบ คุณควรจัดเก็บ expiry_time ที่คำนวณแล้ว (ตอนนี้ + expires_in) และ refresh_token ไว้ข้าง access_token โดย expiry_time จะคำนวณเป็นเวลาของคำขอรีเฟรช access_token บวกด้วยเวลา expires_in

พูลเซิร์ฟเวอร์

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

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

การจัดการข้อมูลเข้าสู่ระบบสำหรับหลายบัญชี

ข้อมูลเข้าสู่ระบบที่สร้างขึ้นสำหรับบัญชีดูแลจัดการ Google Ads จะใช้เพื่อเข้าถึงบัญชีย่อยทั้งหมดได้ ดังนั้น สำหรับผู้ใช้ที่มีลำดับชั้นของบัญชีดูแลจัดการบัญชีเดียว โดยทั่วไปจะสร้างข้อมูลเข้าสู่ระบบเพื่อให้บัญชีดูแลจัดการระดับบนสุดนำไปใช้กับบัญชี Google Ads ทั้งหมดที่อยู่ภายใต้บัญชีดูแลจัดการนั้นก็ถือว่าเพียงพอแล้ว

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

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

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