I محاكاة باستخدام التعدين كود المتصفح، لا أكثر تعقيدا ولكن لا تذهب طريق ملتوية

انقر الاهتمام InfoQ ، أعلى رقم العام

08:00 الإفطار مبرمج تكنولوجيا الاستقبال

الكاتب | بن

تحرير | مارتن، قوه لى

مصدر شو الحديث عن العمارة

بيتكوين النار مؤخرا، سلسلة كتلة النار، حتى بلدي المدن أربعة مستويات، وليس كيفية الاتصال بالإنترنت ودعا أمس طلاب المدارس الابتدائية بفارغ الصبر أن يسألني، هذه الموجة من موجة من كتل سلسلة في الكيفية التي ينبغي أن تجعل المال.

قبل نشر سلسلة من المقالات تتحدث عن العمارة سلسلة كتلة لإدخال التكنولوجيا، والتفكير مثيرة للاهتمام حقا، وكيف أن كمية قراءة هذا قد فعلت ليست عالية، ولكن الآن، فجأة من الكثير من سلسلة كتلة وسائل الإعلام. بالطبع، نحن أيضا عددا من التقارير العامة وركز التكنولوجيا سلسلة كتلة: البؤرة الاستيطانية سلسلة كتلة، ونحن نرحب انتباه.

من قبل، واعتقد الكثير من الناس قد لاحظوا لديها مثل هذه الأخبار، وهناك بعض المواقع الكبار لرؤية بيتكوين بعد ارتفاع، بدأ العزف على فكرة التعدين. أنها مخبأة سرا في بلدي مدونة التعدين الموقع، وعندما يزور المستخدم هذه المواقع، وسوف يشعر بسرعة تشغيل بشكل غامض إلى هذه الرموز التعدين، حتى بعد إغلاق المستخدم المتصفح، وسوف تستمر المصدر لتشغيل و موارد وحدة المعالجة المركزية.

هذا هو ترجمة لمقال نشر اليوم، مؤلف بن هو أحد كبار المطورين الأجانب. بعد أن رأى هذا الخبر، كما خسر في الفكر. من زاوية أخرى، إذا لم يتم التعدين، ولكن العالم مستعرض ويب متصلة بواسطة websocket معا، فإنه لا يمكن تشكيل "سوبر كمبيوتر"، واستخدام الحاسوب العملاق لحل مشكلة توزيع؟

حتى انه بدأ محاولة جديدة. وقد ترجم الحديث عن العمارة على هذه المادة، وفيما يلي النص الكامل.

التحرير

سوف نناقش موضوعا مثيرا للجدل - كيفية "سرقة" موارد الحوسبة من متصفح زائر موقع ويب. هناك الكثير من النقاش حول كيفية استخدام متصفح للاستفادة العملة الرقمية، لكنني لا أريد أن ينضم إليهم لمناقشة هذه الموضوعات، أريد فقط لاستكشاف الاستخدام الفعال للموارد الحوسبة.

القدرة على تنفيذ تعليمات برمجية من مستعرض ويب أكثر وأكثر قوة. تطوير جافا سكريبت، WebAssembly ظهور تطور GPU لتعزيز إمكانية الوصول ونماذج خيوط، هذه العوامل معا، والسماح للمتصفح مع أي جهاز كمبيوتر مع قوة حوسبة قوية. مع صعود العملة الرقمية آلة التعدين المتصفح، وأعتقد أيضا عن هذا السؤال: كيفية دمج العالم من موارد الحوسبة في كيان واحد - العملاق حسب العنصر متصفح الزائر الموقع.

مثل عنقود العادية، كل حساب العقد العملاق لحل مشكلة شائعة في إطار التنسيق. لكن عنقود العادية يختلف هو أن هذه العقد حساب مؤقتة (جنبا إلى جنب مع زوار الموقع تأتي وتذهب)، ولكن قبل أنهم لا يستطيعون التحدث مع بعضهم البعض (أي طلب عبر الموقع).

وهذا مثال أستطيع أن أفكر في:

والحق هو سوبر خادم السيطرة على جهاز الكمبيوتر. اليسار هو لزيارة متصفح شبكة الإنترنت، وهي عقدة العملاق، والذي يظهر أيضا مؤشر وحدة المعالجة المركزية.

العملاق لحل المشكلة هو العثور على قيمة التجزئة معينة من القيمة الأصلية. وكما يتبين من هذا الرقم، أي ما مجموعه 23 عقد المشاركين في الحساب، حساب ومقارنة قيم التجزئة 380204032، والتي ساهمت زائر من الولايات المتحدة 50 في المئة من الطاقة.

تنفيذ القانون

وتستخدم هذه التقنية أساسا websocket اتصال مستمر بين الخادم والعقد الحوسبة. سلوك اتصال للعقدة منسق، بحيث تصبح كيانا التعاون المتبادل. websocket يمكن نقل الرسائل رمز والتعاون، حتى أن كل شيء ممكن.

websocket تغيرت بشكل كبير في ظهور السلوك عميل ويب. ويربط العميل إلى موقع ويب، نفذ قبل تحديد جافا سكريبت، وwebsocket آخرين بعد تأسيس الاتصال، يمكنك القيام بأي مخطوطات جافا سكريبت أخرى.

FIG الجانب الأيمن من خادم السيطرة هو العملاق، يتلقى عميل ويب ترك التدريس ديناميكية.

إذا كان التطبيق باستخدام عرض ويب، يمكن أن جافا سكريبت تذهب مباشرة إلى التطبيقات، وهذا هو، يمكنك تخطي خلال التعليمات البرمجية نقل عرض ويب websocket مباشرة إلى الأراضي التطبيقات.

FIG الجانب الأيمن من خادم السيطرة هو العملاق، وترك تعليمات تلقي تطبيق ويب. يمكن أن ينظر إليه اختراق مباشرة إلى التطبيق طبقة التعليمات.

والباقي هو شيء فوق جديد. التطبيق هو متاح من خلال بروتوكول C & C (الروبوتات القيادة والسيطرة) التوجيه، وصفحات الويب ويمكن الحصول حيوي النصي جافا سكريبت بعد الحمل الأولي، وwebsocket حقا ديناميكية (على عكس اياكس وضع الاقتراع سحب) يمكن استخدامها عبر متصفحات متعددة وتشغيل المعدات، ولها حق الوصول الكامل إلى بيئة التشغيل.

ولذلك، فإننا يمكن أن تنقل إلى العقدة الحوسبة التي كتبها WebSocket كود تعليمات، بطبيعة الحال، أن تستخدم أيضا لتمرير رسائل لتنفيذ التنسيق الموزعة.

Crackzor.js

قبل ست سنوات، وأنا وضعت على أساس توزيع تكسير OpenMPI كلمة (ben.akrin.com/؟p=1424)، وتسمى crackzor.

كلمة السر تكسير مشكلة توزيع نموذجي جدا التي هي بسيطة، وهذا هو لتخمين كلمة المرور عن طريق التباديل والتوافيق من الأحرف. يمكنني استخدام جافا سكريبت لإعادة كتابة crackzor، استبدال استخدام websocket OpenMPI.

ومع ذلك، كل مشكلة وزعت ليست هي نفسها، crackzor يست طريقة جيدة لحل جميع المشاكل. crackzor السحر مرونته، يتم ترتيب لتقسيم الطابع المكاني دمجها في كتل كثيرة، ثم تقييم هذه الكتل إلى عقدة حساب. بعد مشكلة معينة لحلها، وبداية ونهاية مواقف التكرار، يمكن أن العقدة بدء العمل، لا تحتاج إلى تزويدهم التباديل والتوافيق من الشخصيات، لذلك ليس هناك اختناقات النطاق الترددي للشبكة.

السؤال الأول: كيفية تحقيق الاستفادة القصوى من العقد CPU

يستخدم جافا سكريبت افتراضيا هو نموذج ترابط واحد، رمز إرسالها إلى العميل عن طريق websocket، افتراضيا يستخدم فقط نواة واحدة من وحدة المعالجة المركزية. ومعظم أجهزة الكمبيوتر اليوم هي وحدة المعالجة المركزية متعددة النوى، لذلك علينا أن نجد وسيلة لاستخدام ما يصل تلك CPU.

حتى ظهر المنقذ --Web العمال. HTML 5 توفر هذه الميزة يبسط إلى حد كبير تنفيذ متعددة الخيوط. ومع ذلك، فإننا بحاجة أيضا إلى حل المشكلة. مستندات ويب العمال تخبرنا تحميل الملف النصي من الملف، ولكن يتم إرسال كود لدينا أكثر من websocket، ويقيم في الذاكرة، لذلك نحن لا يمكن ان تنفذ مباشرة كود لتحديد ملفات البرامج النصية.

ونحن في حل هذه المشكلة عن طريق التعبئة والتغليف رمز إلى كائن النقطة:

فار worker_code = 'تنبيه ( "والخيوط هذا الرمز على العقد")؛' window.URL = window.URL || window.webkitURL، فار سائل، محاولة {سائل = النقطة الجديدة (\ ، {نوع: "التطبيق / جافا سكريبت '})؛} صيد (ه) {window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder، النقطة = BlobBuilder جديد، blob.append (worker_code)؛ فقاعة = blob.getBlob؛} workers.push (العمال الجديد (URL.createObjectURL (النقطة)))؛

السؤال الثاني: توزيع المهام بين العقد

Websocket الخادم تحمل أكثر من تنسيق المتابعة، فإنه يحتاج إلى تتبع عقدة الوصول والخروج منها، وعما إذا كانت عقدة أداء مهام الحوسبة، والمهام تعيين لهم في العقد المتاحة.

يحتاج الملقم إلى تكون قيد التشغيل في جميع أنحاء اتصال عملية من العقدة. ومع ذلك، قد يحتاج هذا العملاق لحل مشاكل مختلفة كل يوم. تحقيقا لهذه الغاية، كتبت وظيفة لقراءة ملف التنفيذ ملف والتعليمات البرمجية. يتم استدعاء هذه الوظيفة عن طريق عملية.

وظيفة وحدة التقييم \ _code \ _from_file {إذا (! file_exists ( "/ تمة / كود")) {console.log ( "خطأ: ملف / تمة / القانون غير موجود")؛} آخر {كود فار = read_file ( "/ تمة / القانون ")؛ كود = code.toString، وحدة التقييم (رمز)؛}} process.on ( 'SIGUSR1، وحدة التقييم \ _code \ _from_file.bind)؛

مع هذه الوظيفة، في المرة القادمة أنا يمكن أن تقتل العملية القديمة، ومن ثم استخدام عملية جديدة لتحميل القانون الجديد. ويرجع ذلك إلى مرونة جافا سكريبت، هذه المرونة تسمح لنا لتشغيل تعليمات برمجية عشوائية في أي وقت، طالما هناك حق الوصول الكامل إلى بيئة التشغيل.

إعطاء المهمة التوزيع العقدة هو بسيط جدا، ما دام يسجل العميل وظيفة رد الاتصال عند الاتصال بالخادم، يمكنك ثم تنفيذ التعليمات البرمجية في وظيفة رد الاتصال.

مثل العميل:

فار websocket_client = io.connect ( " websocket_client.on (. "eval_callback"، وظيفة (بيانات) {البيانات = atob (البيانات)، وحدة التقييم (بيانات)} ربط)؛

خادم الجانب:

client_socket.emit ( "eval_callback"، جديدة العازلة ( "حالة تأهب ( 'سيتم تشغيل هذا الرمز على العميل')؛") توست.

وحتى الآن:

  • كل عقدة مؤقتة (متصفح الويب المستخدم موقع على شبكة الانترنت) للاتصال websocket الخادم؛

  • بواسطة عملية websocket يشير إلى تنفيذ الخادم من القانون الجديد.

  • ويتضمن القانون الجديد مشكلة عقدة جديدة إلى حلها.

  • القانون الجديد يقول خادم كيفية تنسيق عقدة websocket.

  • مرة واحدة في العقدة إلى حل المشكلة، ثم التعامل مع السؤال التالي؛

  • الآن أن نعرف كيفية استخدام مستعرض ويب لبناء العملاق. لمجموعة متنوعة من الاعتبارات، مثل القراءة والأمن وتعقيد القضايا، وأنا لا أريد أن أضع كل قانون بلدي على الملأ. ومع ذلك، إذا المهتمة شخص ما، يمكنك الاتصال بي، وأنا سعيدة لمشاركتها مع العديد من الأفكار.

    مزيد من النصائح

    • عندما مهمة الانقسام، والمهمة ليست كبيرة جدا. لأن العقد مؤقتة، إذا كانت المهمة ثقيلة جدا، تحدث معظم المقاطعة المحتملة. معظم متصفحات الويب في رفض أو إنهاء كود التنفيذ والموارد أيضا مكثفة، ويمكن أن تكتمل المهام الصغيرة في بضع ثوان، لن توقف ذلك.

    • نفذت باستخدام جافا سكريبت MD5: الشبكي: //gist.github.com/josedaniel/951664.

    • متوسط الوقت لحل سجلات عقدة المشكلة المستخدمة، وعقدة استبعاد يعمل ببطء، حتى لا تؤثر على "سوبر كمبيوتر" الأداء العام.

    أجرينا مسحا العقد الماضي خمسة رائعة HBO الترتيب الدراما

    "أنت ضد التيار": ارتفاع الطلاق العسل زو كاي كاي زو وانغ يو نرى، والعسل، والركبتين عالية والمغفرة توسل؟

    "ساحة المعركة (1)" [مثبوسترس الحلقة: ما إذا كانت هناك طائشة؟

    بسعر يبدأ من 249 يوان، محفورة لوجيتك MX518 ماوس الألعاب الكلاسيكية

    وراء الأحداث إشارات الراديو غامضة، هناك دراما الولايات المتحدة حول موضوع الغريبة

    روبي البالغ من العمر 43 عاما هو كان مروحة من عرضية المكشوفة الوجه الخلفي قاسية ابتسامة السخرية، وليس الانخراط في سبيل الحب الطبخ؟

    "المنزلي أربعة من الذكور" البحر، وكيفية تسجيل؟

    تنظيف الغبار يشعر الكثير من المتاعب؟ سلة المهملات التنظيف لمعرفة

    الحوار هو Shiwei: بعد الحصول على البنوك المملوكة للدولة الثلاثة الرئيسية في أسهم الوقت نفسه، النموذج الرابع لتقديم قيمة AI للمشروع

    أنا لا أعرف كم من الناس تذكر ذلك في عام 1980 هوليوود الخيال الرومانسي الكوميدي

    بعد شائعات الطلاق بريجيت لين لاول مرة حالة جيدة، ذكريات الماضي بالتعاون مع ماغي تشونغ: وقالت أنها منخفضة جدا احترام الذات

    "الموت الذين تقطعت بهم السبل" PSX محرك اللعبة لتحديد مقطورة جديدة نشرت