يوميا بو شو "صنع عجلات" --cicada (إطار WEB خفيفة الوزن)

الصين تشعر بالقلق إزاء مفتوحة المصدر عدد OSC عنوان، الحصول على أحدث المعلومات التقنية

مقدمة

وكما يقول المثل، "لا إعادة إنشاء العجلة" فيما يتعلق بما إذا كان من الضروري لا مجال أطول من هذه المناقشة.

والغرض الرئيسي من هذا المشروع هو إنشاء أو تعزيز مظهرها ومعروفة المشاريع مفتوحة المصدر مثل الثغرات التعلم وممتازة الطريق مفتوحة المصدر.

حسنا، الآن نحن نركز على المهام الأساسية للالزيز إلى نقاش حول هذا المشروع.

أحدد له باعتباره بسرعة، إطار WEB خفيفة الوزن، وليس هناك من الاعتماد المفرط على حزمة جرة الأساسية فقط 30KB.

سطر واحد فقط من التعليمات البرمجية لبدء تشغيل خدمة HTTP.

ممتلكات

الآن دعونا نتحدث عن بعض الخصائص المهمة.

الإنجاز الرئيسي من الإصدار الحالي من الطلبات الأساسية، والاستجابات، والمعلمات المخصصة ظيفة اعتراضية.

وظيفة، وإن كانت صغيرة، ولكن المشكلة تماما.

في التكرار التالي ستتحسن تدريجيا وظيفة من هذا الرقم، هناك أفكار جيدة هي أيضا موضع ترحيب أن أذكر https://github.com/crossoverJie/cicada/issues.

البداية السريعة

دعونا ننظر كيف تبدأ بسرعة خدمة HTTP.

مجرد إنشاء مشروع مخضرم، وإدخال حزمة الأساسية.

< التبعية > < groupId > top.crossoverjie.opensource < / GroupId > < artifactId > الزيز النواة < / ArtifactId > < نص > 1.0.0 < / النسخة > < / التبعية >

كما هو مبين أعلاه، ثم ابدأ يمكن تكوين فئة.

الطبقة العامة MainStart { ساكنة العام باطلة الرئيسية (سلسلة وسائط) يلقي InterruptedException { CicadaServer.start (MainStart.class "/ الزيز-مثال")؛ } }

تكوين عمل الأعمال

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

إنشاء مبادرة الأعمال لتحقيق اجهة top.crossoverjie.cicada.server.action.WorkAction.

CicadaAction (القيمة = "demoAction") الطبقة العامة تنفذ DemoAction WorkAction { ساكنة الخاص النهائي المسجل المسجل = LoggerBuilder.getLogger (DemoAction.class)؛ مؤشر الخاص ثابت AtomicLong = AtomicLong جديدة ()؛ Override WorkRes الجمهور < DemoResVO >  تنفيذ (بارام paramMap) رميات استثناء { اسم سلسلة = paramMap.getString ( "اسم")؛ صحيح ID = paramMap.getInteger ( "ID")؛ LOGGER.info ( "اسم = ، معرف = " والاسم والهوية)؛ DemoResVO demoResVO = DemoResVO جديدة ()؛ demoResVO.setIndex (index.incrementAndGet ())؛ WorkRes < DemoResVO >  الدقة = WorkRes جديدة ()؛ res.setCode (StatusEnum.SUCCESS.getCode ())؛ res.setMessage (StatusEnum.SUCCESS.getMessage ())؛ res.setDataBody (demoResVO)؛ العودة الدقة. } }

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

حتى بدء التطبيق والوصول

قادرة على تنفيذ إرجاع الملقم منطق الأعمال والتي تم الحصول عليها في وقت واحد.

معتمد حاليا بشكل افتراضي رد سلمان، وهذا الأخير سوف تضيف قالب التوزيع.

والخدمات أيضا طباعة السجلات ذات الصلة.

تكوين المعلمة مرونة

هنا يتم تغليف كل الطلبات في المعلمة بارام في API التي يمكن استخدام مجموعة متنوعة من طلب الحصول على البيانات.

والسبب هو مرونة: يمكننا أن يطلب حتى من هذا القبيل:

": { "العمر": 22، "اسم": "zhangsan" }

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

اعتراضية مخصص

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

لهذا الزيز نهاية توفير واجهة: top.crossoverjie.cicada.server.intercept.CicadaInterceptor.

نحن بحاجة فقط لتنفيذ واجهة لكتابة ميزات منع:

Interceptor (القيمة = "executeTimeInterceptor") الطبقة العامة ExecuteTimeInterceptor تنفذ CicadaInterceptor { ساكنة الخاص النهائي المسجل المسجل = LoggerBuilder.getLogger (ExecuteTimeInterceptor.class)؛ بداية طويل الخاص؛ نهاية طويل خاصة. Override الفراغ العام من قبل (بارام المعلمة) { بداية = System.currentTimeMillis ()؛ } Override بعد باطلا العام (المعلمة بارام) { إنهاء = System.currentTimeMillis ()؛ LOGGER.info ( "يلقي مرات"، نهاية - بداية)؛ } }

هنا هو تسجيل التجريبية من وقت تنفيذ جميع الإجراءات.

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

محول اعتراض

وعلى الرغم من توفر قبل / بعد طريقتين في اعتراضية، ولكن ليس مطلوبا من جميع الطرق لتنفيذها.

وبالتالي يوفر الزيز محول:

top.crossoverjie.cicada.server.intercept.AbstractCicadaInterceptorAdapter

نحن بحاجة إلى الاستمرار في طلبه لتحقيق الطريقة التي يمكن أن تكون على النحو التالي:

Interceptor (القيمة = "loggerInterceptor") الطبقة العامة LoggerInterceptorAbstract يمتد AbstractCicadaInterceptorAdapter { ساكنة الخاص النهائي المسجل المسجل = LoggerBuilder.getLogger (LoggerInterceptorAbstract.class)؛ Override الفراغ العام من قبل (بارام المعلمة) { LOGGER.info ( "مسجل المعلمة = "، param.toString ())؛ } }

اختبار الأداء

لأنه هو إطار خدمة HTTP، لدينا لضمان الأداء الطبيعي.

في ظروف الاختبار: الضغط الاستشعار مرتين متتاليتين المتزامنة 300؛ ذاكرة 1G، وحيدات وحدة المعالجة المركزية، من 1Mbps. الضغط قياس مع Jmeter يلي:

نفس الخادم مع القط لاختبار الضغط ونرى ما هي النتائج.

هر تكوين تجمع الموضوع:

< اسم المنفذ = "tomcatThreadPool" namePrefix = "المستهلك exec-" maxThreads = "510" minSpareThreads = "10" / >

أنا هنا لطلب هذا دليل وثيقة من القط، على الرغم من أن النتائج تبدو أداء الزيز هو أقوى من القط.

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

ولكن لا يزال يحكي الأداء الحالي الزيز هو جيد.

ملخص

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

في تحديث لاحقة سوف تحقق بعناية في هذا المحتوى.

ليس من المستغرب، في حين سيستمر الزيز إلى التحديث في المستقبل سوف تضيف المزيد من المزايا المفيدة.

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

مقالات الكاتب: crossoverJie

عمود بلوق اليومي، والمواد التقنية الموصى بها يوميا من المدونين نوعية ممتازة بالنسبة لك. وبينما ترحب بتقديم المستخدم، مرة واحدة يتم تضمين المقالة في الرواية الرسمية، وسوف نوصي يا في المنزل وغيرها من المواقع. اهتمام المصدر المفتوح الصين OSC الاطلاع يوميا على دفع جودة، انقر فوق " تعرف على المزيد "عرض عناوين المشروع.

الاستثمار في مجال الإحصاء: استغرق ربع القطاع الزراعي تمويل VC / PE الصين يغرق

شباك التذاكر محطمة، كلمة في الفم حطموا! هذا عيد رأس السنة الجديدة، تانغ وي قه كان الفيلم هذا ......

الاستثمار في مجال الإحصاء: ربع الاستهلاك وقطاع الخدمات تمويل الاكتتاب الحارة سرعة ثابتة

ووهان طاه في براعم الشعر القطب الجنوبي تفعل التوفو طاحونة الأرز، قيادة بعثة متعددة الجنسيات "Cengfan"

صوت العد: أكملت 131 شركة مجموعة الربع الأول من جمع الأموال 497946000000 يوان

كانت جميلة! وزارة شبكة الرسمي MEIZU 15: عدم ملء الشاشة الجبهة + بصمة + المعدن المصقول

يوميا بو شو رديس الذاكرة تجزئة تحليل هيكل نموذج

إحصاءات ضرب: ثلاثة ارتفاع وحة جديدة في تمويل أكثر دفئا الربع الأول شطب

تعلم لزراعة الخضروات، لا الخبز، والخط العربي ...... هذا المجانية التعليم كلية المجتمع للمقيمين تعليم تعلم

ستيفن تشو، تنغ شين، مشاهد هوانغ بو في السنة الصينية الجديدة كشك، الذي هو الملك الجديد من الكوميديا؟ التحديد الدقيق رأس السنة الميلادية

وثائق Kubernetes تثبيت نظام v1.10.0 يوميا بو شو k8s

والفرق الرئيسي بين الأمثلة على تفسير وPython3 Python2