คำถามติดแท็ก scalability

ความสามารถในการปรับขนาดคือความสามารถของระบบเครือข่ายหรือกระบวนการในการรองรับปริมาณงานที่เพิ่มขึ้นในลักษณะที่มีความสามารถหรือความสามารถในการขยายเพื่อรองรับการเติบโตนั้น

3
เหตุใดแกนประมวลผล CPU เพิ่มเติมบนเครื่องเสมือนจึงรวมเวลาช้าลง
[แก้ไข # 2] ถ้าใครจาก VMWare สามารถตีฉันด้วยสำเนาของ VMWare Fusion ฉันยินดีที่จะทำเช่นเดียวกันกับการเปรียบเทียบ VirtualBox กับ VMware อย่างใดฉันสงสัยว่า hypervisor VMware จะได้รับการปรับให้ดีขึ้นสำหรับการทำไฮเปอร์เธรด (ดูคำตอบของฉันด้วย) ฉันเห็นสิ่งที่อยากรู้ เมื่อฉันเพิ่มจำนวนคอร์ในเครื่องเสมือน Windows 7 x64 ของฉันเวลาในการรวบรวมโดยรวมจะเพิ่มขึ้นแทนที่จะลดลง การคอมไพล์มักจะเหมาะอย่างยิ่งสำหรับการประมวลผลแบบขนานเช่นเดียวกับในส่วนตรงกลาง (การทำแผนที่การพึ่งพาโพสต์) คุณสามารถเรียกอินสแตนซ์คอมไพเลอร์ในแต่ละไฟล์. c / .cpp / .cs / ไฟล์ใดก็ได้เพื่อสร้างวัตถุบางส่วน เกิน. ดังนั้นฉันจะจินตนาการว่าการคอมไพล์จริง ๆ แล้วจะขยายขนาดได้ดีกับ # ของแกนประมวลผล แต่สิ่งที่ฉันเห็นคือ: 8 คอร์: 1.89 วินาที 4 แกน: 1.33 วินาที 2 คอร์: …

3
วิธีการออกแบบเว็บเซอร์วิสที่ปรับขนาดได้สูงใน Java?
ฉันกำลังสร้างบริการบนเว็บบางอย่างที่จะมีผู้ใช้ 2,000 คนพร้อมกัน บริการดังกล่าวให้บริการฟรีและคาดว่าจะได้รับฐานผู้ใช้จำนวนมาก ในอนาคตอาจต้องมีผู้ใช้มากถึง 50,000 คน มีคำถามอีกสองสามข้อที่แก้ไขปัญหาเช่น - /programming/2567254/building-highly-scalable-web-services อย่างไรก็ตามความต้องการของฉันแตกต่างจากคำถามข้างต้น ตัวอย่างเช่น - แอปพลิเคชันของฉันไม่มีส่วนต่อประสานผู้ใช้ดังนั้นรูปภาพ, CSS, javascript จึงไม่เป็นปัญหา มันมีอยู่ใน Java ดังนั้นคำแนะนำเช่นการใช้ HipHop ในการแปล PHP เป็นโค้ดเนทีฟนั้นไร้ประโยชน์ ดังนั้นฉันจึงตัดสินใจถามคำถามแยกต่างหาก นี่คือการตั้งค่าโครงการของฉัน - วางตัวบริการบนเว็บโดยใช้ Apache CXF Hibernate 3.0 (ด้วยการปรับแต่งที่เกี่ยวข้องเช่นการโหลดแบบขี้เกียจและ HQL แบบกำหนดเองสำหรับปรับแต่ง) Tomcat 6.0 MySql 5.5 อะไรคือวิธีปฏิบัติที่ดีที่สุดในการปฏิบัติตามเพื่อให้แอปพลิเคชันที่ใช้ Java สามารถปรับขนาดได้

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

7
การบันทึกเหตุการณ์ความถี่สูงไปยังฐานข้อมูลที่ จำกัด การเชื่อมต่อ
เรามีสถานการณ์ที่ฉันต้องรับมือกับเหตุการณ์ที่ไหลเข้ามาในเซิร์ฟเวอร์ของเราโดยเฉลี่ยประมาณ 1,000 เหตุการณ์ต่อวินาทีโดยเฉลี่ย ปัญหา ระบบของเราโฮสต์บนHerokuและใช้Heroku Postgres DBที่ค่อนข้างแพงซึ่งอนุญาตการเชื่อมต่อ DB ได้สูงสุด 500 เราใช้การเชื่อมต่อร่วมกันเพื่อเชื่อมต่อจากเซิร์ฟเวอร์ไปยังฐานข้อมูล เหตุการณ์เข้ามาเร็วกว่าการเชื่อมต่อฐานข้อมูลที่สามารถจัดการได้ ปัญหาที่เรามีคือเหตุการณ์เกิดขึ้นเร็วกว่าพูลการเชื่อมต่อที่สามารถจัดการได้ เมื่อถึงเวลาที่การเชื่อมต่อหนึ่งเสร็จสิ้นการส่งสัญญาณเครือข่ายจากเซิร์ฟเวอร์ไปยังฐานข้อมูลดังนั้นจึงสามารถปล่อยกลับไปที่กลุ่มได้มากกว่าnมีเหตุการณ์เพิ่มเติมเข้ามา ในที่สุดเหตุการณ์ต่างๆก็หมดลงรอรับการบันทึกและเนื่องจากไม่มีการเชื่อมต่อที่พร้อมใช้งานในกลุ่มจึงหมดเวลาและระบบทั้งหมดไม่สามารถใช้งานได้ เราได้แก้ไขเหตุฉุกเฉินด้วยการปล่อยเหตุการณ์ความถี่สูงที่ก้าวร้าวช้าลงจากลูกค้า แต่เรายังต้องการทราบวิธีจัดการสถานการณ์นี้ในเหตุการณ์ที่เราต้องจัดการกับเหตุการณ์ความถี่สูงนั้น ข้อ จำกัด ลูกค้ารายอื่นอาจต้องการอ่านเหตุการณ์พร้อมกัน ไคลเอนต์อื่น ๆ ร้องขออย่างต่อเนื่องเพื่ออ่านเหตุการณ์ทั้งหมดที่มีคีย์เฉพาะแม้ว่าพวกเขาจะยังไม่ได้บันทึกในฐานข้อมูล ไคลเอนต์สามารถสอบถามGET api/v1/events?clientId=1และรับเหตุการณ์ทั้งหมดที่ส่งโดยไคลเอนต์ 1 แม้ว่าเหตุการณ์เหล่านั้นจะยังไม่ได้ทำการบันทึกในฐานข้อมูล มีตัวอย่าง "ห้องเรียน" เกี่ยวกับวิธีจัดการกับเรื่องนี้หรือไม่? การแก้ปัญหาที่เป็นไปได้ จัดคิวเหตุการณ์บนเซิร์ฟเวอร์ของเรา เราสามารถจัดคิวเหตุการณ์บนเซิร์ฟเวอร์ (ด้วยคิวที่มีการเกิดพร้อมกันสูงสุด 400 เพื่อให้กลุ่มการเชื่อมต่อไม่หมด) นี่เป็นความคิดที่ไม่ดีเพราะ: มันจะกินหน่วยความจำเซิร์ฟเวอร์ที่มีอยู่ เหตุการณ์ที่จัดคิวเข้าด้วยกันจะใช้ RAM จำนวนมาก เซิร์ฟเวอร์ของเราเริ่มต้นใหม่ครั้งเดียวทุก 24 ชั่วโมง นี่เป็นข้อ จำกัด อย่างหนักจาก Heroku เซิร์ฟเวอร์สามารถรีสตาร์ทในขณะที่เหตุการณ์ถูกจัดคิวทำให้เราสูญเสียเหตุการณ์ที่จัดคิว มันแนะนำสถานะบนเซิร์ฟเวอร์จึงทำร้ายความยืดหยุ่น …

1
แบบจำลองข้อมูลมีผลกระทบต่อความสามารถในการขยายและประสิทธิภาพในฐานข้อมูลที่เรียกว่า“ NoSQL” มากน้อยเพียงใด?
คุณไม่เคยมีการพูดคุยเกี่ยวกับฐานข้อมูลที่เรียกว่า "NoSQL" โดยไม่ต้องนำทฤษฎีบท CAP (ความสอดคล้องความพร้อมใช้งานพาร์ติชัน: เลือกสอง) ถ้าคุณต้องเลือกว่าระหว่าง MongoDB (Partition, Consistency) และ CouchDB (Availability, Partition) สิ่งแรกที่คุณต้องคิดคือ "ฉันต้องการข้อมูลที่ถูกต้องหรือต้องเข้าถึงตลอดเวลาหรือไม่" ฐานข้อมูลใหม่เหล่านั้นถูกจัดทำขึ้นเพื่อแบ่งพาร์ติชัน แต่ถ้าฉันทำไม่ได้ล่ะ ถ้าฉันคิดว่ามันยอดเยี่ยมมากที่มีคีย์ / ค่าคอลัมน์เอกสารฐานข้อมูลใด ๆ แทนที่จะเป็นเชิงสัมพันธ์และเพิ่งสร้างเซิร์ฟเวอร์อินสแตนซ์เดียวและไม่เคยทิ้งมัน ในกรณีนั้นฉันจะไม่มีทั้งความพร้อมใช้งานและความสอดคล้องใช่ไหม MongoDB ไม่จำเป็นต้องทำซ้ำสิ่งใดดังนั้นจึงสามารถใช้งานได้ และ CouchDB จะมีแหล่งข้อมูลเพียงแหล่งเดียวดังนั้นมันจึงค่อนข้างสอดคล้องกัน นั่นหมายความว่าในกรณีนี้ MongoDB และ CouchDB จะมีความแตกต่างเล็กน้อยในแง่ของการใช้งาน? ดียกเว้นประสิทธิภาพของหลักสูตร API และ al แต่นั่นจะเป็นการเลือกระหว่าง PostgreSQL และ MySQL มากกว่าการมีข้อกำหนดที่แตกต่างกันสองชุด ฉันอยู่ตรงนี้หรือไม่ ฉันสามารถเปลี่ยนฐานข้อมูล AP หรือ CP เป็น AC …

5
ทำไม Scala ถึงสามารถปรับขนาดได้มากกว่าภาษาอื่น ๆ
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ Scala ถูกเรียกเก็บเงินเป็นภาษาที่ปรับขนาดได้คุณลักษณะที่รวมอยู่ในชื่อ : ชื่อ Scala เป็นกระเป๋าหิ้วของ "ปรับขนาดได้" และ "ภาษา" ซึ่งบ่งบอกว่ามันถูกออกแบบมาเพื่อเติบโตไปพร้อมกับความต้องการของผู้ใช้ "ปรับขนาดได้" หมายถึงอะไรในบริบทของสกาล่า? อะไรทำให้ Scala ปรับขนาดได้มากกว่าพูด Java?

1
วิธีหลีกเลี่ยงอินเตอร์เฟสแบบช่างพูด
พื้นหลัง: ฉันกำลังออกแบบแอปพลิเคชันเซิร์ฟเวอร์และสร้าง dll แยกต่างหากสำหรับระบบย่อยที่แตกต่างกัน เพื่อให้สิ่งต่าง ๆ ง่ายขึ้นสมมติว่าฉันมีระบบย่อยสองระบบ: 1) Users2)Projects ส่วนต่อประสานสาธารณะของผู้ใช้มีวิธีการดังนี้: IEnumerable<User> GetUser(int id); และส่วนต่อประสานสาธารณะของโครงการมีวิธีการดังนี้: IEnumerable<User> GetProjectUsers(int projectId); ตัวอย่างเช่นเมื่อเราต้องการแสดงผู้ใช้สำหรับโครงการบางอย่างเราสามารถเรียกGetProjectUsersและจะให้วัตถุกลับมาพร้อมข้อมูลที่เพียงพอที่จะแสดงใน DataGrid หรือคล้ายกัน ปัญหา: ตามหลักแล้วProjectsระบบย่อยไม่ควรเก็บข้อมูลผู้ใช้และควรเก็บรหัสผู้ใช้ที่เข้าร่วมในโครงการ ในการให้บริการGetProjectUsersจำเป็นต้องมีการเรียกGetUserใช้Usersระบบสำหรับแต่ละ id ผู้ใช้ที่เก็บไว้ในฐานข้อมูลของตัวเอง อย่างไรก็ตามสิ่งนี้ต้องการการGetUserเรียกที่แยกจากกันจำนวนมากทำให้เกิดคิวรี่ SQL แยกต่างหากมากมายภายในUserระบบย่อย ฉันไม่ได้ทดสอบสิ่งนี้จริงๆ แต่การมีการออกแบบช่างพูดนี้จะส่งผลกระทบต่อความสามารถในการขยายระบบ ถ้าฉันแยกระบบย่อยออกจากกันฉันสามารถเก็บข้อมูลทั้งหมดไว้ใน schema เดียวที่สามารถเข้าถึงได้โดยทั้งสองระบบและProjectsสามารถทำได้เพียงJOINเพื่อให้ผู้ใช้โครงการทั้งหมดได้รับแบบสอบถามเดียว Projectsจะต้องรู้วิธีการสร้างUserวัตถุจากผลการสืบค้นด้วย แต่นี่เป็นการแยกการแยกซึ่งมีข้อดีหลายประการ คำถาม: ทุกคนสามารถแนะนำวิธีการแยกออกจากกันในขณะที่หลีกเลี่ยงการGetUserโทรบุคคลเหล่านี้ในระหว่างGetProjectUsersหรือไม่ ตัวอย่างเช่นสิ่งหนึ่งที่ฉันคิดว่าเป็นสำหรับผู้ใช้ในการให้ความสามารถแก่ระบบภายนอกในการ "แท็ก" ผู้ใช้ที่มีคู่ค่าป้ายกำกับและเพื่อขอผู้ใช้ด้วยค่าที่แน่นอนเช่น: void AddUserTag(int userId, string tag, string value); IEnumerable<User> GetUsersByTag(string tag, …

7
เมื่อใดที่เริ่มคิดเกี่ยวกับความยืดหยุ่น [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันมีปัญหาตลก แต่ก็แย่มาก ฉันกำลังจะเปิดตัวแอพ (iPhone) ใหม่ มันเป็นเกมแบบเล่นพร้อมกันหลายคนที่ทำงานบนแบ็คเอนด์ที่กำหนดเองของฉัน แต่ฉันกลัวที่จะเปิดตัว ด้วยเหตุผลบางอย่างฉันคิดว่ามันอาจกลายเป็นสิ่งที่ยิ่งใหญ่และความนิยมของมันจะทำลายฐานข้อมูล MySQL + เซิร์ฟเวอร์เดี่ยวที่โดดเดี่ยวของฉัน ในมือข้างหนึ่งฉันคิดว่าถ้ามันเพิ่มขึ้นฉันควรเตรียมพร้อมและมีโครงสร้างพื้นฐานที่ปรับขนาดได้แล้ว ในทางกลับกันฉันแค่รู้สึกอยากจะนำมันออกไปสู่โลกและดูว่าเกิดอะไรขึ้น ฉันมักจะอ่านสิ่งต่าง ๆ เช่น "การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นรากของความชั่วร้ายทั้งหมด" หรือผู้คนที่บอกว่าคุณควรสร้างเกมนักฆ่าของคุณตอนนี้ด้วยเครื่องมือที่พร้อมใช้งานและกังวลเรื่องอื่น ๆ เช่นความยืดหยุ่นในภายหลัง ฉันชอบที่จะได้ยินความคิดเห็นเกี่ยวกับเรื่องนี้จากผู้เชี่ยวชาญหรือผู้ที่มีประสบการณ์เกี่ยวกับเรื่องนี้ ขอบคุณ!

6
แนะนำให้ใช้ SQL Server เป็นฐานข้อมูลสำหรับแอพพลิเคชั่นที่ปรับขนาดได้หรือไม่?
สมมติว่าคุณกำลังวางแผนที่จะสร้างเว็บไซต์ในระดับ Facebook (ถ้าฉันจะอ้างอิงชื่อเว็บไซต์แล้วทำไมไม่ใช้ Facebook?!) แนะนำให้ใช้ SQL Server เป็นฐานข้อมูลของคุณสำหรับแอปพลิเคชั่นดังกล่าวหรือไม่? ฉันถามคำถามนี้เพราะเพื่อนร่วมงานหลายคนของฉันบอกว่าเซิร์ฟเวอร์ SQL ไม่ควรใช้แอปพลิเคชันดังกล่าว พวกเขาชอบ Oracle หรือ MySQL แทน

6
มันจะกลายเป็น overkill เมื่อใด
ก่อนอื่นฉันต้องขอโทษเพราะฉันไม่รู้วิธีสร้างชุมชนด้าย ดังนั้นมีคนช่วยฉันหน่อยได้ไหม ในฐานะผู้พัฒนาข้ามแพลตฟอร์มเทคโนโลยีและแม้แต่ในระดับโครงสร้างพื้นฐาน ฉันมักจะพบว่าตัวเองถามฉันจะทำอะไรมากเกินไปเมื่อไหร่! มันเป็นกระบวนการเรียนรู้ที่ไม่มีวันจบนับตั้งแต่ฉันเริ่มต้น สิ่งหนึ่ง (1) ที่ฉันเรียนรู้คือข้อกำหนดนั้นแทบจะไม่ถูกต้องเป็นระยะเวลานานและการมองการณ์ไกลเพียงเล็กน้อยอาจไปไกล แต่ความสมดุลอยู่ที่ไหนและคุณจะรู้ได้อย่างไรเมื่อคุณเสียเวลาไม่ได้รับมัน!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.