บทความนี้พยายามที่จะอธิบายสถาปัตยกรรมไมโครเซอร์วิสความเร็วสูง หากคุณไม่คุ้นเคยกับคำว่า microservices คุณอาจต้องการอ่านโพสต์บนบล็อกเกี่ยวกับ microservices โดย Michael Brunton ก่อน และหากมีเวลามากกว่านี้โดย James Lewis และ Martin Fowler
ไมโครเซอร์วิสความเร็วสูงเป็นปรัชญาและชุดของรูปแบบสำหรับการสร้างบริการที่สามารถสำรองข้อมูลแอปพลิเคชันมือถือและเว็บในวงกว้างได้อย่างง่ายดาย มันใช้ ascale up และ out เมื่อเทียบกับแบบจำลองที่ขยายขนาด เพื่อทำสิ่งต่างๆ ได้มากขึ้นโดยใช้ฮาร์ดแวร์น้อยลง โมเดลการขยายขนาดใช้ข้อมูลการดำเนินการในหน่วยความจำ แฮนด์ออฟคิวที่มีประสิทธิภาพ และการเรียกแบบอะซิงโครนัสเพื่อจัดการการโทรเพิ่มเติมบนโหนดเดียว
โดยทั่วไปแล้ว แบบจำลองการขยายขนาดคลาวด์ ใช้ความรู้สึกของการละทิ้งโดยประมาท หากแอปของคุณมีปัญหาด้านประสิทธิภาพ ไม่มีปัญหาในการเปิดเซิร์ฟเวอร์ 100 เครื่อง ยังเร็วไม่พอ ลอง 1,000 เซิร์ฟเวอร์ นี้มีค่าใช้จ่าย สิ่งนี้ไม่ได้แทนที่โมเดลการขยายขนาดคลาวด์ต่อตัว มันแค่ทำให้แบบจำลองการขยายขนาดระบบคลาวด์มีประสิทธิภาพด้านต้นทุนมากขึ้น ทำมากขึ้นด้วยน้อย
นี่ไม่ได้หมายความว่าไม่มีข้อดีสำหรับโมเดลการขยายขนาดคลาวด์ กล่าวคือความสามารถในการทำสิ่งต่างๆ ได้มากขึ้นโดยใช้ฮาร์ดแวร์น้อยลงจะช่วยประหยัดต้นทุน และคุณยังสามารถขยายขนาดได้ตามต้องการในระบบคลาวด์
ความงามของไมโครเซอร์วิสความเร็วสูงคือการกลับไปสู่รากของ OOP ที่ข้อมูลและตรรกะอยู่ด้วยกันในรูปแบบที่เข้าใจได้ชัดเจนของโดเมนปัญหา และอยู่ห่างจากการแยกข้อมูลและตรรกะ เนื่องจากข้อมูลอยู่กับตรรกะบริการที่ทำงานอยู่ ยังใช้เวลาน้อยลงในการจัดการกับปัญหาความสอดคล้องของแคชเนื่องจากบริการเป็นเจ้าของหรือเช่าข้อมูล (เป็นเจ้าของในช่วงระยะเวลาหนึ่ง) รหัสมีแนวโน้มที่จะเล็กลงเพื่อทำสิ่งเดียวกัน
คุณสามารถคาดหวังให้เขียนโค้ดน้อยลง คุณสามารถคาดหวังให้โค้ดที่คุณเขียนทำงานเร็วขึ้น สำหรับนักพัฒนาซอฟต์แวร์และวิศวกรซอฟต์แวร์อย่างแท้จริง นี่ถือเป็นข้อดี ความเร็วของอัลกอริทึมมีความสำคัญอีกครั้ง ไม่เป็นฝุ่นบนมาตราส่วนในขณะที่คุณรอการตอบกลับจากฐานข้อมูล การเคลื่อนไหวนี้ช่วยให้คุณทำสิ่งต่างๆ ได้มากขึ้นโดยใช้เวลาน้อยลง และมีโค้ดที่รันคำสั่งของขนาดได้เร็วกว่าบริการ IO bound ทั่วไป ซึ่งเป็นบริการคลาวด์
มีเฟรมเวิร์กและไลบรารี Java มากมายสำหรับไมโครเซอร์วิสที่คุณสามารถใช้สร้างระบบไมโครเซอร์วิสความเร็วสูงได้ Vertx, Akka, Kaftka, Redis, Netty, Node.js, Go Channels, Twisted, QBit Java Microservice Lib เป็นต้น ล้วนเป็นเครื่องมือและเทคโนโลยีที่ยอดเยี่ยมในการสร้างบริการประเภทนี้ บทความนี้ไม่ได้เกี่ยวกับเทคโนโลยีหรือภาษาการเขียนโปรแกรมใด ๆ แต่ครอบคลุมถึงความหมายในการสร้างบริการความเร็วสูงประเภทนี้โดยปราศจากการตั้งค่าภาษาหรือเทคโนโลยี
แบบจำลองที่อธิบายในบทความนี้เป็นการผกผันของจำนวนแอปพลิเคชันที่สร้างขึ้น ไม่ใช่เรื่องแปลกที่จะต้องใช้เซิร์ฟเวอร์ 3 ถึง 20 เครื่องสำหรับบริการในระบบดั้งเดิม คุณอาจต้องใช้เซิร์ฟเวอร์ 100 หรือ 1,000 เครื่อง การเรียกเก็บเงิน EC2 ของคุณอาจลดลงเป็น 1 ใน 10 ของต้นทุน ตัวอย่างเช่น นี่ไม่ใช่แค่การคาดคะเน แต่เป็นการสังเกตที่เกิดขึ้นจริง
ในรูปแบบนี้ คุณมักจะเพิ่มบริการพิเศษเพื่อเปิดใช้งานการรองรับการข้ามล้มเหลวเพื่อไม่ให้ขยายออกไป คุณจะลดจำนวนเซิร์ฟเวอร์ที่ต้องการและฐานโค้ดของคุณจะมีความสอดคล้องกันมากขึ้นหากคุณนำกลยุทธ์เหล่านี้มาใช้
คุณอาจเคยได้ยินว่า บริการของคุณเป็นแบบไร้สัญชาติ เรากำลังแนะนำตรงกันข้าม ทำให้บริการของคุณเป็นเจ้าของข้อมูลการดำเนินงาน