LETS กำลังฟื้นฟูชุมชนทั่วทั้งสหราชอาณาจักรในฐานะที่เป็นความคิดริเริ่มระดับรากหญ้าพวกเขาเปิดกว้างสำหรับทุกคนทุกเพศทุกวัยทักษะและความสามารถสมาคมและชุมชนในท้องถิ่นกลุ่มอาสาสมัครองค์กรการกุศลโครงการชุมชนที่อยู่อาศัยสหกรณ์ธุรกิจขนาดเล็กและบริการในประเทศต่างๆ เชื่อมต่อกับแหล่งข้อมูลใหม่ ๆ และค้นหาอัตลักษณ์ของชุมชนที่แท้จริง LETS ให้โอกาสที่เท่าเทียมกันแก่ทุกคนไม่ว่าจะเป็นคนหางานหรือว่างงานมีความมั่นคงทางการเงินหรือมีรายได้น้อย LETS สีดำหรือขาวสามารถหรือใช้งานได้โดยใช้ระบบเครดิตชุมชน การแลกเปลี่ยนโดยตรงไม่จำเป็นต้องทำคนได้รับสินเชื่อโดยการให้บริการและจากนั้นจะสามารถใช้เครดิตกับสิ่งที่คนอื่นเสนอในโครงการเช่นการดูแลเด็กการขนส่งอาหารการซ่อมแซมบ้านหรือการเช่าเครื่องมือและอุปกรณ์ การวิจัยในช่วงกลางทศวรรษที่ 1990 แสดงให้เห็นว่ามีผู้คนอย่างน้อย 40,000 คนเข้าร่วมโครงการ LETS จำนวน 450 โครงการซึ่งส่วนใหญ่จัดตั้งขึ้นตามระบอบประชาธิปไตยและความร่วมมือร่วมกัน operative LETS ซึ่งพัฒนาขึ้นในสหราชอาณาจักรโดย LETSLINK UK ซึ่งเริ่มดำเนินการในปีพศ. 2534 รายชื่อผู้ติดต่อปัจจุบันของเราที่มีจำนวนมากกว่า 300 คนระบุว่ามีการหดตัวบางส่วน - ถ้าเราบอกว่าสมาชิกเฉลี่ย 100 คนต่อโครงการนี้หมายถึงประมาณ 30,000 คนหรือน้อยกว่าในสหราชอาณาจักร อย่างไรก็ตามการดำเนินการดังกล่าวได้รับการเพิ่มขึ้นด้วยการริเริ่มที่เกี่ยวข้องเช่น Timebanks Freecycle Commercial Barter แคมเปญ Fairtrade และเครือข่ายชุมชนทุกประเภทซึ่งเป็นสิ่งยืนยันถึงความสนใจอย่างต่อเนื่องของผู้คนในการสร้างสิ่งต่างๆให้เกิดขึ้นในชุมชนของตน โครงการวิจัยต่อเนื่องซึ่งเปิดตัวในเดือนกันยายน พ. ศ. 2546 มีวัตถุประสงค์เพื่อสร้างสถานะปัจจุบันของ LETS ในสหราชอาณาจักรและความต้องการของผู้จัดงาน LETS ขณะนี้เรากำลังแสวงหาเงินทุนสนับสนุนที่สำคัญในการฟื้นฟูและสนับสนุนองค์กรของเราเพื่อให้เราสามารถจัดหาทรัพยากรที่ดียิ่งขึ้นแก่เรา สมาชิกและจะรายงานความคืบหน้าในหน้านี้ - ดูพื้นที่นี้รูปแบบการรวมรูปแบบการส่งข้อความในระบบการซื้อขายกรณีศึกษากรณีการซื้อขายตราสารหนี้ โดยโจนาธาน Simon. It เป็นเรื่องง่ายที่จะห่างตัวเองจากคอลเลกชันที่มีขนาดใหญ่ของรูปแบบหรือรูปแบบภาษารูปแบบที่เป็นนามธรรมของความคิดในรูปแบบนำมาใช้ใหม่บ่อยครั้งลักษณะทั่วไปมากของรูปแบบที่ทำให้พวกเขามีประโยชน์เพื่อยังทำให้พวกเขายากที่จะเข้าใจ บางครั้งสิ่งที่ดีที่สุดในการช่วยให้เข้าใจรูปแบบเป็นตัวอย่างของโลกแห่งความเป็นจริงไม่ใช่สถานการณ์ที่เกิดขึ้นจริง แต่สิ่งที่เกิดขึ้นจริงและสิ่งที่จะเกิดขึ้นบทนี้ใช้รูปแบบในการแก้ปัญหาโดยใช้กระบวนการค้นพบระบบที่เราจะกล่าวถึงคือการซื้อขายตราสารหนี้ ระบบที่ฉันทำงานด้วยเป็นเวลาสองปีตั้งแต่เริ่มออกแบบโดยการผลิตเราจะสำรวจสถานการณ์และปัญหาที่พบและวิธีแก้ปัญหาด้วยรูปแบบซึ่งเกี่ยวข้องกับกระบวนการตัดสินใจในการเลือกรูปแบบรวมถึงวิธีการรวมและปรับรูปแบบให้เหมาะสม ความต้องการของระบบและนี่คือทั้งหมดที่เกิดขึ้นโดยคำนึงถึงแรงที่พบในระบบจริงเช่นความต้องการทางธุรกิจการตัดสินใจของลูกค้า ar ข้อกำหนดทางสถาปัตยกรรมและทางเทคนิคเช่นเดียวกับการรวมระบบเดิมเจตนาของวิธีนี้คือการให้ความเข้าใจที่ชัดเจนของรูปแบบตัวเองผ่านการประยุกต์ใช้ในทางปฏิบัติการสร้างระบบธนาคารพาณิชย์ที่สำคัญ Wall Street กำหนดออกไปสร้างระบบการกำหนดราคาพันธบัตรใน ขณะนี้ผู้ค้าพันธบัตรต้องส่งมอบราคาสำหรับพันธบัตรจำนวนมากไปยังสถานที่ซื้อขายที่แตกต่างกันซึ่งแต่ละส่วนมีอินเตอร์เฟซผู้ใช้ของตนเองเป้าหมายของระบบคือการลดรายละเอียดของการกำหนดราคาทั้งหมดของ พันธบัตรของพวกเขารวมกับการทำงานวิเคราะห์ขั้นสูงที่เฉพาะเจาะจงไปยังตลาดพันธบัตรในส่วนติดต่อผู้ใช้แบบห่อหุ้มเดียวซึ่งหมายความว่าการผสานรวมและการสื่อสารกับคอมโพเน็นต์ต่างๆผ่านโปรโตคอลการสื่อสารต่างๆการไหลระดับสูงของระบบมีลักษณะเช่นนี้ประการแรกข้อมูลตลาดเข้ามาในระบบ ข้อมูลเป็นข้อมูลเกี่ยวกับราคาและคุณสมบัติอื่น ๆ ของพันธบัตรที่เป็นตัวแทนของสิ่งที่ผู้คนกำลัง willin g จะซื้อและขายพันธบัตรในตลาดเสรีข้อมูลการตลาดจะถูกส่งไปยังเครื่องมือวิเคราะห์ที่เปลี่ยนแปลงข้อมูล Analytics หมายถึงฟังก์ชันทางคณิตศาสตร์สำหรับแอ็พพลิเคชันทางการเงินที่เปลี่ยนแปลงราคาและคุณลักษณะอื่น ๆ ของพันธบัตรเหล่านี้เป็นฟังก์ชันทั่วไปที่ใช้อินพุต ตัวแปรที่จะปรับแต่งผลการทำงานให้เป็นพันธบัตรโดยเฉพาะแอ็พพลิเคชันไคลเอ็นต์ที่จะทำงานบนเดสก์ท็อปของผู้ค้าแต่ละรายจะกำหนดค่าเครื่องมือวิเคราะห์บนพื้นฐานของผู้ค้าแต่ละรายควบคุมข้อมูลเฉพาะของการวิเคราะห์สำหรับแต่ละพันธบัตรผู้ค้าจะได้รับการกำหนดราคาเมื่อวิเคราะห์แล้ว นำไปประยุกต์ใช้กับข้อมูลการตลาดข้อมูลที่แก้ไขจะถูกส่งออกไปยังสถานที่ซื้อขายต่างๆที่ผู้ค้าจาก บริษัท อื่นสามารถซื้อหรือขายพันธบัตรได้สถาปัตยกรรมที่มีรูปแบบด้วยภาพรวมของกระบวนการทำงานของระบบนี้เราสามารถนำปัญหาทางสถาปัตยกรรมบางอย่างมาใช้ เราพบในระหว่างขั้นตอนการออกแบบลองมาดูที่สิ่งที่เรารู้จนถึงปัจจุบันผู้ค้าต้องใช้แอพพลิเคชั่นที่ตอบสนองได้ดีทั้งบน Windows NT d Solaris workstations ดังนั้นเราจึงตัดสินใจที่จะใช้แอ็พพลิเคชันไคลเอ็นต์เป็นไคลเอนต์หนาของ Java เนื่องจากความเป็นอิสระของแพลตฟอร์มและความสามารถในการตอบสนองต่อข้อมูลผู้ใช้และข้อมูลการตลาดได้อย่างรวดเร็วทางด้านเซิร์ฟเวอร์เราจะสืบทอดองค์ประกอบ C แบบเดิมที่ระบบของเราจะใช้ คอมโพเนนต์ข้อมูลการตลาดสื่อสารกับ TIBCO Information Bus โครงสร้างการรับส่งข้อความ TIB เราสืบทอดองค์ประกอบต่อไปนี้ Data Market Data Data Feed Server เผยแพร่ข้อมูลตลาดขาเข้าให้กับ TIB. Analytics Engine ดำเนินการวิเคราะห์ข้อมูลตลาดขาเข้าและออกอากาศข้อมูลตลาดที่แก้ไขไป TIB. Contribution Server ดำเนินการติดต่อสื่อสารกับสถานที่เทรดดิ้งสถานที่จัดจำหน่ายเป็นส่วนประกอบของบุคคลที่สามที่ไม่ได้รับการควบคุมโดยธนาคาร LEGEMATSYS Market Data Subsystem. Legacy Contribution Subsystem เราจำเป็นต้องตัดสินใจว่าลูกค้าระบบสต๊อกข้อมูลตลาดข้อมูลและการมีส่วนร่วมของ Java แยกต่างหาก จะสื่อสารเราอาจมีลูกค้าหนาสื่อสารโดยตรงกับ le gacy servers แต่จะต้องใช้ตรรกะทางธุรกิจมากเกินไปในไคลเอ็นต์แทนเราจะสร้างคู่ของเกตเวย์ Java เพื่อสื่อสารกับเซิร์ฟเวอร์ระบบเดิมเกตเวย์กำหนดราคาสำหรับข้อมูลตลาด Gateway สำหรับการส่งราคาไปยังสถานที่จัดจำหน่ายซึ่งจะทำให้เกิดการห่อหุ้มที่ดี ของตรรกะทางธุรกิจที่เกี่ยวข้องกับพื้นที่เหล่านี้องค์ประกอบปัจจุบันในระบบจะแสดงด้านล่างการเชื่อมต่อที่ทำเครื่องหมายระบุว่าเรายังไม่แน่ใจว่าคอมโพเนนต์บางส่วนจะสื่อสารอย่างไรระบบและส่วนประกอบของมันคำถามแรกของการสื่อสารคือการผสานรวม ลูกค้า Java หนาและสองส่วนประกอบเซิร์ฟเวอร์ Java เพื่อแลกเปลี่ยนข้อมูล Let s ดูที่สี่รูปแบบการรวมที่แนะนำในหนังสือเล่มนี้ File Transfer Shared Database การเรียกขั้นตอนระยะไกลและ Messaging เราสามารถออกกฎ Shared Database ทันทีเพราะเราต้องการสร้างชั้นของ abstraction ระหว่างไคลเอ็นต์และฐานข้อมูลและ don t ต้องการมีรหัสการเข้าถึงฐานข้อมูลในไคลเอ็นต์ File Transfe r สามารถถูกตัดออกได้เนื่องจากจำเป็นต้องมีเวลาแฝงเล็กน้อยเพื่อให้แน่ใจว่าราคาปัจจุบันจะถูกส่งออกไปยังสถานที่จัดจำหน่ายสิ่งนี้ทำให้เราสามารถเลือกระหว่างการเรียกกระบวนการทางไกลหรือการรับส่งข้อความแพลตฟอร์ม Java ให้การสนับสนุนทั้งการเรียกกระบวนการขั้นตอนระยะไกลและการรับส่งข้อความ การรวมเข้ากับ RPC ทำได้โดยการใช้ RMI Method แบบรีโมต RBA, CORBA หรือ Enterprise Java Beans EJB Java Messaging Service JMS เป็น API ทั่วไปสำหรับการรวมระบบการส่งข้อความเข้าด้วยกันดังนั้นรูปแบบการรวมระบบจึงสามารถใช้งานได้ง่ายใน Java ดังนั้นจะสามารถทำงานได้ดีขึ้น สำหรับโปรเจ็กนี้ Remote Procedure Invocation หรือ Messaging มีเพียงหนึ่งอินสแตนซ์ของเกตเวย์กำหนดราคาและหนึ่งอินสแตนซ์ของ Contribution Gateway ในระบบ แต่โดยปกติลูกค้าหนามากจะเชื่อมต่อกับบริการเหล่านี้สำหรับผู้ค้าตราสารหนี้แต่ละรายที่เข้าสู่ระบบ ในเวลาใดเวลาหนึ่งนอกจากนี้ธนาคารต้องการให้เป็นระบบการกำหนดราคาทั่วไปที่สามารถนำมาใช้ประโยชน์ได้ในโปรแกรมอื่น ๆ นอกเหนือจากจำนวนลูกค้าที่ไม่รู้จัก Think อาจมีแอปพลิเคชันอื่น ๆ ที่ไม่รู้จักจำนวนมากที่ใช้ข้อมูลการคิดราคาที่ออกมาจากไคลเอ็นต์หนาเกตเวย์หรือแอปพลิเคชันอื่น ๆ ที่ใช้ข้อมูลราคาสามารถใช้ RPC เพื่อโทรไปที่เกตเวย์เพื่อรับ ข้อมูลการกำหนดราคาและเรียกใช้การประมวลผลอย่างไรก็ตามข้อมูลราคาจะมีการเผยแพร่ตลอดเวลาและลูกค้าบางรายสนใจเฉพาะข้อมูลบางอย่างเท่านั้นดังนั้นการรับข้อมูลที่เกี่ยวข้องกับลูกค้าที่เหมาะสมในเวลาที่เหมาะสมอาจเป็นเรื่องยากลูกค้าสามารถสำรวจเกตเวย์ แต่จะ สร้างค่าใช้จ่ายมากเกินไปเกตเวย์จะดีกว่าสำหรับเกตเวย์ที่จะทำให้ลูกค้าสามารถรับข้อมูลได้ทันทีที่สามารถใช้งานได้อย่างไรก็ตามระบบเกตเวย์นี้จะต้องติดตามลูกค้าที่ใช้งานอยู่ในปัจจุบันและต้องการข้อมูลใด จากนั้นเมื่อมีการสร้างข้อมูลใหม่ขึ้นซึ่งจะเกิดขึ้นหลายครั้งต่อวินาทีเกตเวย์จะต้องให้ RPC แก่ลูกค้าที่สนใจแต่ละรายเพื่อส่งข้อมูลไปยัง Clie nt ควรให้ลูกค้าทุกคนได้รับแจ้งพร้อม ๆ กันดังนั้นแต่ละ RPC จะต้องทำในเธรดพร้อม ๆ กันซึ่งสามารถทำงานได้ แต่มีความซับซ้อนมากขึ้นอย่างรวดเร็วข้อความส่วนใหญ่ช่วยลดปัญหานี้ได้ง่ายขึ้นด้วยการรับส่งข้อความเราสามารถกำหนดช่องแยกสำหรับประเภทต่างๆได้ ของข้อมูลราคาแล้วเมื่อเกตเวย์ได้รับข้อมูลใหม่จะเพิ่มข้อความที่มีข้อมูลดังกล่าวลงในช่องเผยแพร่ - สมัครสมาชิกสำหรับประเภทข้อมูลนั้นในขณะที่ลูกค้าทั้งหมดที่สนใจข้อมูลบางประเภทจะรับฟังในช่องทางสำหรับ ประเภทนี้ด้วยวิธีนี้เกตเวย์สามารถส่งข้อมูลใหม่ ๆ ไปให้คนที่สนใจได้โดยไม่จำเป็นต้องรู้ว่ามีแอพพลิเคชันฟังมากมายหรือสิ่งที่พวกเขาเป็นลูกค้ายังคงต้องสามารถเรียกใช้พฤติกรรมในเกตเวย์ได้เช่นกัน มีเพียงสองเกตเวย์เท่านั้นและไคลเอ็นต์อาจจะขัดขวางในขณะที่เมธอดถูกเรียกใช้แบบซิงโครนัสการติดต่อแบบไคลเอ็นต์กับเกตเวย์เหล่านี้สามารถทำได้โดยง่ายโดยใช้ RPC แต่เนื่องจากเรา กำลังใช้การรับส่งข้อความสำหรับการสื่อสารระหว่างเกตเวย์กับไคลเอ็นต์ข้อความอาจเป็นวิธีที่ดีในการใช้การติดต่อสื่อสารแบบไคลเอ็นต์กับเกตเวย์ด้วยเช่นกันดังนั้นการสื่อสารทั้งหมดระหว่างเกตเวย์กับลูกค้าจะทำได้ผ่านการรับส่งข้อความเนื่องจากทั้งหมดนี้ คอมโพเนนต์ถูกเขียนขึ้นในภาษาจาวา JMS นำเสนอทางเลือกที่ง่ายสำหรับการเป็นระบบการรับส่งข้อความนี่คือการสร้างข้อความบัสหรือสถาปัตยกรรมที่จะช่วยให้ระบบในอนาคตสามารถทำงานร่วมกับระบบในปัจจุบันได้โดยไม่ต้องมีการเปลี่ยนแปลงโครงสร้างการรับส่งข้อความเพียงเล็กน้อยหรือไม่มีเลย วิธีการทำงานทางธุรกิจของโปรแกรมสามารถใช้งานได้ง่ายโดยโปรแกรมประยุกต์อื่น ๆ ที่ธนาคารพัฒนาคอมโพเนนต์ Java Communicating with JMS. JMS เป็นเพียงข้อกำหนดและเราจำเป็นต้องตัดสินใจเกี่ยวกับระบบการส่งข้อความที่สอดคล้องกับ JMS เราตัดสินใจที่จะใช้ IBM MQSeries JMS เนื่องจาก ธนาคารเป็นร้านค้าของ IBM โดยใช้เซิร์ฟเวอร์แอ็พพลิเคชัน WebSphere และผลิตภัณฑ์ IBM อื่น ๆ ดังนั้นเราจะใช้ MQSeries เนื่องจากเราได้รับบริการแล้ว ave โครงสร้างพื้นฐานการสนับสนุนในสถานที่และใบอนุญาตเว็บไซต์ของผลิตภัณฑ์คำถามต่อไปคือวิธีการเชื่อมต่อระบบการส่งข้อความ MQSeries กับเซิร์ฟเวอร์ C Contribute แบบสแตนด์อโลนและ TIBCO ข้อมูลตลาดที่ใช้และเซิร์ฟเวอร์เครื่องยนต์ Analytics เราต้องการวิธีการสำหรับผู้บริโภค MQSeries มีการเข้าถึงข้อความ TIB แต่อย่างไรบางทีเราอาจใช้รูปแบบข้อความนักแปลเพื่อแปลข้อความ TIB เป็นข้อความ MQSeries แม้ว่าไคลเอ็นต์ C สำหรับ MQSeries ทำหน้าที่เป็น Message Translator โดยใช้มันจะเสียสละความเป็นอิสระของ JMS server และถึงแม้ว่า TIBCO จะมี Java API, สถาปนิกลูกค้าและผู้จัดการได้ปฏิเสธมันดังนั้นวิธีการ Message Translator จึงต้องถูกยกเลิกไปสะพานที่เชื่อมต่อจากเซิร์ฟเวอร์ TIB ไปยังเซิร์ฟเวอร์ MQSeries จำเป็นต้องมีการสื่อสารระหว่าง C กับ Java เราสามารถใช้ CORBA ได้ แต่แล้วสิ่งที่เกี่ยวกับการส่งข้อความเข้ามาใกล้ ดูรูปแบบข้อความนักแปลที่แสดงว่าเกี่ยวข้องกับ Channel Adaptor ในการใช้โปรโตคอลการสื่อสารหัวใจของช่อง อะแดปเตอร์คือการเชื่อมต่อระบบที่ไม่ใช่ข้อความเข้ากับระบบการรับส่งข้อความคู่ของอะแดปเตอร์ช่องสัญญาณที่เชื่อมต่อระบบส่งข้อความสองระบบคือสะพานข้อความวัตถุประสงค์ของสะพาน Messaging คือการถ่ายโอนข้อความจากระบบการรับส่งข้อความหนึ่งไปยังอีกระบบหนึ่งนั่นคือสิ่งที่เรากำลังทำอยู่ ความซับซ้อนที่เพิ่มขึ้นของการสื่อสารภายใน Java Java กับ C เราสามารถใช้สะพาน Messaging Messaging แบบ cross language โดยใช้ Channel Adapter s และ CORBA เราจะสร้างเซิร์ฟเวอร์ Adapter Adapters 2 ช่องที่มีน้ำหนักเบาหนึ่งใน C ที่จัดการการสื่อสารกับ TIB และอีกหนึ่งช่อง Java สื่อสารการจัดการกับ JMS ทั้งสอง Channel Adaptor ซึ่งเป็น Message Endpoint ของตัวเองจะสื่อสารกันผ่านทาง CORBA เช่นเดียวกับทางเลือกของเราสำหรับ MQSeries เราจะใช้ CORBA แทน JNI เนื่องจากเป็นมาตรฐานของ บริษัท สะพานส่งข้อความจะใช้ข้อความจำลองที่มีประสิทธิภาพ การแปลระหว่างระบบการรับส่งข้อความที่เข้ากันไม่ได้และภาษาอื่น ๆ นักแปลข้อความโดยใช้ Adapte Channel แผนภาพถัดไปแสดงการออกแบบระบบในปัจจุบันรวมถึงเกตเวย์และส่วนประกอบอื่น ๆ นี่คือตัวอย่างที่ดีของแอ็พพลิเคชันรูปแบบเราได้รวมเอาอะแดปเตอร์ระบบสองช่องเข้ากับโปรโตคอลที่ไม่ใช่ข้อความเพื่อใช้รูปแบบข้อความนักแปลซึ่งมีประสิทธิภาพในการใช้รูปแบบหนึ่งเพื่อใช้งานอื่น นอกจากนี้เราเปลี่ยนบริบทของ Channel Adaptor เพื่อเชื่อมโยงระบบข้อความสองระบบเข้ากับโปรโตคอลการแปลข้ามภาษาที่ไม่ใช่ข้อความแทนที่จะเชื่อมต่อระบบการรับส่งข้อความไปยังระบบข้อความที่ไม่ใช่ข้อความระบบปัจจุบันที่มี Channel Adapters. Structuring Channels. A key การทำงานกับรูปแบบไม่ได้เป็นเพียงการรู้ว่าควรใช้รูปแบบใด แต่ต้องใช้อย่างมีประสิทธิภาพมากที่สุดการใช้รูปแบบแต่ละอย่างจะต้องคำนึงถึงเฉพาะด้านบัญชีของแพลตฟอร์มเทคโนโลยีและเกณฑ์การออกแบบอื่น ๆ ส่วนนี้ใช้กระบวนการค้นพบเดียวกันเพื่อค้นหา การใช้ช่องทางเผยแพร่ - ลงทะเบียนที่มีประสิทธิภาพมากที่สุดในบริบทของเซิร์ฟเวอร์ข้อมูลตลาดที่สื่อสารกับ t เขาเป็นเครื่องมือวิเคราะห์ข้อมูลตลาดเรียลไทม์มาพร้อมกับฟีดข้อมูลตลาดเซิร์ฟเวอร์ C ที่เผยแพร่ข้อมูลตลาดใน TIB ฟีดข้อมูลตลาดใช้ช่องทางเผยแพร่ - สมัครสมาชิกแยกต่างหากสำหรับแต่ละพันธบัตรเป็นราคาที่เผยแพร่นี้อาจดูเหมือนเล็กน้อยนับตั้งแต่ แต่ละพันธบัตรใหม่ต้องใช้ช่องทางใหม่ของตัวเอง แต่นี่ไม่ใช่เรื่องรุนแรงมากนักเนื่องจากคุณไม่จำเป็นต้องสร้างช่องใน TIBCO แต่ช่องทางต่างๆจะถูกอ้างอิงโดยชุดชื่อหัวข้อที่เรียกว่าวิชาเซิร์ฟเวอร์ TIBCO จะกรองการไหลของข้อความเดี่ยวตามหัวข้อ , การส่งแต่ละเรื่องที่ไม่ซ้ำกันไปช่องทางเสมือนเดียวผลของการที่มีช่องทางข้อความที่มีน้ำหนักเบามากเราสามารถสร้างระบบที่เผยแพร่ในไม่กี่ช่องทางและสมาชิกสามารถฟังเฉพาะสำหรับราคาที่พวกเขามีความสนใจในนี้จะต้องมีสมาชิกที่จะใช้ กรองข้อความหรือผู้บริโภคเลือกที่จะกรองการไหลของข้อมูลทั้งหมดสำหรับราคาพันธบัตรที่น่าสนใจตัดสินใจว่าข้อความแต่ละควรได้รับการประมวลผลตามที่ได้รับระบุว่า th e ข้อมูลตลาดถูกเผยแพร่ในช่องทุ่มเทพันธบัตรสมาชิกสามารถลงทะเบียนสำหรับการปรับปรุงในชุดของพันธบัตรนี้ได้อย่างมีประสิทธิภาพช่วยให้สมาชิกสามารถกรองโดยเลือกรับสมัครช่องและได้รับการปรับปรุงความสนใจมากกว่าการตัดสินใจหลังจากที่ได้รับข้อความเป็นสิ่งสำคัญที่ โปรดทราบว่าการใช้ช่องสัญญาณหลายช่องเพื่อหลีกเลี่ยงการกรองคือการใช้ช่องทางการรับส่งข้อความที่ไม่เป็นไปตามมาตรฐานอย่างไรก็ตามในบริบทของเทคโนโลยี TIBCO เรากำลังตัดสินใจว่าจะใช้หรือเป็นเจ้าของตัวกรองหรือใช้ช่องกรองที่มีอยู่ภายใน TIBCO แทนหรือไม่ว่าจะใช้จำนวนมากหรือไม่ channel องค์ประกอบต่อไปที่เราต้องออกแบบคือเครื่องมือการวิเคราะห์เซิร์ฟเวอร์ CIB อีกเครื่องหนึ่งที่จะแก้ไขข้อมูลการตลาดและเผยแพร่ใหม่ให้กับ TIB แม้ว่าจะอยู่นอกขอบเขตของการพัฒนา Java JMS ของเราเรากำลังทำงานอย่างใกล้ชิดกับ C ทีมออกแบบมาตั้งแต่เราเป็นลูกค้าหลักของ Analytics หลักปัญหาในมือก็คือการหาโครงสร้างช่องทางที่มีประสิทธิภาพมากที่สุด rebroadcas t ข้อมูลตลาดที่แก้ไขใหม่เนื่องจากเรามีช่องข้อความเฉพาะสำหรับหนึ่งพันธบัตรที่รับมาจากฟีดข้อมูลราคาตลาดแล้วจึงเป็นเรื่องที่ควรปรับเปลี่ยนข้อมูลตลาดและเผยแพร่ข้อมูลตลาดใหม่ที่แก้ไขเกี่ยวกับพันธบัตรโดยเฉพาะช่องข้อความ แต่จะไม่เป็นเช่นนั้น ทำงานตั้งแต่การวิเคราะห์การปรับราคาพันธบัตรเป็นการค้าเฉพาะถ้าเราเผยแพร่ข้อมูลใหม่ที่แก้ไขในช่องข้อความพันธบัตรเราจะทำลายความสมบูรณ์ของข้อมูลโดยการแทนที่ข้อมูลตลาดทั่วไปกับข้อมูลเฉพาะของพ่อค้าในทางกลับกันเราอาจมีประเภทข้อความที่แตกต่างออกไป ข้อมูลตลาดที่เฉพาะเจาะจงของผู้ค้าที่เราเผยแพร่ในช่องทางเดียวกันเพื่อให้สมาชิกสามารถตัดสินใจว่าข้อความใดที่พวกเขาสนใจเพื่อหลีกเลี่ยงการทำลายความสมบูรณ์ของข้อมูล แต่ลูกค้าจะต้องใช้ตัวกรองของตนเองในการแยกข้อความสำหรับผู้ค้ารายอื่น ๆ นอกจากนี้จะมีสาระสำคัญ เพิ่มข้อความที่ได้รับจากสมาชิกโดยวางภาระที่ไม่จำเป็นให้กับพวกเขามีสองตัวเลือกหนึ่งช่อง ผู้ประกอบการค้าแต่ละรายมีช่องทางที่กำหนดสำหรับข้อมูลตลาดที่มีการเปลี่ยนแปลงด้วยวิธีนี้ข้อมูลตลาดเดิมยังคงเหมือนเดิมและผู้ค้ารายย่อยแต่ละรายสามารถรับฟังช่องทางการค้าที่เฉพาะเจาะจงได้ช่องข้อความสำหรับการปรับปรุงราคาที่ปรับปรุงแล้วช่องทางเดียวต่อผู้ค้าต่อพันธบัตรสร้างช่องข้อความหนึ่งช่อง ตัวอย่างเช่นข้อมูลตลาดสำหรับตราสารหนี้ ABC จะเผยแพร่บนช่อง Bond ABC ในขณะที่ข้อมูลตลาดที่ปรับเปลี่ยนสำหรับผู้ค้า A จะเผยแพร่บน Trader A Message Message B, Bond ABC แก้ไขข้อมูลการตลาดสำหรับ Trader B บน Trader B, Bond ABC และอื่น ๆ หนึ่งช่องต่อ Trader. One ช่องต่อพันธบัตรแต่ละ trader. There เป็นข้อดีและข้อเสียของแต่ละวิธีวิธีการต่อพันธบัตรตัวอย่างเช่นใช้มาก เพิ่มเติมช่องข้อความในกรณีที่เลวร้ายที่สุดจำนวนช่องข้อความจะเป็นจำนวนพันธบัตรทั้งหมดคูณด้วยจำนวนผู้ค้าเราสามารถวางขอบเขตบนจำนวนช่องที่จะสร้างขึ้นตั้งแต่ เรารู้ว่ามีเพียงประมาณ 20 ผู้ค้าและพวกเขาไม่เคยราคาสูงกว่าสองร้อยพันธบัตรซึ่งจะทำให้วงเงินด้านบนต่ำกว่าช่วง 10,000 ซึ่งไม่แปลกที่เมื่อเทียบกับช่องข้อความเกือบ 100,000 ข้อมูลฟีดข้อมูลราคาตลาดกำลังใช้อยู่ เนื่องจากเราใช้ TIB และ Message Channel ค่อนข้างมีราคาไม่แพงจำนวนช่องข้อความจึงเป็นปัญหาที่ร้ายแรงในทางกลับกันจำนวนแชแนลข้อความที่แท้จริงอาจเป็นปัญหาจากมุมมองด้านการจัดการทุกครั้งที่มีการเพิ่มพันธบัตร ต้องมีการรักษาช่องทางสำหรับผู้ประกอบการแต่ละรายไว้ซึ่งอาจเป็นเรื่องรุนแรงในระบบพลวัตที่มีอยู่จริงระบบของเรามีความเป็นไปได้อย่างมากนอกจากนี้ยังมีโครงสร้างพื้นฐานสำหรับการจัดการช่องข้อความด้วยโดยอัตโนมัติรวมกับสถาปัตยกรรมที่สืบทอดมาจากองค์ประกอบเดิมที่ใช้วิธีการเดียวกัน ลดข้อเสียไม่ได้หมายความว่าเราควรสร้างช่องทางข้อความให้มากเกินไปโดยไม่จำเป็นเราสามารถใช้แนวทางสถาปัตยกรรมที่ใช้ จำนวนของช่องข้อความเมื่อมีเหตุผลและมีเหตุผลในกรณีนี้ซึ่งจะมาถึงที่ตั้งของตรรกะหากเราใช้วิธีการต่อผู้ค้าแต่ละราย Analytics Engine จะต้องมีตรรกะเพื่อจัดกลุ่มช่องสัญญาณเข้าและออกเพราะเหตุนี้ แชแนลการรับข้อมูลจาก Analytics Engine จะเป็นต่อหนึ่งพันธบัตรและช่องข้อความขาออกจะเป็นต่อผู้ขายโดยกำหนดให้ Analytics Engine กำหนดเส้นทางการป้อนข้อมูลการวิเคราะห์ทั้งหมดจากหลายสตอเรจสำหรับผู้ค้ารายย่อยเพื่อให้เฉพาะเจาะจงกับผู้ส่งมอบข้อความช่องนี้จะเปลี่ยนเครื่องมือวิเคราะห์ได้อย่างมีประสิทธิภาพ ลงใน Content-Based Router เพื่อใช้ตรรกะการกำหนดเส้นทางที่กำหนดเองสำหรับแอ็พพลิเคชันของเราหลังจากดำเนินการโครงสร้างข้อความบัสแล้ว Analytics Engine จะเป็นเซิร์ฟเวอร์ทั่วไปที่สามารถใช้งานได้โดยระบบอื่น ๆ ในระบบดังนั้นเราจึงไม่ต้องการให้ระบบคลาวด์ทำงานโดยเฉพาะ ในขณะที่วิธีการต่อพันธบัตรทำงานได้เนื่องจากความคิดของผู้ค้าที่เป็นเจ้าของการวิเคราะห์ผลลัพธ์ของราคาพันธบัตรเป็น บริษัท ที่ยอมรับการปฏิบัติพันธบัตรต่อ pproach ช่วยให้การแยกช่องทางข้อความของฟีดข้อมูลตลาดเหมือนเดิมในขณะที่เพิ่มช่องข้อความอีกหลายช่องก่อนที่เราจะเข้าถึงไคลเอ็นต์เราต้องการให้ Content-Based Router รวมช่องหลายช่องเหล่านี้ไว้ในช่องที่สามารถจัดการได้เราไม่ต้องการให้ไคลเอ็นต์ แอพพลิเคชันที่ทำงานบนเดสก์ท็อปของ Trader เพื่อรับฟังข้อความนับพันหรือหมื่นนับพันช่องข้อความเดี๋ยวนี้กลายเป็นคำถามที่จะนำเราเตอร์ Content-Based เราสามารถมี C TIB Channel Adaptor ส่งต่อข้อความทั้งหมดไปยังเกตเวย์กำหนดราคา ในช่องข้อความเดียวสิ่งนี้ไม่ดีเนื่องจากเหตุผลสองประการที่เราจะแยกเหตุผลทางธุรกิจระหว่าง C กับ Java และเราจะสูญเสียประโยชน์จากช่องข้อความที่แยกจากกันในฝั่ง TIB ซึ่งทำให้เราสามารถหลีกเลี่ยงการกรองข้อมูลในภายหลังได้ มองไปที่ส่วนประกอบ Java ของเราเราสามารถวางไว้ในเกตเวย์ราคาหรือสร้างองค์ประกอบที่เป็นตัวกลางระหว่างเกตเวย์ราคากับลูกค้าในทางทฤษฎีถ้าเรายังคงพันธบัตร การกำหนดช่องทางของ Message Channel ไปยังไคลเอ็นต์เกตเวย์ราคาจะเผยแพร่ข้อมูลการกำหนดราคาใหม่ด้วยโครงสร้างช่องเดียวกับเกตเวย์ราคาและเครื่องมือ Analytics ซึ่งหมายความว่าการทำสำเนาของช่อง TIB ทั้งหมดที่ผูกไว้ใน JMS จะเป็นไปอย่างต่อเนื่องแม้ว่าเราจะทำซ้ำ สร้างส่วนที่เป็นตัวกลางระหว่างเกตเวย์การกำหนดราคาและไคลเอ็นต์เกตเวย์กำหนดราคาจะยังคงต้องทำซ้ำแชแนลทั้งหมดใน JMS ด้วยเหตุนี้การใช้ตรรกะโดยตรงในเกตเวย์ราคาจะช่วยให้เราสามารถหลีกเลี่ยงการทำซ้ำหลายช่องใน JMS ได้ ทำให้เราสามารถสร้างช่องทางที่มีขนาดเล็กลงได้ตามลำดับหนึ่งตัวต่อผู้ค้าปลีก Gateway กำหนดราคาจะลงทะเบียนตัวเองผ่าน C TIB Channel Adaptor เป็นผู้บริโภคสำหรับพันธบัตรของผู้ประกอบการค้าแต่ละรายในระบบแล้ว Gateway ราคาจะส่งต่อเฉพาะลูกค้าแต่ละรายเท่านั้น ข้อความที่เกี่ยวข้องกับผู้ค้ารายนั้นด้วยวิธีนี้เราจะใช้เพียงช่องข้อความขนาดเล็กจำนวนเล็กน้อยในส่วนท้ายของ JMS และเพิ่มจำนวนเบน ผลของการแยกออกจากปลาย TIB ข้อมูลการตลาดที่สมบูรณ์แบบให้กับลูกค้าการอภิปรายโครงร่างช่องทางข้อความเป็นตัวอย่างที่ดีว่ารูปแบบการรวมเป็นสิ่งสำคัญเป้าหมายที่นี่คือการหาวิธีใช้ช่องข้อความได้อย่างมีประสิทธิภาพ Saying you ใช้รูปแบบไม่เพียงพอคุณจำเป็นต้องคิดวิธีการใช้งานที่ดีที่สุดและรวมไว้ในระบบของคุณเพื่อแก้ปัญหาในมือนอกจากนี้ตัวอย่างนี้แสดงให้เห็นถึงกองกำลังทางธุรกิจในการดำเนินการหากเราสามารถใช้ตรรกะทางธุรกิจในองค์ประกอบใด ๆ ของเราได้ ได้ไปกับวิธีการต่อผู้ค้าแต่ละรายและใช้แนวทางที่เรียบง่ายโดยรวมกับช่องทางที่น้อยลงเลือกช่องข้อความตอนนี้เรารู้กลไกการสื่อสารระหว่างส่วนประกอบ Java JMS กับคอมโพเนนต์ C TIBCO และเราได้เห็นข้อความบางอย่าง การจัดโครงสร้างแชแนลเราต้องตัดสินใจว่า JMS Message Channel ประเภทใดของ Java Component ควรใช้เพื่อสื่อสารก่อนที่เราจะสามารถเลือกระหว่างช่องข้อความต่างๆได้จาก ailable ใน JMS ให้ดูที่การไหลของข้อความในระดับสูงของระบบเรามีเกตเวย์สองราคาและการมีส่วนร่วมในการสื่อสารกับลูกค้าข้อมูลการตลาดของลูกค้าไปยังลูกค้าจากเกตเวย์ราคาซึ่งจะส่งออกไปยังเกตเวย์ Contribution แอ็พพลิเคชันไคลเอ็นต์จะส่งข้อความ ไปยังเกตเวย์การกำหนดราคาเพื่อปรับเปลี่ยนการวิเคราะห์ที่ใช้กับแต่ละพันธบัตรเกตเวย์ของ Contribution Gateway จะส่งข้อความไปยังแอพพลิเคชันไคลเอ็นต์เพื่อถ่ายทอดสถานะการอัพเดทราคาไปยังระบบการซื้อขายที่แตกต่างกันการไหลของข้อความระบบข้อกำหนด JMS ระบุถึงประเภทช่องข้อความ การจัดคิว JMS ของจุดต่อจุดและเผยแพร่ - ลงทะเบียนหัวข้อ JMS เรื่องการเรียกคืนกรณีที่การใช้งาน publish-subscribe คือการทำให้ผู้บริโภคที่สนใจทุกคนได้รับข้อความขณะที่กรณีใช้ point-to-point คือเพื่อให้แน่ใจว่ามีเพียงคนเดียวเท่านั้น ผู้บริโภคที่มีสิทธิ์ได้รับข้อความใด ๆ โดยเฉพาะระบบต่างๆจะออกอากาศข้อความไปยังแอปพลิเคชันไคลเอ็นต์ทั้งหมดโดยอัตโนมัติ ตัดสินใจเองหรือไม่ว่าจะประมวลผลข้อความใดข้อความหนึ่งนี้จะไม่ทำงานสำหรับแอ็พพลิเคชันของเราเนื่องจากมีข้อมูลตลาดจำนวนมากถูกส่งไปยังแอปพลิเคชันไคลเอ็นต์แต่ละเครื่องถ้าเราเผยแพร่ข้อมูลตลาดให้กับผู้ค้าที่ไม่สนใจเราจะเสียเวลาโดยไม่จำเป็น ไคลเอนต์โปรเซสเซอร์รอบการตัดสินใจหรือไม่ที่จะประมวลผลข้อมูลตลาด updatePoint-to-Point Channel เริ่มต้นเสียงเหมือนทางเลือกที่ดีเนื่องจากไคลเอ็นต์กำลังส่งข้อความไปยังเซิร์ฟเวอร์ที่ไม่ซ้ำกันและกลับกัน แต่มันเป็นความต้องการทางธุรกิจที่ traders อาจถูกบันทึกไว้ ในเครื่องหลาย ๆ เครื่องในเวลาเดียวกันหากเรามีผู้ค้าที่เข้าสู่ระบบที่เวิร์คสเตชั่นสองเครื่องพร้อมกันและมีการอัพเดทการอัพเดทราคาแบบจุดต่อจุดจะมีเพียงแอพพลิเคชันไคลเอ็นต์หนึ่งแอพพลิเคชันสองเครื่องเท่านั้นที่จะได้รับข้อความเนื่องจากผู้บริโภคเพียงรายเดียวใน ช่อง Point-to-Point สามารถรับข้อความเฉพาะได้สังเกตเห็นว่าเฉพาะลูกค้ากลุ่มแรกที่ได้รับข้อความเท่านั้น Point-to-Point Messaging for Pri ce Updates ซึ่งเราสามารถแก้ปัญหานี้โดยใช้รูปแบบรายชื่อผู้รับซึ่งเผยแพร่ข้อความไปยังรายชื่อผู้รับที่ต้องการซึ่งรับประกันว่าเฉพาะลูกค้าในรายชื่อผู้รับเท่านั้นที่จะได้รับข้อความโดยใช้รูปแบบนี้ระบบสามารถสร้างรายชื่อผู้รับกับอินสแตนซ์ของแอ็พพลิเคชันไคลเอ็นต์ทั้งหมดที่เกี่ยวข้องได้ การส่งข้อความที่เกี่ยวข้องกับผู้ค้ารายใดรายหนึ่งจะส่งข้อความไปยังแต่ละแอ็พพลิเคชันในรายชื่อผู้รับซึ่งจะรับประกันได้ว่ากรณีแอปพลิเคชันไคลเอ็นต์ทั้งหมดที่เกี่ยวข้องกับผู้ค้ารายหนึ่งจะได้รับข้อความข้อเสียของวิธีนี้คือต้องใช้ bit ของตรรกะในการดำเนินการเพื่อจัดการกับผู้รับและส่งข้อความรายชื่อผู้รับสำหรับการอัพเดทราคาแม้ว่าจะมีจุดต่อจุดที่สามารถใช้งานได้ลองดูว่ามีวิธีที่ดีกว่าการใช้ Publish-Subscribe Channel s ระบบสามารถทำได้หรือไม่ ออกอากาศข้อความบนช่องทางเฉพาะของผู้ค้าปลีกมากกว่าช่องทางเฉพาะของแอปพลิเคชันไคลเอ็นต์ด้วยวิธีนี้แอพพลิเคชันไคลเอ็นต์ทั้งหมดจะประมวลผลข้อความ สำหรับผู้ค้ารายเดียวจะได้รับและประมวลผลข้อความ Subscription-Subscription Messaging สำหรับการอัพเดทราคาข้อเสียของการใช้ Publish-Subscription Channel s คือการประมวลผลข้อความที่ไม่ซ้ำกันจะไม่ได้รับการรับประกันกับส่วนประกอบของเซิร์ฟเวอร์จะเป็นไปได้สำหรับอินสแตนซ์ต่างๆของเซิร์ฟเวอร์ คอมโพเนนต์จะ instantiated และแต่ละอินสแตนซ์ประมวลผลข้อความเดียวกันอาจส่งออกราคาที่ไม่ถูกต้องการเรียกคืนการไหลของข้อความของระบบทิศทางการสื่อสารเพียงอย่างเดียวเป็นที่น่าพอใจกับการสื่อสารแต่ละ Message Channel Server - to - client กับ publish - subscribe เป็นที่น่าพอใจในขณะที่ client - การสื่อสารกับเซิร์ฟเวอร์ไม่ใช่การสื่อสารแบบ client-server กับจุดต่อจุดเป็นที่น่าพอใจในขณะที่เซิร์ฟเวอร์ไคลเอ็นต์ไม่ใช่เนื่องจากไม่จำเป็นต้องใช้ช่องข้อความเดียวกันในทั้งสองทิศทางเราจึงสามารถใช้ช่องข้อความแต่ละช่องได้เพียงทิศทางเดียว การสื่อสารกับเซิร์ฟเวอร์จะดำเนินการกับจุดต่อจุดในขณะที่การสื่อสารระหว่างเซิร์ฟเวอร์กับไคลเอ็นต์จะดำเนินการกับการเผยแพร่การสมัครรับข้อมูล การใช้การรวมกันของ Message Channel s นี้ระบบจะได้รับประโยชน์จากการสื่อสารโดยตรงกับส่วนประกอบเซิร์ฟเวอร์โดยใช้การส่งข้อความแบบจุดต่อจุดและลักษณะแบบหลายผู้รับของการเผยแพร่โดยไม่ต้องเสียค่าใช้จ่ายใด ๆ การรับส่งข้อความด้วย Channel Types การแก้ปัญหาด้วยรูปแบบ รูปแบบเป็นเครื่องมือและคอลเลกชันของรูปแบบเป็นกล่องเครื่องมือช่วยแก้ปัญหาบางคนคิดว่ารูปแบบมีประโยชน์เฉพาะในระหว่างการออกแบบต่อไปนี้เป็นเหมือนเครื่องมือที่มีประโยชน์เฉพาะเมื่อคุณสร้างบ้านไม่ใช่เมื่อคุณแก้ไขปัญหาความจริงก็คือ รูปแบบที่เป็นเครื่องมือที่มีประโยชน์ตลอดโครงการเมื่อใช้อย่างดีในส่วนต่อไปนี้เราจะใช้กระบวนการสำรวจรูปแบบเดียวกันกับที่เราใช้ในส่วนก่อนหน้าเพื่อแก้ปัญหาในระบบที่เรากำลังทำงานอยู่นี้การอัปเดตข้อมูลการอัปเดตของตลาดอย่างเร่งด่วนผู้ให้บริการต้องการให้เซลล์ในตารางกะพริบ เมื่อมีการรับข้อมูลตลาดใหม่สำหรับพันธบัตรโดยระบุการเปลี่ยนแปลงอย่างชัดเจนไคลเอ็นต์ Java จะได้รับข้อความที่มีข้อมูลใหม่ซึ่งจะเรียกข้อมูลลูกค้า ca che ปรับปรุงและกระพริบในที่สุดตารางปัญหาคือการปรับปรุงมาค่อนข้างบ่อยสแต็คเธรด GUI จะกลายเป็นมากเกินไปและแช่แข็งในที่สุดลูกค้าเนื่องจากไม่สามารถตอบสนองต่อปฏิสัมพันธ์ของผู้ใช้เราจะสมมติว่ากระพริบจะเพิ่มประสิทธิภาพและมีสมาธิในการไหลของข้อมูล ของข้อความผ่านขั้นตอนการอัพเดตการตรวจสอบข้อมูลประสิทธิภาพแสดงให้เห็นว่าแอ็พพลิเคชันไคลเอ็นต์ได้รับการอัปเดตหลายครั้งขึ้นเป็นครั้งที่สองการอัปเดตบางอย่างเกิดขึ้นน้อยกว่ามิลลิวินาทีนอกจากรูปแบบที่ดูเหมือนว่าจะช่วยชะลอการไหลของข้อความคือ Aggregator และ Message Filter แรก คิดว่าจะใช้ตัวกรองข้อความเพื่อควบคุมความเร็วของการส่งข้อความโดยการโยนข้อมูลอัปเดตที่ได้รับเป็นระยะเวลาสั้น ๆ หลังจากข้อความอ้างอิงตัวอย่างเช่นสมมติว่าเราจะละเว้นข้อความภายใน 5 มิลลิวินาทีซึ่งกันและกัน ตัวกรองสามารถแคชเวลาของข้อความที่ยอมรับได้ล่าสุดและโยนอะไรก็ได้ภายใน 5 มิลลิวินาทีต่อไป nds ในขณะที่แอ็พพลิเคชันอื่น ๆ อาจไม่สามารถทนต่อการสูญเสียข้อมูลในขอบเขตดังกล่าวนี้เป็นที่ยอมรับได้อย่างสมบูรณ์ในระบบของเราเนื่องจากความถี่ของการอัพเดตราคา Time Based Message Filter ปัญหานี้ไม่ได้มีการปรับปรุงเขตข้อมูลทั้งหมด ในเวลาเดียวกันแต่ละพันธบัตรมีประมาณ 50 เขตข้อมูลที่แสดงให้กับผู้ใช้รวมทั้งราคาเราตระหนักดีว่าไม่ทุกเขตข้อมูลมีการปรับปรุงในทุกข้อความถ้าระบบละเว้นข้อความติดต่อกันอาจดีมากที่จะโยนออกข้อมูลที่สำคัญรูปแบบอื่น ๆ ที่น่าสนใจ Aggregator Aggregator ใช้ในการจัดการการกระทบยอดของข้อความที่เกี่ยวข้องหลายข้อความลงในข้อความเดียวซึ่งอาจช่วยลดการไหลของข้อความ Aggregator สามารถเก็บสำเนาข้อมูลพันธบัตรจากข้อความที่รวบรวมไว้ก่อนจากนั้นจึงอัปเดตเฉพาะฟิลด์ใหม่หรือที่เปลี่ยนแปลงต่อเนื่องเท่านั้น ข้อความในที่สุดข้อมูลพันธบัตรที่รวบรวมจะถูกส่งผ่านไปในข้อความถึงตอนนี้สมมติว่า Aggregator จะส่งข้อความทุกๆ 5 ล้าน liseconds เช่นตัวกรองข้อความในภายหลังเราจะสำรวจ another. Aggregator อื่นที่มีการปรับปรุง aggregative ต่อเนื่องบางส่วนเช่นรูปแบบอื่น ๆ ไม่ได้เป็น bullet เงินที่มี pluses และ minuses ที่ต้องสำรวจหนึ่งศักยภาพลบคือการใช้ Aggregator จะลดปริมาณการรับส่งข้อความโดยจำนวนมากในกรณีของเราเฉพาะในกรณีที่มีข้อความจำนวนมากเข้ามาภายในระยะเวลาอันสั้นเกี่ยวกับพันธบัตรเดียวกันในทางกลับกันเราจะไม่ได้อะไรถ้าไคลเอ็นต์ Java ได้รับการอัปเดตสำหรับฟิลด์ใดฟิลด์หนึ่งในทั้งหมดเท่านั้น ผู้ค้าพันธบัตรตัวอย่างเช่นถ้าเราได้รับ 1000 ข้อความในระยะเวลาที่กำหนดโดยมี 4 พันธบัตรที่น่าสนใจเราจะลดการไหลของข้อความจาก 1000 เป็น 4 ข้อความในช่วงเวลานั้นหรือถ้าเราได้รับข้อความ 1000 ข้อความในระยะเวลาเดียวกันโดยมีพันธะ 750 interest, we will have reduced the message flow from 1000 to 750 messages relatively little gain for the amount of effort A quick analysis of the message updates proves t hat the Java client receives many messages updating fields of the same bond, and therefore related messages So, Aggregator is in fact a good decision. What s left is to determine how the Aggregator will know when to send a message it has been aggregating The pattern describes a few algorithms for the Aggregator to know when to send the message These include algorithms to cause the aggregator to send out its contents after a certain amount of time has elapsed, after all required fields in a data set have been completed, and others The problem with all of these approaches is that the aggregator is controlling the message flow, not the client And the client is the major bottleneck in this case, not the message flow. This is because the Aggregator is assuming the consumers of its purged messages the client application in this case are Event-Driven Consumer s, or consumers that rely on events from an external source We need to turn the client into a Polling Consumer or a consumer that continu ously checks for messages, so the client application can control the message flow We can do this by creating a background thread that continuously cycles through the set of bonds and updates and flashes any changes that have occurred since the last iteration This way, the client controls when messages are received and as a result, guarantees that it will never become overloaded with messages during high update periods We can easily implement this by sending a Command Message to the Aggregator initiating an update The Aggregator will respond with a Document Message containing the set of updated fields that the client will process. The choice of Aggregator over Message Filter is clearly a decision based solely on the business requirements of our system Each could help us solve our performance problems, but using the Message Filter would solve the problem at cost of the system data integrity. Major Production Crash. With the performance of the flashing fixed, we are now in production One day the entire system goes down MQSeries crashes, bringing several components down with it We struggle with the problem for a while and finally trace it back to the MQSeries dead letter queue an implementation of the Dead Letter Channel The queue grows so large that it brings down the entire server After exploring the messages in the dead letter queue we find they are all expired market data messages This is caused by slow consumers, or consumers that do not process messages fast enough While messages are waiting to be processed, they time out see the Message Expiration pattern and are sent to the Dead Letter Channel The excessive number of expired market data messages in the dead letter queue is a clear indication that the message flow is too great messages expire before the target application can consume them We need to fix the message flow and we turn to patterns for help slowing down the message flow. A reasonable first step is to explore solving this problem with the Aggregator as we recently used this pattern to solve the similar flashing market data control rate problem The system design relies on the client application to immediately forward market data update messages to the trading venues This means the system cannot wait to collect messages and aggregate them So the Aggregator must be abandoned. There are two other patterns that deal with the problem of consuming messages concurrently Competing Consumers and Message Dispatcher Starting with Competing Consumers the benefit of this pattern is the parallel processing of incoming messages This is accomplished using several consumers on the same channel Only one consumer processes each incoming message leaving the others to process successive messages Competing Consumers however, will not work for us since we are using Publish-Subscribe Channel s in server-to-client communication Competing Consumers on a Publish-Subscribe Channel channel means that all consumers process the same incoming message This results in mo re work without any gain and completely misses the goal of the pattern This approach also has to be abandoned. On the other hand, the Message Dispatcher describes an approach whereby you add several consumers to a pool Each consumer can run its own execution thread One main Message Consumer listens to the Channel and delegates the message on to an unoccupied Message Consumer in the pool and immediately returns to listening on the Message Channel This achieves the parallel processing benefit of Competing Consumers but works on Publish-Subscribe Channel s. The Message Dispatcher in context. Implementing this in our system is simple We create a single JMSListener called the Dispatcher, which contains a collection of other JMSListener s called Performers When the onMessage method of the Dispatcher is called, it in turn picks a Performer out of the collection to actually process the message The result of which is a Message Listener the Dispatcher that always returns immediately This guarantee s a steady flow of message processing regardless of the message flow rate Additionally, this works equally well on a Publish-Subscribe Channel s as it does on a Point-to-Point Channel s With this infrastructure, messages can be received by the client application at almost any rate If the client application is still slow to process the message after receiving them, the client application can deal with the delayed processing and potentially outdated market data rather than the messages expiring in the JMS Message Channel. The crash discussed in this section and the fix using the Message Dispatcher is an excellent example of the limits of applying patterns We encountered a performance problem based on a design flaw not allowing the client to process messages in parallel This greatly improved the problem, but did not completely fix it This is because the real problem was the client becoming a bottleneck This couldn t be fixed with a thousand patterns We later addressed this problem by refac toring the message flow architecture to route messages directly from the Pricing Gateway to the Contribution Gateway So patterns can help design and maintain a system, but don t necessarily make up for poor upfront design. Throughout this chapter, we have applied patterns to several different aspects of a bond trading system including solving initial upfront design problems and fixing a nearly job threatening production crash with patterns We also saw these patterns as they already exist in third party product, legacy components, and our JMS and TIBCO messaging systems Most importantly, these are real problems with the same types of architectural, technical and business problems we experience as we design and maintain our own systems Hopefully reading about applying patterns to this system helps give you a better understanding of the patterns as well as how to apply them to your own systems. Want to keep up-to-date Follow My Blog. Want to read more in depth Check out My Articles. Want to s ee me live See where I am speaking next. Find the full description of this pattern in Enterprise Integration Patterns Gregor Hohpe and Bobby Woolf ISBN 0321200683 650 pages Addison-Wesley. From Enterprise Integration to Enterprise Transformation. My new book describes how architects can play a critical role in IT transformation by applying their technical, communication, and organizational skills with 37 episodes from large-scale enterprise IT. Parts of this page are made available under the Creative Commons Attribution license You can reuse the pattern icon, the pattern name, the problem and solution statements in bold , and the sketch under this license Other portions of the text, such as text chapters or the full pattern text, are protected by copyright. Messaging Patterns Integration Patterns in Practice Case Study Bond Trading System. Imagine Trading System. Since 1993, Imagine Software has been a leading provider of investment management solutions for the global financial industry Its a ward-winning enterprise product, the Imagine Trading System and its on-demand cloud-based ASP version, is a real-time integrated trading, portfolio, and risk management solution employed by thousands of buy-side and sell-side end-users across the globe. Imagine Software s reputation of delivering competitive advantage is based upon its long track record of delivering institutional-grade functionality, broad cross-asset instrument support, and the ability to handle any trading strategy The firm consistently satisfies the diverse portfolio and risk processing, market data, regulatory, and reporting requirements of the largest global hedge funds, fund-of-funds, pension funds, asset management companies, and major brokerage firms and banks Imagine provides users with everything they need for their day-to-day operations advanced software functionality, comprehensive data management consisting of the myriad live market, credit, static data, and other elements necessary for real-time trading i n today s global markets , and end-of-day and start-of-day processing services. Maximizing Investment Returns and Managing Risk Investment decision-makers reap immediate benefits with Imagine s robust, real-time portfolio and risk management functionality, which supports their activities across all trading strategies and asset classes Key portfolio functionality includes unlimited portfolio drilldowns, real-time pricing, limits monitoring and control, plus live views of P L values and greeks, and securities tracking Risk functionality spans stress testing and historical Monte Carlo, plus intra-day portfolio VaR, factor analysis, and much more Users can easily examine exposure to shifting market prices, interest rates, volatility, yield-curve assumptions and other risks. Achieve Transparency Imagine s status as a trusted industry-standard provider of risk and portfolio reporting capabilities make it a must have resource for a wide array of financial businesses ranging from institutional i nvestment firms to start-up hedge funds Superior reporting capabilities plus complete historical data archiving enables the transparency today s investors and regulator agencies demand. Gain Operational Efficiencies clients concentrate solely on managing assets because the critical components underpinning their business processes software, market data, global security masters, corporate actions, etc are managed efficiently at Imagine s secure, high-performance data center The operational risk and cost benefits of fast implementation, automation of manual processes, seamless integration with other third-party systems, and elimination of IT support requirements are undeniable. Appears on these sections. Product and service specifications.
ผู้ประกอบการค้า Forex คำจำกัดความของผู้ประกอบการ: ความมุ่งมั่นในการดูแลและให้บริการทางการเงิน - การกระทำ, การบังคับใช้, การทำให้เป็นไปได้ ในด้านการเงินผู้ค้าคือผู้ที่ซื้อและขายเครื่องมือทางการเงินเช่นหุ้นพันธบัตรสินค้าโภคภัณฑ์และสัญญาซื้อขายล่วงหน้า ในการซื้อขาย, การค้าการค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การค้า, การตลาด, การค้า, การค้า, การค้า, การค้า, การค้า, (ผู้ประกอบการแลกเปลี่ยนเงินตราต่างประเทศ - Forex Trader - ดูที่ปัจจัยต่างๆที่มีอิทธิพลต่อเศรษฐกิจในท้องถิ่นและอัตราแลกเปลี่ยนแล้วใช้ประโยชน์จากการ misvaluations ใด ๆ ของสกุลเงินโดยการซื้อและขายในตลาดแลกเปลี่ยนเงินตราต่างประเทศที่แตกต่างกัน) Traderul Forex este persoana ดูแล obtine กำไร din tranzactii speculative cu bunuri financiare. ผู้ประกอบการค้าที่ไม่หวังผลกำไร forex folkseste ควบคุม calculatorul, urmareste cotatiile valutare และ desfasoara tranzactii. Scopul Unui Trader Forex Obtinerea unui เป็นไปตามเงื่อนไขของลูกค้าโดยไม่ได้รับอนุญาต เจสสิก้...
Comments
Post a Comment