كاتب مع المخزن المؤقت للبروتوكول والتوفير المتقدم؟

StackOverflow https://stackoverflow.com/questions/2106327

سؤال

لدي سؤالان هنا:

السؤال رقم 1:

-هل يمكن أن يوفر التوفير وظيفة من الدرجة الداخلية؟ (انظر مثالي التالي)

- إذا كان بإمكانه ، هل يمكن أن تستخدم هذه الوظيفة بسهولة؟

فيما يلي واجهة Scribe (Scribe/if/scribe.thrift). لكن حقل رسالته لا يمكن أن يكون سوى سلسلة ، والتي أعتقد أنها ليست مرنة بما فيه الكفاية.

#!/usr/local/bin/thrift --cpp --php

##  Copyright (c) 2007-2008 Facebook
...
...
## See accompanying file LICENSE or visit the Scribe site at:
## http://developers.facebook.com/scribe/

include "fb303/if/fb303.thrift"

namespace cpp scribe.thrift

enum ResultCode
{
  OK,
  TRY_LATER
}

struct LogEntry
{
  1:  string category,
  2:  string message
}

service scribe extends fb303.FacebookService
{
  ResultCode Log(1: list<LogEntry> messages);
}

سيكون من الرائع أن أتمكن من القيام بالشيء التالي (لا أعرف حتى ما إذا كان التوفير نفسه يوفر وظيفة من الفئة الداخلية وفقًا لمستندها-ولكن من المؤكد أن البروتوكول يمكن).

enum ResultCode
{
  OK,
  TRY_LATER
}

struct MyLogStructure {
  1: string field_name;
  2: string value;
}

struct LogEntry
{
  1:  string category,
  2:  MyLogStructure message
}

service scribe extends fb303.FacebookService
{
  ResultCode Log(1: list<LogEntry> messages);
}

السؤال 2:

- هل يمكن للكاتب استخدام بروتوكول المخزن المؤقت كتمثيل للبيانات الداخلية بسهولة؟ (بدون تعديل رمز كبير)

-إذا كانت الإجابة على السؤال أعلاه هي "لا" ، فهل تفتح Google تطبيق SRIBE؟

لا يوجد حل صحيح

نصائح أخرى

نعم ، يمكن أن تشمل بنيات التوفير هياكل أخرى ، وسيعمل تعريفك (المتكرر المتكرر):

enum ResultCode { OK, TRY_LATER }

struct MyLogStructure {
  1: string field_name;
  2: string value;
}

struct LogEntry {
  1: string category,
  2: MyLogStructure message 
}

service scribe extends fb303.FacebookService {
  ResultCode Log(1: list messages);
}

إذا قمت بإعادة تعريف واجهات Scribe مثل هذا ، فمن المحتمل أن تضطر إلى تعديل رمز Scribe للتعامل مع نوعك الجديد اعتمادًا على ما يفعله داخليًا string message.

بالطبع ، يمكنك دائمًا إجراء تسلسل الخاص بك MyLogStructure اعترض على سلسلة وتجنب هذه المشكلة تمامًا.

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

على حد علمي ، فإن Google لم تفتح أي نظام تسجيل موزع. تشوكوا من Yahoo/Hadoop هو بديل واحد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top