كاتب مع المخزن المؤقت للبروتوكول والتوفير المتقدم؟
-
21-09-2019 - |
سؤال
لدي سؤالان هنا:
السؤال رقم 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 هو بديل واحد.