Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1799 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  23282  23283  23284  ..  27191  27192  27193  27194  27195  27196
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°2352850
b_b_rodrig​uez
Posté le 29-04-2020 à 00:50:38  profilanswer
 

Reprise du message précédent :

DDT a écrit :


JavaFX se défend mais c'est pas super vendeur.


Dans quel sens ? Le côté propriétaire ? Ou le peu d'adoptions ?
D'ailleurs en parlant de Java, j'utilise quelques softs qui sont basés dessus, et bien je les trouvent assez patauds. Ca marche bien, mais ça ne m'a pas l'air beaucoup plus réactif que Atom qui est basé sur Electron.
 

DDT a écrit :


Après si tu veux approfondir tes connaissances web, tu t'en tapes un peu de l'empreinte mémoire de ton app Electron, donc pourquoi pas.


 
C'est exactement ce que je suis dit vis à vis des connaissances web  :jap:  
J'ai toutefois dans l'idée de commercialiser le truc si j'arrive à faire ce que je veux. Ca reste cependant un objectif à l'horizon de quelques années.
 
Je pense démarrer quelques tutos Qt pour voir car ça me tente bien de faire ça en en python, le code est très propre :D
 
EDIT : __alt a poster entre-temps, je vois qu'il est du même avis :)

Message cité 1 fois
Message édité par b_b_rodriguez le 29-04-2020 à 00:52:42
mood
Publicité
Posté le 29-04-2020 à 00:50:38  profilanswer
 

n°2352851
___alt
Posté le 29-04-2020 à 00:51:29  profilanswer
 

b_b_rodriguez a écrit :

Dans quel sens ? Le côté propriétaire ? Ou le peu d'adoptions ?
D'ailleurs en parlant de Java, j'utilise quelques softs qui sont basés dessus, et bien je les trouvent assez patauds. Ca marche bien, mais ça ne m'a pas l'air beaucoup plus réactif que Atom qui est basé sur Electron.


 
Clairement vaut mieux une app Electron bien codée qu'un app Java mal branlée.


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2352852
b_b_rodrig​uez
Posté le 29-04-2020 à 00:57:16  profilanswer
 

___alt a écrit :


 
Clairement vaut mieux une app Electron bien codée qu'un app Java mal branlée.


 
 :jap:  
 
Je sais pas si ce soft est pas bien codé ou pas mais par ex PDFstudio viewer de chez qoppa, qui par ailleurs est absolument EXCELLENT avec plein de features (c'est ptet le probleme :D ), est assez lent.
Bon après j'ai un PC vraiment tout pourri pour l'instant donc c'est probablement un peu biaisé.
 
Bon aller, je tente des tutos sur Qt... Ptet aussi des bouquins s'il y a quelque chose de sympa.


Message édité par b_b_rodriguez le 29-04-2020 à 00:58:12
n°2352853
Devil'sTig​er
Posté le 29-04-2020 à 01:28:14  profilanswer
 

___alt a écrit :


 
Clairement vaut mieux une app Electron bien codée qu'un app Java mal branlée.


+1000
 
Go Electron, spa mal, et surtout largement moins relous que les autres cités.
 
JavaFX tout le monde s'en branle donc passe ton chemin.

n°2352854
tryptique
Stay hungry, stay foolish
Posté le 29-04-2020 à 02:56:11  profilanswer
 

gfive a écrit :

Question mise en oeuvre : j'ai 5 services soap et un batch qui peuvent écrire des données sur un même domaine.
 
Jusqu'à présent, rien n'a été fait pour éviter les modifications concurrentes.
 
On a 6 pods qui font tourner les soap, Et un pod pour le batch
 
On propose de rendre le traitement asynchrone (de toutes façons, les appelants se foutent des réponses), en empilant les demandes et avec un démon qui consomme.
 
Mais un seul thread de consommation ne suffira pas : on voudrait pouvoir scaler le nombre de consommateurs dynamiquement , tout en évitant que 2 consommateurs n'attaquent le même périmètre de données.
 
On a une idée qui marchera a base d'une table des id de périmètres qui porterait un lock et de " select for update skip locked", mais je me demande s'il n'y a pas des outils qui font ça?


Naïvement je prendrai n queue et tu décides dans quelle queue tu mets la demande à base de tes id de périmètre modulo le nombre de queue. Après ça devient un peu technique si tu dois splitter une queue alors qu'elle n'est pas vide.
Ou alors tu prends une technologie qui gère le sharding nativement, mais je sais pas si ça existe en open source.


---------------
"J'ai les goûts les plus simples du monde, je me contente du meilleur" O. Wilde - Freedom of time is the new luxury. Time to sleep, work, play, relax, travel, inspire and get inspired. Time to write your story.
n°2352855
skeye
Posté le 29-04-2020 à 08:15:37  profilanswer
 

gfive a écrit :

Question mise en oeuvre : j'ai 5 services soap et un batch qui peuvent écrire des données sur un même domaine.
 
Jusqu'à présent, rien n'a été fait pour éviter les modifications concurrentes.
 
On a 6 pods qui font tourner les soap, Et un pod pour le batch
 
On propose de rendre le traitement asynchrone (de toutes façons, les appelants se foutent des réponses), en empilant les demandes et avec un démon qui consomme.
 
Mais un seul thread de consommation ne suffira pas : on voudrait pouvoir scaler le nombre de consommateurs dynamiquement , tout en évitant que 2 consommateurs n'attaquent le même périmètre de données.
 
On a une idée qui marchera a base d'une table des id de périmètres qui porterait un lock et de " select for update skip locked", mais je me demande s'il n'y a pas des outils qui font ça?


 
soit je suis pas bien réveillé, soit c'est le genre de problèmes auxquels kafka est censé répondre, non?


---------------
Can't buy what I want because it's free -
n°2352859
gfive
Posté le 29-04-2020 à 08:49:18  profilanswer
 

DDT a écrit :


Je comprends pas grand chose à ta question, mais si tu veux utiliser ta BDD comme une queue, bah l'outil qui fait ça mieux c'est... une queue ?


 

ratibus a écrit :


 
Dans notre infra je viens de dégager Rabbitmq au profit d'une queue MySQL, dépilée de manière concurrentielle par des cronjobs lancés toutes les minutes avec une durée de vie de 10 minutes par défaut.  
Ça tourne au poil et ça simplifie grandement mon infra. Après j'ai pas énormément de messages non plus à gérer et j'ai pas fait de gros bench pour voir jusqu'où ça tient. J'en ferai dans les prochaines semaines par curiosité :)
 
T'as combien de messages à gérer en volume ?
 
On a trouvé une technique bien plus efficace que le select for update (tirée du bouquin "High performance MySQL" ), que je peux te détailler si le sujet t'intéresse.


 

tryptique a écrit :


Naïvement je prendrai n queue et tu décides dans quelle queue tu mets la demande à base de tes id de périmètre modulo le nombre de queue. Après ça devient un peu technique si tu dois splitter une queue alors qu'elle n'est pas vide.
Ou alors tu prends une technologie qui gère le sharding nativement, mais je sais pas si ça existe en open source.


 

skeye a écrit :


 
soit je suis pas bien réveillé, soit c'est le genre de problèmes auxquels kafka est censé répondre, non?


 
Réponse groupée :
 
 
 
La problématique :
 

  • J'ai des opérations à traiter sur des "points", qui se basent sur la situation du point => je dois proscrire l'exécution simultanée de 2 opérations sur le même point.
  • Je voudrais la plus grande souplesse possible sur la capacité de traitement : on a une charge qui n'est pas lisse du tout (sur ~400 k appels / jour, j'en ai souvenr 380k sur 2h, et le reste étalé dans la journée)
  • Je ne veux pas que ça constitue du stock : les opérations de la nuit (on est en bout de chaîne, entre 5h30 et 7h à la louche) doivent être traitées le matin 8h si possible.


Aujourd'hui, j'ai 6 pods (on est sur Openshift) qui traitent les appels, et ça tient. Mais ils se branlent la nouille pendant les 3/4 du temps.
 
Si je mets un seul pod de traitement, j'ai peur qu'il faille le dimensionner énorme pour encaisser la charge de la nuit, et qu'il ne foute rien le reste du temps. Et puis ça correspond pas à l'idée de scaler intelligemment, quoi.
 
Donc, je voudrais pouvoir ajouter des pods en fonction de la charge... Sauf que tous les pods ont la même config, si je ne me trompe pas.  
 
Au départ on avait imaginé une solution à base de "mono pod" :  
 
On décidait le nombre de threads de traitement, et chaque thread prenait les opérations pour les points dont HASH(id, Nombre_de_thread) = une valeur
 
Mais ça marche pas avec plusieurs pods, ça
 
Donc l'idée est d'avoir 2 tables :
 
* OPERATION : les opérations,
* POINTS : les ID de points en traitement
 
Côté services :
 

  • on ajoute l'ID de point dans POINTS avec un merge, s'il n'y est pas.
  • on ajoute l'opération


Côté démon de traitement :
 

  • un pod fait un "select for update skip locked" dans POINTS, en chopant l'ID du point de l'opération la plus ancienne à traiter.
  • Il traite les opérations du point.
  • S'il y a des nouvelles opérations, il ne fait rien, sinon il supprime la ligne dans POINTS.


 
Mais d'une part onn'a pas de certitude que ça marche, et d'autre part, s'il y a déjà des trucs qui existent, pourquoi pas.
 
Kafka, je sais pas, je connais pas bien..A voir.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2352860
skeye
Posté le 29-04-2020 à 09:38:31  profilanswer
 

Avec kafka tu peux découper tes données en topics et partitions, avoir des consommateurs multiples (et groupables), que tu peux ajouter facilement pour faire de la répartition de charge...il y a probablement un certain investissement technique pour regarder ce qui correspond le mieux au besoin, mais vu d'ici ça doit répondre.


---------------
Can't buy what I want because it's free -
n°2352861
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 29-04-2020 à 09:43:55  profilanswer
 

DDT a écrit :


Qt est le toolkit multiplateforme par excellence, loin devant GTK. Utilisable en Python si tu veux.


 
Un mélange python/QT ça doit en effet pas être mal niveau propreté, maturité de l'outil, etc etc. Si on ne retient pas la solution web/js je choisirai ça aussi je pense.


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2352862
Hermes le ​Messager
Breton Quiétiste
Posté le 29-04-2020 à 09:47:34  profilanswer
 

Xavier_OM a écrit :


 
Un mélange python/QT ça doit en effet pas être mal niveau propreté, maturité de l'outil, etc etc. Si on ne retient pas la solution web/js je choisirai ça aussi je pense.


 
Par contre, c'est quoi le meilleur IDE en 2020 avec glisser/déposer des widgets  sur Windows ? Parce que les démos que j'ai vu, ça semble assez pénible de tout installer et de tout configurer... Ya toujours que QT designer?


---------------
Expert en expertises
mood
Publicité
Posté le 29-04-2020 à 09:47:34  profilanswer
 

n°2352863
flo850
moi je
Posté le 29-04-2020 à 09:48:05  profilanswer
 

b_b_rodriguez a écrit :

Bonjoir !

 

Je devrais terminer une formation de développeur web dans les mois qui viennent et j'aimerais démarrer un projet : un logiciel avec GUI qui tournerait sur les principales plateformes desktop : linux, windows et mac. Je laisse de côté les mobiles, du moins pour l'heure, car cela ne s'y prête pas vraiment.
Ça va clairement bien au-delà et à côté de ce qu'on a vu dans la formation mais c'est quelque chose que j'aimerais néanmoins tenter de construire au fur et à mesure.

 

Je sais que ce n'est pas vraiment optimisé et décrié à droite à gauche mais que pensez-vous de ElectronJS ? J'avoue que pouvoir utiliser les langages web que j'ai déjà commencer à apprendre et pouvoir déployer ça "facilement" sur les différentes plateformes se révèle tentant. Et puis si VSCode ou Discord sont basés dessus ça ne doit pas être si horrible non plus.

 

Deux autres possibilités que je vois, qui correspondent à ce que j'ai appris :
1) Java, forcément c'est fait pour : déjà plus complexe à ce que j'en vois.
2) Python, avec GTK.

 

Pourriez-vous me donner votre avis sur ces différents choix ? Avantages et inconvénients... C'est quasi impossible de se faire une idée plus ou moins précise en me basant sur ce que je sais à ce stade.

 

Ce que j'ai vu jusqu’à maintenant en gros : HTML/CSS + JS + Mysql + PHP + Android Studio (Java) + Python

 

Si tu n'as pas besoin d'accéder aux données de l'ordi ( accès aux fichiers en masse, accès a des capteurs, ...) tu peux aussi regarder du côté du pur web (PWA )  , et n'introduire electron que lorsque tu en as besoin

 

Par exemple, tu peu déjà utiliser une appli web et la publier sur le store android : https://developers.google.com/web/a [...] b-activity ou windows 10 https://docs.microsoft.com/en-us/mi [...] soft-store et elles s'exécuteront sur toutes les plateformes avec un navigateur moderne


Message édité par flo850 le 29-04-2020 à 09:50:13

---------------

n°2352864
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 29-04-2020 à 09:53:42  profilanswer
 

Hermes le Messager a écrit :


 
Par contre, c'est quoi le meilleur IDE en 2020 avec glisser/déposer des widgets  sur Windows ? Parce que les démos que j'ai vu, ça semble assez pénible de tout installer et de tout configurer... Ya toujours que QT designer?


 
QT Creator est un bon IDE mais pour C++ (une alternative à Visual Studio ou CLion). Pour le design des interfaces je ne sais pas trop, en général les gens décrivent tout en qml donc ce n'est pas visuel (pas de glisser/déposer de widget). Et pour un IDE Python aucune idée, PyCharm sans doute.


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2352865
flo850
moi je
Posté le 29-04-2020 à 09:57:53  profilanswer
 

J'en ai soupé des outil de design d'interface : ça marche très bien pour les designer ( sketch par exemple), mais c'est pénible au fur et à mesure que l'appli grandi et que la logique métier se rapprooche du monde réél
 
source : xcode+storyboard, et comme beaucoup, je suis revenu à la description des apps dans le code (alors même que le langage de définition de la mise en page en UIKit est verbeux et mauvais)


---------------

n°2352866
gfive
Posté le 29-04-2020 à 10:15:42  profilanswer
 

skeye a écrit :

Avec kafka tu peux découper tes données en topics et partitions, avoir des consommateurs multiples (et groupables), que tu peux ajouter facilement pour faire de la répartition de charge...il y a probablement un certain investissement technique pour regarder ce qui correspond le mieux au besoin, mais vu d'ici ça doit répondre.


 
Je suis pas sûr que ça réponde au problème de "si j'ajoute un consommateur, est-ce que je suis certain qu'il ne consommera pas de données relatives à un point dont un autre consommateur est en train de s'occuper".
 
Le coup des topics et partitions, j'ai peur que ça réponde pas au besoin de scalabilité "à conf identique"
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2352867
DDT
Few understand
Posté le 29-04-2020 à 10:27:10  profilanswer
 

gfive a écrit :


Kafka, je sais pas, je connais pas bien..A voir.


Ton pod consommateur, tu peux pas lui mettre des limites basses et hautes très élastiques? Plutôt qu'en avoir plusieurs.
T'as ~50 requêtes par secondes pendant deux heures en gros?
Tu devrais pouvoir ingérer ça sans trop de problème.
 
Kafka c'est bien mais tu vas déplacer la complexité vers la manière dont tu gères les consommateurs.


---------------
click clack clunka thunk
n°2352868
flo850
moi je
Posté le 29-04-2020 à 10:28:34  profilanswer
 

Je vois quelques cas limites :  
 
Coté service, il faut créer un nouveau point si le point est déjà en court de traitement pour que le consommateur se relance avec les nouvelles données
 
Coté consommateur : il faut qu'il copie les données dont il a besoin au début, sinon il risque d'avoir des données qui bougent lorsqu'un service ajoutera un nouveau point
 
 
Moi je verrai une table  
[pointId, operation, lineCounter, state ] state ={waiting, active, done}
 
 
Les services ne modifient pas de ligne, mais ajoutent systématiquement des lignes, il n'ont pas le droit de modifier la colonne state
 
Le / Les consommateur prennent la ligne la plus ancienne qui correspond à un point pas en cours de traitement
 
Et même , je ne ferai pas une colonne de statut, mais 3 dates : createdAt, activatedAt, doneAt  pour te permettre de monitorer tout ça et de scaler intelligement
 
En journée, cette table est agglomérée dans des stats et purgée


---------------

n°2352869
skeye
Posté le 29-04-2020 à 10:29:01  profilanswer
 

gfive a écrit :


 
Je suis pas sûr que ça réponde au problème de "si j'ajoute un consommateur, est-ce que je suis certain qu'il ne consommera pas de données relatives à un point dont un autre consommateur est en train de s'occuper".
 
Le coup des topics et partitions, j'ai peur que ça réponde pas au besoin de scalabilité "à conf identique"
 


 
Sauf erreur de ma part si tu partitionnes tes topics, chaque partition est affectée à un et un seul groupe de consommateurs. Du coup si tu ajoutes un nouveau groupe de consommateurs, les partiitions vont être réaffectées, mais tu auras toujours la garantie qu'un seul groupe gère une partition. Donc potentiellement ton truc c'est un consommateur = un groupe, et les opérations d'un point à garantir dans la même partition en entrée.
Les partitions de ton topic deviennent des "groupes de points" et tu répartis ta charge en fonction de ces groupes de points. Par contre il faudra prévoir un nombre de partitions supérieur ou égal au nombre max de consommateurs que tu veux pouvoir coller dessus...
la seule différence de conf entre 2 consommateurs ce serait l'ID du groupe, ça parait raisonnable...
 
...ou alors je fume la moquette sur ce que fait kafka...[:dawak]


---------------
Can't buy what I want because it's free -
n°2352870
flo850
moi je
Posté le 29-04-2020 à 10:29:19  profilanswer
 

Mais en vrai, si ça tourne aujourd'hui, qu'il n'y a pas trop de cout de fonctionnement, qu'il n'y a pas trop de montée en charge prévisible => je n'optimiserai pas


---------------

n°2352871
Harkonnen
Un modo pour les bannir tous
Posté le 29-04-2020 à 10:32:20  profilanswer
 

___alt a écrit :


 
Clairement vaut mieux une app Electron bien codée qu'un app Java mal branlée.


Ouais mais c'est toujours le même problème : on se trimballe des tonnes de dépendances. Quand je vois des projets Java, web, Electron ou autres qui réalisent des tâches triviales et qui ont besoin de centaines de Mo de dépendances, ça me fait juste chier.


---------------
J'ai un string dans l'array (Paris Hilton)
n°2352872
masklinn
í dag viðrar vel til loftárása
Posté le 29-04-2020 à 10:32:43  profilanswer
 

TIL: les Mars non-US sont une copie des Milky Way US, les Mars US originaux n’ont aucun rapport, et les Milky Way non-US s’appellent 3 musketeers aux US.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2352874
flo850
moi je
Posté le 29-04-2020 à 10:42:26  profilanswer
 

Harkonnen a écrit :


Ouais mais c'est toujours le même problème : on se trimballe des tonnes de dépendances. Quand je vois des projets Java, web, Electron ou autres qui réalisent des tâches triviales et qui ont besoin de centaines de Mo de dépendances, ça me fait juste chier.


Tu généralises
Visual studio est une app electron, atom aussi  
 
Par contre, c'est facile de faire de la merde (mais elle est faite rapidement et elle marche facilement, ce n'est pas si pire)


---------------

n°2352875
masklinn
í dag viðrar vel til loftárása
Posté le 29-04-2020 à 10:43:54  profilanswer
 

Ça existe des outils point se faire des dash de perfs style arewefastyet? (mais documentés et génériques, quand j’avais regardé arewefastyet c’était plus ou moins hard-codé pour aller chercher des trucs chez Mozilla, dans perfherder).

Message cité 1 fois
Message édité par masklinn le 29-04-2020 à 10:45:25

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2352876
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 29-04-2020 à 10:48:21  profilanswer
 

masklinn a écrit :

Ça existe des outils point se faire des dash de perfs style arewefastyet? (mais documentés et génériques, quand j’avais regardé arewefastyet c’était plus ou moins hard-codé pour aller chercher des trucs chez Mozilla, dans perfherder).


 :??: à la perf/perftop ?  ( https://perf.wiki.kernel.org/index. [...] h_perf_top )


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2352877
masklinn
í dag viðrar vel til loftárása
Posté le 29-04-2020 à 11:06:42  profilanswer
 


Non, à la arewefastyet.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2352878
R3g
fonctionnaire certifié ITIL
Posté le 29-04-2020 à 11:45:05  profilanswer
 

masklinn a écrit :

TIL: les Mars non-US sont une copie des Milky Way US, les Mars US originaux n’ont aucun rapport, et les Milky Way non-US s’appellent 3 musketeers aux US.


Et les Mars US ils ressemblent à quoi ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°2352879
masklinn
í dag viðrar vel til loftárása
Posté le 29-04-2020 à 11:49:17  profilanswer
 

R3g a écrit :


Et les Mars US ils ressemblent à quoi ?


J’ai pas trouvé d’équivalent. C’est un nougat aux amandes enrobé de chocolat (sans caramel).
 
Ce qui s’en rapproche le plus c’est le snickers amande (qui a d’ailleurs remplacé le mars US), sans le caramel.

Message cité 2 fois
Message édité par masklinn le 29-04-2020 à 11:52:28

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2352880
R3g
fonctionnaire certifié ITIL
Posté le 29-04-2020 à 11:51:13  profilanswer
 

masklinn a écrit :


J’ai pas trouvé d’équivalent. C’est un nougat aux amandes enrobé de chocolat (sans caramel).


Oui apparemment c'est un snickers amandes. Et la version non-US _est_ la version originale, la barre Mars US a été créée après (et abandonnée depuis)


---------------
Au royaume des sourds, les borgnes sont sourds.
n°2352881
gfive
Posté le 29-04-2020 à 11:52:18  profilanswer
 

DDT a écrit :


Ton pod consommateur, tu peux pas lui mettre des limites basses et hautes très élastiques? Plutôt qu'en avoir plusieurs.


 
bah c'est la solution la plus simple. Mais si on veut qu'il puisse scaler tranquille, il faut réserver sa capacité max sur le noeud du cluster où il est déployé (parce que sinon il pourra pas monter en charge quand il en aura besoin)
Alors que si tu monte un pod, OSEF de sur quel noeud on le met.
 
 

flo850 a écrit :

Je vois quelques cas limites :  
 
(1) Coté service, il faut créer un nouveau point si le point est déjà en court de traitement pour que le consommateur se relance avec les nouvelles données
 
(2) Coté consommateur : il faut qu'il copie les données dont il a besoin au début, sinon il risque d'avoir des données qui bougent lorsqu'un service ajoutera un nouveau point
 
 
Moi je verrai une table  
[pointId, operation, lineCounter, state ] state ={waiting, active, done}
 
 
Les services ne modifient pas de ligne, mais ajoutent systématiquement des lignes, il n'ont pas le droit de modifier la colonne state
 
Le / Les consommateur prennent la ligne la plus ancienne qui correspond à un point pas en cours de traitement
 
Et même , je ne ferai pas une colonne de statut, mais 3 dates : createdAt, activatedAt, doneAt  pour te permettre de monitorer tout ça et de scaler intelligement
 
En journée, cette table est agglomérée dans des stats et purgée


 
1 : j'ai dû mal expliquer : la table "POINTS" contient juste les ID des points. Le service y ajoute l'ID du point quand il écrit son opération, s'il n'y est pas déjà, et c'est tout.
Les opérations sont toujours ajoutées dans la table des opérations.
 
 
2 : les donnéers de la table OPERATIONS ne sont jamais modifiées. Le consommateur les lit, et les supprime quand il a fini. Le contenu de cette table doit être un flux, pas un stock.
 
 
 
 

skeye a écrit :


 
Sauf erreur de ma part si tu partitionnes tes topics, chaque partition est affectée à un et un seul groupe de consommateurs. Du coup si tu ajoutes un nouveau groupe de consommateurs, les partiitions vont être réaffectées, mais tu auras toujours la garantie qu'un seul groupe gère une partition. Donc potentiellement ton truc c'est un consommateur = un groupe, et les opérations d'un point à garantir dans la même partition en entrée.
Les partitions de ton topic deviennent des "groupes de points" et tu répartis ta charge en fonction de ces groupes de points. Par contre il faudra prévoir un nombre de partitions supérieur ou égal au nombre max de consommateurs que tu veux pouvoir coller dessus...
la seule différence de conf entre 2 consommateurs ce serait l'ID du groupe, ça parait raisonnable...
 
...ou alors je fume la moquette sur ce que fait kafka...[:dawak]


 
hmmmm, ça marcherait, ça. Mais encore une fois : tu es obligé que chaque consommateur soit identifiable. Or dans un environnement genre K8S/Openshift, à ma connaissance tous les pods partagent la même config. Le seul truc qui permet de les identifier, àç la limite c'est le hostname.
Du coup, est-ce que Kafka peut gérer dynamiquement une nouvelle partition qui apparaît ou disparaît, et de lui affecter automatiquement un consommateur, pour faire en sorte qu'il y ait toujours un consommateur par partition?
 

flo850 a écrit :

Mais en vrai, si ça tourne aujourd'hui, qu'il n'y a pas trop de cout de fonctionnement, qu'il n'y a pas trop de montée en charge prévisible => je n'optimiserai pas


 
Aujourd'hui ça tourne pas! :D
 
A pleine charge, on a le client qui nous bombarde de requêtes, sans se préoccuper de l'ordre / point. Donc si on a la requête MODIF_1 sur le point 1, qui arrive, et 2 millisecondes plus tard, l'opération MODIF_2 sur le même point qui arrive sur un autre pod, les 2 vont se baser sur le même état du point, alors que MODIF_2 devrait se baser sur la situation après application de MODIF_1.
 
Et on peut pas locker les points parce qu'il y a un timeout assez court, qui fait que si MODIF_2 échoue à cause de ça, elle sera rejouée 30 minutes plus tard  
(même s de notre côté, on l'applique quand même : le timeout ne concerne que le client)
 
(du coup, quand on a les pods ras la gueule pendant plus de 30 minutes, , on a un effet boule de neige qui fait chier)


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2352882
masklinn
í dag viðrar vel til loftárása
Posté le 29-04-2020 à 11:53:16  profilanswer
 

R3g a écrit :


Oui apparemment c'est un snickers amandes. Et la version non-US _est_ la version originale, la barre Mars US a été créée après (et abandonnée depuis)


J’ai bien précisé « la version US originelle ».


Message édité par masklinn le 29-04-2020 à 11:53:32

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2352883
nraynaud
lol
Posté le 29-04-2020 à 11:58:15  profilanswer
 

HArko a entendu dire qu'il y a de la thune à faire dans le traitement de données https://twitter.com/emmawage/status/1255172980788785152


---------------
trainoo.com, c'est fini
n°2352884
skeye
Posté le 29-04-2020 à 12:02:52  profilanswer
 

gfive a écrit :


hmmmm, ça marcherait, ça. Mais encore une fois : tu es obligé que chaque consommateur soit identifiable. Or dans un environnement genre K8S/Openshift, à ma connaissance tous les pods partagent la même config. Le seul truc qui permet de les identifier, àç la limite c'est le hostname.
Du coup, est-ce que Kafka peut gérer dynamiquement une nouvelle partition qui apparaît ou disparaît, et de lui affecter automatiquement un consommateur, pour faire en sorte qu'il y ait toujours un consommateur par partition?

 

Aucune idée, je suis pas expert du truc, j'ai juste regardé à quoi ça ressemblait quand les collègues ont commencé à s'en servir...je vais surement jouer avec d'ici quelques mois, mais là tout de suite j'en sais pas plus.[:joce]
Après tu as toujours moyen d'avoir un service qui distribue des identifiants de groupe uniques  et tes consommateurs qui interrogent ce service au démarrage pour obtenir un n° unique (ou même tu bataille pas et tu utilises un UUID généré au démarrage comme id de groupe...). Comme ça tes consommateurs sont tous identiques mais consomment tous des données strictement cloisonnées.

 

[edit]

 

... et tu as pas besoin de garantir un consommateur par partition toi même, juste qu'il y a au moins autant de partitions que de (groupes de) consommateurs. C'est kafka qui se charge de la répartition et qui s'adapte quand tu rajoutes des consommateurs.

 

[edit2]

 

..je m’emmêle les pinceaux avec les groupes en fait je crois, il faut probablement que tous tes consommateurs soient dans le même groupe au contraire :

 

https://kafka.apache.org/intro

 
Citation :

The way consumption is implemented in Kafka is by dividing up the partitions in the log over the consumer instances so that each instance is the exclusive consumer of a "fair share" of partitions at any point in time. This process of maintaining membership in the group is handled by the Kafka protocol dynamically. If new instances join the group they will take over some partitions from other members of the group; if an instance dies, its partitions will be distributed to the remaining instances.

 


... du coup c'est encore plus simple à scaler...


Message édité par skeye le 29-04-2020 à 12:12:57

---------------
Can't buy what I want because it's free -
n°2352885
DDT
Few understand
Posté le 29-04-2020 à 12:19:22  profilanswer
 

skeye a écrit :

 

Sauf erreur de ma part si tu partitionnes tes topics, chaque partition est affectée à un et un seul groupe de consommateurs. Du coup si tu ajoutes un nouveau groupe de consommateurs, les partiitions vont être réaffectées, mais tu auras toujours la garantie qu'un seul groupe gère une partition.


Si je dis pas de bêtises:
Tu peux avoir autant de groupes que tu veux qui consomment un topic.
À l'intérieur d'un groupe, Kafka s'assure que les messages soient consommés une seule fois.
Tu peux avoir un ou plusieurs consommateurs par groupe, qui sont dynamiquement assignés aux partitions du topic.

 

Donc il faudrait que gfive crée M topics (un par point), avec N partitions pour pouvoir distribuer sur N consommateurs comme tu l'as dit.
Un pod devra lancer M consommateurs, chacun dans leur propre groupe. Et là tu peux scaler jusqu'à N pods.

 

Edit: oui voilà. :jap:

Message cité 2 fois
Message édité par DDT le 29-04-2020 à 12:20:00

---------------
click clack clunka thunk
n°2352886
___alt
Posté le 29-04-2020 à 12:24:36  profilanswer
 

Harkonnen a écrit :


Ouais mais c'est toujours le même problème : on se trimballe des tonnes de dépendances. Quand je vois des projets Java, web, Electron ou autres qui réalisent des tâches triviales et qui ont besoin de centaines de Mo de dépendances, ça me fait juste chier.


 
Tu sais que Java est modulaire depuis Java 9 et que tu peux packager des apps avec des runtimes allégés ?


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2352887
DDT
Few understand
Posté le 29-04-2020 à 12:29:06  profilanswer
 

Et y a même GraalVM native image! Enfin quand ça marche. [:tinostar]
Apparemment y a des gens qui font du JavaFX avec ça (Gluon).


---------------
click clack clunka thunk
n°2352888
Jubijub
Parce que je le VD bien
Posté le 29-04-2020 à 13:10:49  profilanswer
 

masklinn a écrit :

TIL: les Mars non-US sont une copie des Milky Way US, les Mars US originaux n’ont aucun rapport, et les Milky Way non-US s’appellent 3 musketeers aux US.


 
Oui, c'est le fils de l'inventeur de l'un qui a inventé l'autre, non ?


---------------
Jubi Photos : Flickr - 500px
n°2352889
skeye
Posté le 29-04-2020 à 13:15:21  profilanswer
 

DDT a écrit :


Si je dis pas de bêtises:
Tu peux avoir autant de groupes que tu veux qui consomment un topic.
À l'intérieur d'un groupe, Kafka s'assure que les messages soient consommés une seule fois.
Tu peux avoir un ou plusieurs consommateurs par groupe, qui sont dynamiquement assignés aux partitions du topic.
 
Donc il faudrait que gfive crée M topics (un par point), avec N partitions pour pouvoir distribuer sur N consommateurs comme tu l'as dit.
Un pod devra lancer M consommateurs, chacun dans leur propre groupe. Et là tu peux scaler jusqu'à N pods.
 
Edit: oui voilà. :jap:


 
Du coup je voyais un seul topic mais N partitions, et X consommateurs (dans le m^mee groupe, du coup) avec X <= N.
Et j'y connais rien à kubernetes, mais pour moi l'idée pour scaler c'était un conteneur pas consommateur, quand on a plus de besoins on en démarre plus et youpi.:o Si kubernetes est aussi bien que c'est vendu par les collègues, il doit même être possible d'en démarrer un gros paquet la nuit quand il y a de la charge et de réduire la journée...


---------------
Can't buy what I want because it's free -
n°2352890
gfive
Posté le 29-04-2020 à 13:17:40  profilanswer
 

DDT a écrit :


Si je dis pas de bêtises:
Tu peux avoir autant de groupes que tu veux qui consomment un topic.
À l'intérieur d'un groupe, Kafka s'assure que les messages soient consommés une seule fois.
Tu peux avoir un ou plusieurs consommateurs par groupe, qui sont dynamiquement assignés aux partitions du topic.
 
Donc il faudrait que gfive crée M topics (un par point), avec N partitions pour pouvoir distribuer sur N consommateurs comme tu l'as dit.
Un pod devra lancer M consommateurs, chacun dans leur propre groupe. Et là tu peux scaler jusqu'à N pods.
 
Edit: oui voilà. :jap:


 
 
[:tinostar] J'ai plusieurs millions de points.
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2352891
skeye
Posté le 29-04-2020 à 13:20:40  profilanswer
 

gfive a écrit :

 


[:tinostar] J'ai plusieurs millions de points.

 



...du coup un topic et N partitions.:o

 

...et juste s'assurer qu'un point ne change pas de partition coté producteurs :o

Message cité 1 fois
Message édité par skeye le 29-04-2020 à 13:22:49

---------------
Can't buy what I want because it's free -
n°2352892
ratibus
Posté le 29-04-2020 à 13:22:54  profilanswer
 

masklinn a écrit :


J’ai pas trouvé d’équivalent. C’est un nougat aux amandes enrobé de chocolat (sans caramel).
 
Ce qui s’en rapproche le plus c’est le snickers amande (qui a d’ailleurs remplacé le mars US), sans le caramel.


 
Genre les barres Nuts ? (Mais Nuts c'est aux noisettes)

n°2352893
gfive
Posté le 29-04-2020 à 13:27:41  profilanswer
 

skeye a écrit :


 
Du coup je voyais un seul topic mais N partitions, et X consommateurs (dans le m^mee groupe, du coup) avec X <= N.
Et j'y connais rien à kubernetes, mais pour moi l'idée pour scaler c'était un conteneur pas consommateur, quand on a plus de besoins on en démarre plus et youpi.:o Si kubernetes est aussi bien que c'est vendu par les collègues, il doit même être possible d'en démarrer un gros paquet la nuit quand il y a de la charge et de réduire la journée...


 
Exactement.
 
On peut anticiper la charge et faire monter les pods à l'avance, ou bien faire monter des pods selon la charge, on doit même pouvoir le déclencher sur la taille de file d'attente, vu qu'on peut écrire des métriques custom, il me semble.
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2352894
R3g
fonctionnaire certifié ITIL
Posté le 29-04-2020 à 13:54:39  profilanswer
 

Jubijub a écrit :


 
Oui, c'est le fils de l'inventeur de l'un qui a inventé l'autre, non ?


Le père a inventé la recette aux US et l’a refilée à son fils qui l’a rebrandée en Angleterre


---------------
Au royaume des sourds, les borgnes sont sourds.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  23282  23283  23284  ..  27191  27192  27193  27194  27195  27196

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)