Daily Bo Shu "fait roues" --cicada (cadre léger WEB)

La Chine préoccupée par le nombre global OSC open source, obtenir les dernières informations techniques

avant-propos

Comme le dit le dicton, « Ne pas recréer la roue » à l'égard de savoir s'il faut pas la portée de cette discussion plus.

L'objectif principal de ce projet est de créer ou d'améliorer leur apparence et les projets open source bien connus comme les lacunes d'apprentissage et une excellente façon open source.

Eh bien, maintenant nous nous concentrons sur les fonctions essentielles de cigale parler de ce projet.

Je lui définirais comme un moyen rapide, cadre WEB léger, il n'y a pas de dépendance excessive sur l'emballage jar de base seulement 30KB.

Est-ce une seule ligne de code pour démarrer un service HTTP.

propriété

Maintenant, nous allons parler de quelques caractéristiques importantes.

La principale réalisation de la version actuelle des demandes de base, les réponses et les paramètres personnalisés fonction intercepteurs.

Fonction, bien que petite, mais parfaitement formé.

Dans la prochaine itération permettra d'améliorer progressivement la fonction de la figure, il y a de bonnes idées sont également les bienvenus parler https://github.com/crossoverJie/cicada/issues.

Guide de démarrage rapide

Le regard de déposons sur la façon de démarrer rapidement un service HTTP.

Il suffit de créer un projet Maven, et l'introduction du paquet de base.

< dépendance > < groupId > top.crossoverjie.opensource < / GroupId > < artifactId > cigale-core < / ArtifactId > < version > 1.0.0 < / version > < / dépendance >

Comme indiqué plus haut, puis commencer une classe peut être configuré.

public class {MainStart public static void main (String args) throws InterruptedException { CicadaServer.start (MainStart.class, "/ cigale exemple"); } }

Configuration de l'action entreprise

Bien sûr, nous avons aussi besoin d'un endroit pour mettre en uvre la logique métier. cigale fournit une interface qui a seulement besoin de mettre en uvre les interfaces logiques spécifiées peuvent être réalisées.

Création d'une action entreprise pour atteindre l'interface top.crossoverjie.cicada.server.action.WorkAction.

@CicadaAction (value = "demoAction") public class {DemoAction outils WorkAction static final privé enregistreur ENREGISTREUR = LoggerBuilder.getLogger (DemoAction.class); Indice de AtomicLong de private static = new AtomicLong (); @Override WorkRes publics < DemoResVO >  exécuter (Param paramMap) throws Exception { String name = paramMap.getString ( "name"); Entier ID = paramMap.getInteger ( "id"); LOGGER.info ( "name = , id = ", nom, id); DemoResVO demoResVO = new DemoResVO (); demoResVO.setIndex (index.incrementAndGet ()); WorkRes < DemoResVO >  res = new WorkRes (); res.setCode (StatusEnum.SUCCESS.getCode ()); res.setMessage (StatusEnum.SUCCESS.getMessage ()); res.setDataBody (demoResVO); retour res; } }

En même temps, la nécessité d'ajouter une annotation @CicadaAction de classe personnalisée et spécifiez une valeur, dont la valeur est principalement à la classe de trafic peut être trouvé sur demande itinéraire.

Donc, commencer l'application et l'accès

Capable d'exécuter serveur renvoie la logique métier l'obtient en même temps.

Actuellement pris en charge par défaut est la réponse JSON, ce dernier ajoutera l'analyse syntaxique du modèle.

Les services seront également imprimer les journaux concernés.

Configuration des paramètres flexibles

Ici, toutes les demandes sont encapsulées dans le paramètre dans une API Param qui peut utiliser une variété de demande d'acquisition de données.

La raison en est souple: on peut même demander à ceci:

« : { "Age": 22, "Nom": "Zhangsan" }

Ces données peuvent être transférées dans toute structure, aussi longtemps que le traitement peut être de service analysable.

intercepteurs personnalisés

Sont les intercepteurs fonctions de base d'un cadre, vous pouvez utiliser des intercepteurs pour réaliser l'enregistrement, commits de transaction et d'autres travaux généraux.

A cette fin cigale fournir une interface: top.crossoverjie.cicada.server.intercept.CicadaInterceptor.

Nous avons juste besoin d'implémenter l'interface pour écrire les fonctionnalités de blocage:

@Interceptor (value = "executeTimeInterceptor") public class ExecuteTimeInterceptor implémente CicadaInterceptor { static final privé enregistreur ENREGISTREUR = LoggerBuilder.getLogger (ExecuteTimeInterceptor.class); privé démarrage trop long; privé fin à long; @Override public void avant (Param param) { start = System.currentTimeMillis (); } @Override public void après (Param param) { fin = System.currentTimeMillis (); Logger.INFO ( "cast {} fois", fin - début); } }

Voici un enregistrement de démonstration du temps d'exécution de l'action.

Actuellement, seule l'action par défaut pour réaliser l'interception, ce dernier va également ajouter des intercepteurs personnalisés.

adaptateur interception

Bien que la fourniture d'un avant / après les deux méthodes dans l'intercepteur, mais pas toutes les méthodes sont nécessaires pour mettre en uvre.

Par conséquent, un adaptateur fournit cigale:

top.crossoverjie.cicada.server.intercept.AbstractCicadaInterceptorAdapter

Nous devons continuer à sa demande d'obtenir une méthode qui peut être comme suit:

@Interceptor (value = "loggerInterceptor") public class LoggerInterceptorAbstract étend AbstractCicadaInterceptorAdapter { static final privé enregistreur ENREGISTREUR = LoggerBuilder.getLogger (LoggerInterceptorAbstract.class); @Override public void avant (Param param) { LOGGER.info ( "enregistreur param = ", param.toString ()); } }

Test de performance

Comme il est un cadre de service HTTP, nous devons veiller à ce que la performance naturelle.

Dans les conditions d'essai: détecter la pression simultanée de deux consécutifs 300, la mémoire 1G, monocytes CPU, 1 Mbps.. fait suite à la pression mesurée avec Jmeter:

Le même serveur avec Tomcat pour test de pression et voir les résultats.

Tomcat configuration pool de threads:

< Nom Executor = "tomcatThreadPool" namePrefix = "consommateur Exec-" maxThreads = "510" MinSpareThreads = "10" / >

Je suis ici pour demander qu'un répertoire doc de Tomcat, bien que les résultats semblent les performances des cigales est plus forte que Tomcat.

Mais en fait, ce processus de comparaison ne pas complètement contrôler les variables, Tomcat est retourné HTML, et cigale vient de rentrer JSON, bien sûr, le problème est aussi plus que cela.

Mais dire encore la performance actuelle de cigale est bonne.

résumé

Cet article ne vous attardez pas sur le principe de la mise en uvre des cigales, intéressés peuvent regarder la source, sont relativement simples.

Dans une mise à jour ultérieure étudiera attentivement ce contenu.

Sans surprise, alors que la cigale continuera à mettre à jour à l'avenir ajouter des fonctionnalités plus utiles.

Même au moment opportun, je vais l'appliquer à mon projet de production, l'espoir d'autres amis à être impliqués plus avec cette « roue » à faire.

Blog Auteur: crossoverJie

Une colonne de blog quotidien, les articles techniques de qualité avec d'excellents blogueurs quotidien recommandé pour vous. Tout en se félicitant de la présentation de l'utilisateur, une fois que l'article est inclus dans le compte officiel, nous recommanderons oh à la maison et d'autres endroits. attention Open Source Chine OSC accès quotidien à pousser la qualité, cliquez sur " En savoir plus « Voir les adresses du projet.

Meng affaire est votre visage, a donné aux femmes le vote était une bonne collection numérique
Précédent
Les sociétés cotées de Tobacco Company, il comment faire de l'argent?
Prochain
Investissement dans les statistiques: un quart du secteur agricole de financement par CR / PE de la Chine a pris un plongeon
box-office Smashed, de bouche à oreille fracassé! Ce jour de l'An, le film Tang Wei Ge était tel ......
Investissement dans les statistiques: un quart de la consommation et le secteur des services de financement chaud vitesse constante introduction en bourse
le chef de Wuhan dans les pousses de cheveux antarctiques faire rizerie de tofu, mener une expédition multinationale « Cengfan »
count Vote: 131 entreprises a terminé le premier trimestre fixé par le collecte de fonds 497946000000 yuans
Il était beau! Ministère réseau officiel Meizu 15: écran non-plein avant + empreintes digitales + métal brossé
Daily Bo Shu Redis mémoire de hachage analyse de la structure du modèle
statistiques d'utilisation: trois nouvelles montée subite du conseil d'administration dans le premier plus chaud de financement du trimestre radiées
Apprenez à cultiver des légumes, la cuisson ne, la calligraphie ...... cette éducation gratuite collège communautaire aux résidents d'enseigner à apprendre
Stephen Chow, Teng Shen, Huang Bo sites sur stalle Nouvel An chinois, qui est le nouveau roi de la comédie? localisation précise jour de l'an
Daily Bo Shu Kubernetes v1.10.0 documentation d'installation de cluster
La principale différence entre l'exemple d'interprétation et python3 python2