شبكة الخدمة هي طبقة بنية تحتية تسهل الاتصال بين مكونات التطبيق. توفر الشبكات وظائف بما في ذلك اكتشاف الخدمة وموازنة الحمل وقابلية الملاحظة.
توجد شبكات الخدمة بشكل عام في الأنظمة الموزعة المكونة من الخدمات المصغرة. توفر الشبكة المتشابكة طريقة للخدمات المختلفة لتبادل البيانات. إنه يتعامل فقط مع حركة المرور الداخلية ، ويتم تسليمه إلى بوابة API أو عقدة حافة لخدمة المستخدمين. تشمل الشبكات الشعبية Linkerd و Istio.
ما هو داخل الشبكة؟
المفهوم الأساسي لشبكة الخدمة واضح تمامًا. تضم الطبقة وكلاء الشبكة الذين يوجهون حركة المرور إلى الخدمات الفردية. تدير طبقة التحكم مكالمات الشبكة بين الخدمات وتنظم استخدام البروكسيات.
الغرض الأساسي من الشبكة المتداخلة هو تسهيل اتصال الخدمات وجعلها أكثر موثوقية. لنأخذ زوجًا بسيطًا من الخدمات: واجهة برمجة تطبيقات ونظام مصادقة منفصل. ستحتاج واجهة برمجة التطبيقات إلى التفاعل مع خدمة المصادقة عندما تتلقى الطلبات.
مع شبكة الخدمة ، يمكنك الحصول على اتصال موثوق به بين الخدمات باستخدام المعرفات المعروفة. يمكن لواجهة برمجة التطبيقات (API) إرسال مكالمات الشبكة إلى
auth-servicehostname وكن واثقًا من أنها ستستمر في حلها بشكل صحيح ، حتى إذا تم نقل خدمة المصادقة إلى موقع مختلف لمركز البيانات. تعمل شبكة الخدمة على توجيه الطلبات بشفافية إلى الخدمة المناسبة.
استخدام شبكة الخدمة يجعل من السهل نقل الخدمات. يمكن أن يصبح منطق اتصالات الشبكة المشفرة بسرعة مقيدًا. تمنحك الشبكة المتشابكة مزيدًا من المرونة لتوزيع أعباء عملك في المستقبل.
كيف يتم تنفيذ شبكات الخدمة؟
تتكون شبكات الخدمة الحديثة من مكونين: مستوى تحكم ومستوى بيانات. تنتمي الوظيفة الأساسية إلى مستوى البيانات ، الذي يهتم بالبيانات المتدفقة عبر النظام.
ستتم معالجة كل طلب للشبكة بواسطة مستوى البيانات. سيكتشف الخدمة المناسبة لاستخدامها وتنفيذ أي إجراءات تسجيل وتمكين السلوكيات الشرطية لتصفية حركة المرور وإعادة توجيهها.
الخدمات عادة ما تكون جزءًا من تطبيقك لذا يمكنها تضمين منطق التوجيه. يفحص مستوى البيانات قواعد التكوين لتحديد نقطة النهاية النهائية بناءً على رؤوس HTTP ومعلمات الطلب والقيم الأخرى من الطلب.
بينما يزدحم مستوى البيانات بالنشاط ، يكون مستوى التحكم أبسط نسبيًا. يشرف على الوكلاء في مستوى البيانات ويوفر واجهة برمجة تطبيقات حتى تتمكن من التفاعل معهم.

يوضح هذا الرسم البياني من مشروع Istio كيف تتناسب المكونات معًا. كل خدمة تحصل على وكيلها الخاص. تتدفق حركة المرور الواردة عبر الوكلاء. قد يتواصلون مع مستوى التحكم لاكتشاف خدمات أخرى.يُطلق على البروكسيات عادةً اسم "sidecars" لأنها تعمل جنبًا إلى جنب مع الخدمة التي يمثلونها.
وظائف شبكة الخدمة الأخرى
توفر شبكات الخدمة عادةً وظائف إضافية تتجاوز اكتشاف الخدمة الأساسية. ستجد عادةً موازنة الحمل ، والمصادقة على مستوى الطلب ، ودعم تشفير البيانات. يمكن أن تمر حركة المرور المشفرة عبر الشبكة ولكن يتم تسليمها إلى خدماتك في شكل مشفر.
ستوفر الشبكة المتداخلة عادةً ضمانات ضد الانقطاعات المؤقتة للشبكة. عمليات إعادة المحاولة التلقائية وتجاوز الفشل وقواطع الدائرة تجعل الاتصال بين الخدمات أكثر مرونة. تقل احتمالية رؤية المستخدم النهائي لحالة خطأ جسيم. سيكون تنفيذ هذه القدرات المهمة صعبًا ومكلفًا.
وبالمثل ، تتضمن شبكات الخدمة تحسينات للأداء تساعد على تقليل النفقات العامة. قد تحتفظ الشبكة بالاتصالات بالخدمات لإعادة استخدامها لاحقًا ، مما يقلل زمن الانتقال للطلب التالي.
توفر طبقات الشبكة أيضًا حماية أمنية. يمكنك تنفيذ سياسات التحكم في الوصول على مستوى الشبكة التي ترفض حركة المرور قبل أن تصل إلى خدماتك. إذا كنت تريد محددًا عالميًا لمعدل API ، فإن جعله جزءًا من تكوين الشبكة سيطبقه على جميع خدماتك - الحالية والمستقبلية.
ماذا عن العيوب؟
التحدي الأكبر حول الشبكات المتداخلة هو التعقيد الإضافي الذي تجلبه. بينما يهدفون إلى تبسيط شبكات الخدمات المصغرة ، فإنهم يقدمون أيضًا منحنى تعليمي خاص بهم.
سيحتاج المطورون إلى التعرف على طبقة أخرى فوق خدماتهم الحالية. تضيف مصطلحات الشبكات المتداخلة ، مثل الوكلاء والخوادم الجانبية ، إلى القائمة الطويلة بالفعل لموارد Kubernetes التي تحتفظ بها فرق العمليات.
على الرغم من أن الشبكات تضيف تحسينات الأداء الخاصة بها ، فقد تلاحظ بعض عمليات النشر انخفاضًا عامًا في إنتاجية الشبكة. تضيف الشبكة طبقة جديدة يجب أن تمر الطلبات خلالها ، مما يؤثر على الكفاءة الكلية.عادة ما يكون هذا ملحوظًا أكثر إذا قمت بتخزين شبكتك بالعديد من قواعد التوجيه.
متى يجب استخدام شبكة الخدمة؟
تعمل شبكات الخدمة بشكل أفضل عندما تكون ملتزمًا تمامًا بالحاويات والخدمات المصغرة. لقد تم تصميمها لحل تحديات تشغيل الأنظمة الموزعة على نطاق واسع في الإنتاج. قد تستمر عمليات النشر الأصغر في الاستفادة من الشبكة المتداخلة ، ولكنها قد تستخدم أيضًا أساليب شبكات أبسط ، مثل موارد الشبكات المضمنة في Kubernetes.
تكون الشبكات مفيدة للغاية عندما تقوم بشكل متكرر بتشغيل خدمات جديدة أو توزيعها عبر الخوادم. تتيح الشبكة الشبكية للمطورين التركيز على الوظائف ، بدلاً من ملل توصيل الخدمات المختلفة معًا. أثناء نشر أسطول خدمة متنامي باستمرار ، ستقضي وقتًا أطول في التعامل مع اتصالات الخدمة. تعمل الشبكة المعشقة على أتمتة معظم هذه التهيئة ، لذا لا تحتاج إلى التفكير في اكتشاف الخدمة وتوجيهها.
يساعد النهج نظامك على أن يصبح أكثر قابلية للملاحظة أيضًا.تتدفق جميع الطلبات عبر الشبكة بحيث يمكنك تنفيذ التسجيل والتتبع على مستوى البنية التحتية. يوفر هذا مسارًا أبسط لتشخيص وحل مشكلات التوجيه. بدون شبكة ، قد يكون لديك عشرات الخدمات جميعها تنقل المعلومات مباشرة إلى بعضها البعض. هذا يجعل من الصعب العثور على أصل المشكلة.
شبكات الخدمة الأكثر شيوعًا سهلة الإعداد. لدى كل من Istio و Linkerd أدلة البدء الموثقة جيدًا لمساعدتك في نشر شبكة في مجموعة Kubernetes الخاصة بك. الأمر يستحق التجربة حتى إذا لم تكن متأكدًا من أن نظامك على نطاق متشابك حتى الآن. قد يؤدي الاستمرار في الاتصال المباشر بالخدمة لفترة طويلة إلى تقييد قدرتك على إطلاق خدمات جديدة في الوقت المناسب وبطريقة موثوقة.