การออกแบบเว็บคอนเทนเนอร์
การพัฒนาเว็บคอนเทนเนอร์นั้นเกี่ยวข้องกับเทคโนโลยีมากมายในระดับที่แตกต่างกันเช่นความรู้เกี่ยวกับเลเยอร์การสื่อสารความรู้เกี่ยวกับระดับภาษาโปรแกรม ฯลฯ และเว็บคอนเทนเนอร์ที่มีอยู่เป็นระบบที่ค่อนข้างใหญ่และใช้เวลานานในการอธิบายอย่างชัดเจน บทความนี้มีวัตถุประสงค์เพื่อแนะนำวิธีการออกแบบเว็บคอนเทนเนอร์พูดคุยเฉพาะแนวคิดการใช้งานและไม่เกี่ยวข้องกับการใช้งานที่เฉพาะเจาะจงมากเกินไป แบ่งออกเป็นหลายโมดูลและส่วนประกอบ แต่ละโมดูลส่วนประกอบมีหน้าที่รับผิดชอบฟังก์ชั่นที่แตกต่างกัน รูปต่อไปนี้แสดงรายการส่วนประกอบพื้นฐานบางส่วนและแนะนำแต่ละองค์ประกอบ
เชื่อมต่อกับผู้รับ
ความรับผิดชอบหลักคือการฟังว่ามีการเชื่อมต่อซ็อกเก็ตไคลเอ็นต์และรับซ็อกเก็ตหรือไม่จากนั้นส่งมอบซ็อกเก็ตให้กับผู้ดำเนินการงาน (พูลเธรด) สำหรับการดำเนินการ อ่านซ็อกเก็ตอย่างต่อเนื่องจากด้านล่างของระบบทำการประมวลผลน้อยที่สุดเท่าที่จะทำได้จากนั้นโยนลงในพูลเธรด ทำไมต้องเน้นถึงความจำเป็นที่จะต้องจัดการกับน้อยที่สุด? สิ่งนี้เกี่ยวข้องกับปัญหาประสิทธิภาพของระบบและการประมวลผลที่มากเกินไปจะส่งผลกระทบต่อปริมาณงานอย่างจริงจัง เนื่องจากโดยทั่วไปจะมีตัวรับสัญญาณเพียงตัวเดียว (หนึ่งเธรดที่รับผิดชอบการรับซ็อกเก็ต) จึงน่าจะมีผลกระทบต่อความยาวของกระบวนการรับแต่ละครั้ง ดังนั้นตัวรับสัญญาณทำงานน้อยมากและเรียบง่ายเพียงไม่กี่ตัวแปรสถานะการดำเนินการสะสมของประตูควบคุมการไหล, การทำงานของเซิร์ฟเวอร์, การตั้งค่าคุณสมบัติบางอย่างของซ็อกเก็ตที่ได้รับวางซ็อกเก็ตที่ได้รับลงในพูลเธรดและการจัดการข้อยกเว้น ตรรกะอื่น ๆ ที่ใช้เวลานานในการประมวลผลจะถูกส่งไปยังพูลเธรดเช่นการอ่านข้อมูลพื้นฐานของซ็อกเก็ตการแยกวิเคราะห์แพ็คเก็ตโปรโตคอล HTTP และตอบสนองต่อการดำเนินงานของลูกค้า ฯลฯ
ตัวควบคุมหมายเลขการเชื่อมต่อ
สำหรับเครื่องการรับส่งข้อมูลทั้งหมดของคำขอการเข้าถึงมีระยะเวลาสูงสุดและเซิร์ฟเวอร์มีขีด จำกัด ทางกายภาพ เพื่อให้แน่ใจว่าเว็บเซิร์ฟเวอร์จะไม่ถูกล้างออกเราจำเป็นต้องใช้มาตรการบางอย่างเพื่อป้องกันและป้องกัน การรับส่งข้อมูลที่นี่จะต้องอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับจำนวนการเชื่อมต่อซ็อกเก็ตซึ่งควบคุมการรับส่งข้อมูลโดยการควบคุมจำนวนการเชื่อมต่อซ็อกเก็ต วิธีหนึ่งที่มีประสิทธิภาพคือการควบคุมการไหลซึ่งเป็นเหมือนการเพิ่มประตูไปยังทางเข้าของการไหล ขนาดของประตูกำหนดขนาดของการไหล เมื่อถึงการไหลสูงสุดประตูจะถูกปิดและหยุดรับจนกว่าจะมีช่องว่าง เคาน์เตอร์สามารถนำไปใช้งานได้โดยใช้เฟรมเวิร์ก AQS ของ JDK
โรงงานซ็อกเก็ต
โอกาสการใช้งานที่แตกต่างกันอาจต้องใช้ระดับความปลอดภัยที่แตกต่างกัน ตัวอย่างเช่นเมื่อการทำธุรกรรมที่เกี่ยวข้องกับการชำระเงินข้อมูลจะต้องเข้ารหัสก่อนส่งซึ่งเกี่ยวข้องกับกระบวนการเจรจาที่สำคัญในขณะที่ในโอกาสปกติอื่น ๆ ไม่จำเป็นต้องเข้ารหัสแพ็กเก็ต การสะท้อนให้เห็นถึงเลเยอร์แอปพลิเคชันเป็นปัญหาของการใช้ HTTP และ HTTPS
พูดง่ายๆคือโปรโตคอล TLS/SSL ให้บริการการรับรองความถูกต้องสำหรับการสื่อสารแต่ละครั้ง①เพื่อตรวจสอบความถูกต้องตามกฎหมายของตัวตนของเอนทิตีของเซสชันนี้ ②ให้บริการการเข้ารหัสและกลไกการเข้ารหัสที่แข็งแกร่งสามารถมั่นใจได้ว่าข้อความในระหว่างการสื่อสารจะไม่ถูกถอดรหัส ③ให้บริการป้องกันการงัดแงะใช้อัลกอริทึมแฮชเพื่อลงนามข้อความและตรวจสอบให้แน่ใจว่าเนื้อหาการสื่อสารไม่ได้ถูกดัดแปลงโดยการตรวจสอบลายเซ็น
โปรโตคอล HTTP สอดคล้องกับซ็อกเก็ตในขณะที่ HTTPS สอดคล้องกับ SSLSocket วิธีการสร้างซ็อกเก็ตและ SSLSockets ถูกส่งไปยังโรงงานซ็อกเก็ต
งาน Definer - งาน
กำหนดงานที่จะดำเนินการและบอกพูลเธรดว่างานประเภทใดที่จะดำเนินการ งานส่วนใหญ่แบ่งออกเป็นสามจุด: การประมวลผลซ็อกเก็ตและการตอบสนองต่อลูกค้าลดลงนับนับการเชื่อมต่อและปิดซ็อกเก็ต ในหมู่พวกเขาการประมวลผลของซ็อกเก็ตเป็นสิ่งสำคัญและซับซ้อนที่สุด มันรวมถึงการอ่านกระแสไบต์ซ็อกเก็ตพื้นฐานการแยกวิเคราะห์ข้อความร้องขอโปรโตคอล HTTP (การวิเคราะห์บรรทัดคำขอส่วนหัวคำขอเนื้อหาร้องขอและข้อมูลอื่น ๆ ) การได้รับเส้นทางตามการวิเคราะห์สายคำขอเพื่อค้นหาทรัพยากรของโครงการเว็บบนโฮสต์ที่เกี่ยวข้อง
ผู้บริหารงาน
พูลเธรดที่มีจำนวนเธรดสูงสุดและต่ำสุดเรียกว่า "ผู้ดำเนินการงาน" เนื่องจากพูลเธรดสามารถถือได้ว่าเป็นการเริ่มต้นหลายเธรดเพื่อตรวจจับคิวงานอย่างต่อเนื่องและเมื่อต้องมีการดำเนินการงานแล้วจะถูกดำเนินการ จำนวนขีด จำกัด ของเธรดสูงสุดและต่ำสุดขีด จำกัด เวลาการกู้คืนเธรดซ้ำซ้อนการกระทำการปฏิเสธที่ทำโดยพูลเธรดเมื่อจำนวนเธรดสูงสุดเกิน ฯลฯ ฯลฯ
การอ่านข้อความ
ใช้ในการอ่านแพ็คเก็ตจากไคลเอนต์ไปยังระบบปฏิบัติการพื้นฐานและให้กลไกการบัฟเฟอร์ คัดลอกข้อความไปยัง desbuf
เอาต์พุตข้อความ
ใช้ในการเขียนแพ็คเก็ตที่ประมวลผลโดยเว็บคอนเทนเนอร์ไปยังระบบปฏิบัติการและให้กลไกการบัฟเฟอร์ เขียนข้อความ outputBuf ไปยังระบบปฏิบัติการผ่านบัฟเฟอร์
ตัวกรองอินพุต
ในกระบวนการอ่านนี้ต้องการการประมวลผลเพิ่มเติมบางอย่างและการประมวลผลเพิ่มเติมเหล่านี้อาจทำได้แตกต่างกันตามเงื่อนไขที่แตกต่างกัน เมื่อพิจารณาถึงการแยกโปรแกรมและส่วนขยายให้มีการแนะนำตัวกรอง หลังจากการดำเนินการกรองเท่านั้นเราสามารถไปถึง desbuf ผ่านชั้นของตัวกรอง กระบวนการนี้เหมือนกับการเพิ่มระดับการประมวลผล การดำเนินการที่สอดคล้องกันจะดำเนินการหลังจากผ่านระดับและในที่สุดข้อมูลต้นทางไปยังข้อมูลปลายทางจะเสร็จสิ้น
ตัวกรองเอาต์พุต
มันคล้ายกับฟังก์ชันตัวกรองอินพุตและใช้เมื่อเอาต์พุตข้อความ
ตัวแยกวิเคราะห์ข้อความ
ให้ความสามารถในการแยกส่วนต่าง ๆ ของโปรโตคอล HTTP
ขอเครื่องกำเนิดไฟฟ้า
ตามแนวคิดเชิงวัตถุแอตทริบิวต์และฟิลด์โปรโตคอลที่เกี่ยวข้องกับคำขอในแต่ละกระบวนการคำขอจะถูกสรุปลงในวัตถุคำขอ มันมีสามส่วน: สายคำขอส่วนหัวคำขอและร่างกายขอ ค่าใดที่จำเป็นในระหว่างการประมวลผลสามารถรับได้โดยตรงจากวัตถุคำขอ ให้ความสะดวกสบายสำหรับการใช้มาตรฐาน Servlet
เครื่องกำเนิดการตอบสนอง
สอดคล้องกับคำขอจำเป็นต้องใช้ตัวสร้างวัตถุตอบกลับ มันมีสามส่วน: แถวตอบสนองส่วนหัวการตอบสนองและร่างกายตอบสนอง ค่าที่เกี่ยวข้องในผลการประมวลผลสามารถตั้งค่าโดยตรงกับวัตถุตอบสนอง ให้ความสะดวกสบายสำหรับการใช้มาตรฐาน Servlet
ที่อยู่ Mapper
Mapper ที่อยู่เป็นเราเตอร์ที่ร้องขอและทรัพยากร การเข้าถึงที่ร้องขอถูกแมปตามเส้นทางเพื่อค้นหาทรัพยากรของการตอบสนองต่อลูกค้าที่ร้องขอ
วงจรชีวิต
เพื่อให้เป็นโมดูลเพิ่มเติมคอนเทนเนอร์ทั้งหมดมีส่วนประกอบมากมายซึ่งอาจต้องใช้เหตุการณ์ที่แตกต่างกันในช่วงเวลาที่แตกต่างกันและต้องใช้วงจรชีวิตในการจัดการส่วนประกอบทั้งหมดในลักษณะที่เป็นเอกภาพ ตัวอย่างเช่นการเริ่มต้นหยุดและปิดส่วนประกอบทั้งหมดจะถูกแยกออกจากการจัดการวงจรชีวิตแบบครบวงจรซึ่งสามารถอำนวยความสะดวกในการจัดการวงจรชีวิตของส่วนประกอบเหล่านี้ ฉันหวังว่าจะทำอะไรบางอย่างก่อนและหลังสิ่งที่เกิดขึ้นในบางรัฐ? เพิ่มผู้ฟังวงจรชีวิตเพื่อให้ได้อย่างสง่างาม
ผู้จัดการ JMX
การตรวจสอบและการจัดการสถานะการทำงานของระบบประสิทธิภาพของเซิร์ฟเวอร์การรวบรวมพารามิเตอร์ที่เกี่ยวข้องกับเซิร์ฟเวอร์การโหลด JVM หมายเลขการเชื่อมต่อเว็บพูลเธรดพูลการเชื่อมต่อฐานข้อมูลการจัดการแคชการโหลดไฟล์การกำหนดค่า ฯลฯ มันสามารถให้การจัดการภาพระยะไกลที่มีประสิทธิภาพแบบเรียลไทม์สูง นอกจากนี้ยังเป็นวิธีแก้ปัญหาสำหรับการจัดการระบบกระจาย
เครื่องโหลดเว็บ
WebLoader ใช้ในการโหลดโครงการเว็บแอปพลิเคชัน เว็บคอนเทนเนอร์อาจมีเว็บแอปพลิเคชันหลายอย่าง เพื่อให้เกิดการแยกระหว่าง LIB และ servlet ตัวโหลดคลาสที่แตกต่างกัน, classloader จะต้องใช้สำหรับแต่ละเว็บแอปพลิเคชันและตัวโหลดคลาสเหล่านี้ไม่ใช่ความสัมพันธ์ระหว่างพ่อแม่-ลูกเพื่อให้ได้เอฟเฟกต์การแยกชั้นเรียนนั่นคือ LIB ของเว็บแอปพลิเคชันจะไม่ถูกใช้งานโดยเว็บแอปพลิเคชันอื่น ๆ
ผู้จัดการเซสชัน
ผู้จัดการเซสชันส่วนใหญ่จัดการเซสชันรวมถึง: ①สร้าง SessionIds โดยทั่วไปคุกกี้หรือ URL ไม่มีค่า jsessionId และจำเป็นต้องมีการสร้างเซสชัน SessionID เป็น SessionID ②เซสชันไคลเอนต์จำนวนมากถูกบันทึกไว้ในเซิร์ฟเวอร์ สำหรับเซสชันการหมดเวลาคุณต้องทำความสะอาดเป็นประจำเพื่อให้แน่ใจว่าหน่วยความจำเซิร์ฟเวอร์ไม่สูญเปล่า ③สำหรับเซสชันที่สำคัญบางอย่างพวกเขาสามารถคงอยู่ในดิสก์และสามารถโหลดลงในหน่วยความจำใหม่เพื่อใช้งานได้เมื่อจำเป็น
เรียกใช้บันทึก
บันทึกคำเตือนข้อยกเว้นและข้อผิดพลาดที่รันไทม์
บันทึกการเข้าถึง
บันทึกการเข้าถึงโดยทั่วไปจะบันทึกข้อมูลที่เกี่ยวข้องกับการเข้าถึงของลูกค้ารวมถึง IP ของลูกค้าเวลาร้องขอโปรโตคอลการร้องขอวิธีการขอหมายเลขไบต์รหัสการตอบกลับรหัสเซสชันเวลาการประมวลผล ฯลฯ บันทึกการเข้าถึงสามารถนับจำนวนผู้ใช้ที่เข้าชมกฎการกระจายเวลาการเข้าถึงงานอดิเรกส่วนตัว ฯลฯ และข้อมูลเหล่านี้สามารถช่วยให้ บริษัท ต่างๆตัดสินใจ
ผู้จัดการความปลอดภัย
เว็บโครงการทำงานบนแพลตฟอร์มเว็บคอนเทนเนอร์ซึ่งเป็นเหมือนการฝังแอปพลิเคชันบนแพลตฟอร์มที่จะรัน เพื่อให้โปรแกรมฝังตัวทำงานตามปกติแพลตฟอร์มจะต้องสามารถทำงานได้อย่างปลอดภัยและตามปกติ และเพื่อให้แน่ใจว่าแพลตฟอร์มจะไม่ได้รับผลกระทบจากแอปพลิเคชันที่ฝังอยู่ในระดับที่ยิ่งใหญ่ที่สุดทั้งสองบรรลุผลของการแยกในระดับหนึ่ง เมื่อเริ่มต้นไฟล์นโยบายจะถูกระบุโดย -djava.security.Manager -djava.security.policy == Web.policy ซึ่งกำหนดสิทธิ์ต่างๆ
การตรวจสอบการดำเนินงานและการจัดการระยะไกล
จัดเตรียมแพลตฟอร์มที่สามารถตรวจสอบสถานะการทำงานของเว็บคอนเทนเนอร์แบบเรียลไทม์และสามารถจัดการได้จากระยะไกล
กลุ่ม
โดยทั่วไปมีกลุ่มสองประเภท: ①กลุ่มการปรับสมดุลโหลดซึ่งโดยทั่วไปใช้อัลกอริทึมการกระจายบางอย่างเพื่อกระจายปริมาณการเข้าถึงการเข้าถึงไปยังแต่ละเครื่องในคลัสเตอร์สำหรับการประมวลผล ②กลุ่มความพร้อมใช้งานสูงการสื่อสารคลัสเตอร์เชื่อมต่อเครื่องหลายเครื่อง คลัสเตอร์ประเภทนี้มุ่งเน้นไปที่การรับรองความพร้อมใช้งานภายนอกของคลัสเตอร์ทั้งหมดผ่านการสลับอัตโนมัติหรือการถ่ายโอนการจราจรหลังจากเครื่องในคลัสเตอร์ล้มเหลว
โดยทั่วไปการร้องขอเว็บนั้นไร้สัญชาติและสามารถจัดกลุ่มได้โดยตรง แต่เซสชันเกี่ยวข้องกับสถานะและต้องใช้เทคโนโลยีการสื่อสารคลัสเตอร์เพื่อคัดลอกเซสชัน เทคโนโลยีที่เกี่ยวข้อง ได้แก่ มัลติคาสต์และยูนิคาสต์
เครื่องยนต์เซิร์ฟเล็ต
เอ็นจิ้น servlet ใช้การสะท้อนกลับเพื่อสร้างวัตถุใน servlet และ jsp ในเว็บแอปพลิเคชันและใส่ลงในพูลวัตถุ Servlet และเรียกใช้วิธีการที่สอดคล้องกันตามสถานการณ์จริง เว็บแอปพลิเคชันวางการประมวลผลตรรกะทางธุรกิจในวิธี DOPOST หรือ DOG เมื่อเว็บคอนเทนเนอร์ประมวลผลคำขอจะดำเนินการตามตรรกะการประมวลผลที่กำหนดไว้ที่นี่และไคลเอนต์ตอบกลับจะได้รับการตอบกลับ
คอมไพเลอร์ JSP
ตามข้อกำหนด JSP จะถูกรวบรวมในการดำเนินการ Servlet ในที่สุดดังนั้นไฟล์ JSP จะต้องถูกรวบรวมตามข้อกำหนด คอมไพเลอร์ JSP แปลไวยากรณ์ JSP และประมวลผลตามไวยากรณ์ JSP
เว็บคอนเทนเนอร์โดยทั่วไปมีฟังก์ชั่นของส่วนประกอบที่แนะนำข้างต้น คุณสามารถสร้างเว็บคอนเทนเนอร์ที่อนุญาตให้เว็บของคุณทำงานได้ตามการใช้งานของแต่ละโมดูลแต่ละโมดูล
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!