Salve,
Come da titolo ... qualcuno ha utilizzato/utilizza JCS ? Se sì, con che performances e in che modalità ???
Grazie
Saluti a tutti
Benvenuto nella nostra community, registra un account gratuito ADESSO!
Oltre 7000 persone hanno già registrato il loro account.
Chiedi aiuto, conversa con aziende ed esperti del settore webhosting italiano.
Iscriviti subito! In meno di 2 minuti!
Salve,
Come da titolo ... qualcuno ha utilizzato/utilizza JCS ? Se sì, con che performances e in che modalità ???
Grazie
Saluti a tutti
Site Admin http://www.pctrio.com
Salve,
Ne deduco che nessuno che frequenta questo Forum ha mai utilizzato strumenti di caching per le sue applicazioni ... mi sembra strano ... però, può anche essere ... ma le performances ???
Ciao !!
Site Admin http://www.pctrio.com
già HT non è proprio un forum di programmatori, poi java non è il linguaggio più utilizzato del Web... poi a quanto vedo non è certo l'unica soluzione del genere... e a quanto vedo, in perfetta sintonia con il linguaggio, è pensato per l'enterprise... anche se effettivamente non so quanto utilizzato.
L'unico ambiente in cui sono stato a contatto con robe simili usavano WebSphere... che ha un suo sistema di caching e non ho assolutamete idea di come funzioni.
penso sia questo
IBM WebSphere Developer Technical Journal: Static and dynamic caching in WebSphere Application Server V5
ho scritto tutto quello che potevo scrivere sull'argomento... i miei 2 centesimi, mi spiace di non essere più di aiuto, a te cosa interessava in particolare?
Salve,
Prima di tutto grazie per aver risposto
Detto questo, il caching delle informazioni è un problema molto sentito ... in tutte le architetture , a maggior ragione in quelle che si approcciano "a Servizi" (o SOA , visto che fa figo la parola ...)
Quello che mi interessa è condividere con qualcuno che ha utilizzato meccanismi di caching sviluppati in ottica SOA le sue impressioni e anche la tecnologia.
In particolare mi riferisco non tanto al caching lato Web Server ... ma proprio al caching lato "Dati" ...
Ecco, questo è il "classico" caso da utilizzo di una cache , dove i dati vengono acceduti frequentemente e con una bassissima percentuale di variazione ...
Le alternative sono 2 ... o li leggo tutte le volte dal DB ... o li leggo da qualche altra parte ...
Ciao !!
Site Admin http://www.pctrio.com
Ciao ceccus,
sono abbastanza occupato in questi giorni, non appena torno ad avere 15min liberi di fila posso darti una mano. Nel frattempo dettaglia i tuoi dubbi o scrivi le tue domande in maniera precisa![]()
Salve,
Grazie anche a te per aver risposto.
Dunque ... i miei dubbi ... in realtà non sono dubbi ... è uno scambio di idee sul reale funzionamento di questo "framework" ... l' ho virgolettato appositamente perchè così mi sembra ...
Soprattutto sul discorso della cache distribuitsa, ovvero in uno scenario sicuramente Enterprise dove ho più macchine (Server) che magari si occupano di fare caching e che, a fronte di piccoli aggiornamenti, si devono tenere sincronizzate per fornire il dato corretto , cioè aggiornato.
Questo è lo scenario che mi interessa maggiormente ...
Verificare, per esempio, quanto traffico di rete genera una configurazione del genere ... quanto è il tempo di risposta effettivo ... quanto il tempo di sincronizzazione e così via ...
Se qualcuno ha già avuto modo di utilizzare JCS , così si poteva scambiare qualche impressione ...
Spero di essere stato abbastanza chiaro.
Ciao !!
Site Admin http://www.pctrio.com
Non ho mai usato JCS, dato che mi trovo ottimamente con JBoss Cache, per quel che devo fare. Comunque JCS non è un sistema di caching transazionale, come sicuramente saprai questo significa che potresti trovarti con modifiche parziali eseguite ai dati presenti in caching e/o con nodi del cluster di caching che forniscono dati non ancora aggiornati.
Sicuro di poter utilizzare JCS?![]()
Salve,
Corretto ciò che dici ... ma immagina questo scenario :
Ho una serie di informazioni, che per forza di cose non mi cambiano durante la giornata lavorativa. Possono cambiare solo dopo che ha girato un' opportuna fase batch ...
In questo scenario, la transazionalità non mi serve, perchè sono sicuro che durante le ore lavorative il dato è quello e quello rimane a disposizione di tutte le applicazioni che lo volessero leggere ... se poi aggiungi che , a seconda del dato, si parla d milionate di letture al giorno ... (della serie 400-500 milioni al giorno ...) , quello che mi interessa è sicuramente l' aspetto prestazionale.
Ciò non toglie che , in altri casi, esistono anche fasi di aggiornamento on line ... e qui occorre valutare bene che cosa fare, ovvero se interpore una cache fra DB e Applicazioni e di che tipologia ...
In Java, di transazionale, di valido, che cosa c'è ???
Ciao !!
Site Admin http://www.pctrio.com
Ciao,
ovviamente i sistemi di cache transazionali non scalano quanto quelli "lisci".
Tra quelli transazionali ti consiglio: JBoss Cache - JBoss Community
Al posto di JCS ti consiglio di dare una occhiata a Performance at Any Scale che è anche sviluppato come plugin per Hibernate, con supporto enterprise e diversi miglioramenti.
Per come hai descritto il problema potresti usare anche i sistemi non transazionali, però, se le modifiche ai dati sono realmente così rare, a maggior ragione userei qualcosa di transazionale di base; così implementi il layer di caching in maniera trasparente e quando ci sono aggiornamenti da fare è l'ORM che reputa la cache non valida e procede al suo aggiornamento ed alla lettura dei dati dal db.
Dimmi se ti torna il discorso![]()
Ammetto la mia incompetenza su Java, ci ho fatto qualcosina, mai web, ma poca roba, però dico la mia lo stesso.
Se avessi dati che non cambiano durante il giorno, milionate di letture...
ridonderei (ma senza tanti sofismi architetturali, proprio in maniera grezza ed efficace) tutto su statico al quale le letture punteranno.
Quando il dato viene cambiato, si riscrive lo statico e via così.
Che siano pagine html, oggetti di dati, flussi temporali o soggetti ad iterazioni incrociate con terzi, il concetto è lo stesso, no?
Per capirci io sono dell'idea che in certe situazioni, simili (ma bisogna vedere il tipo di elaborazione dei dati grezzi e di quelli storati) a quelle indicate da Ceccus, sarebbe meglio non affidarsi neanche ad un dbms, quale che sia il suo blasone.
mah dipende dalla varietà dei dati e dalla quantità di parametri che servono per selezionare i dati... se non sono tanti (e il "tanti" è da valutare) conviene il file statico
comunque la logica di selezione del dato da qualche parte la devi eseguire e bisogna capire dove è più veloce eseguirla (se è complessa comunque un motore sql è meglio che uno script java)
Salve,
dunque, il ragionamento che fai, Antonio, non mi torna tanto ... perchè se parto da una situazione in cui so già che non avrò bisogno di aggiornare i dati , che me ne faccio di un sistema transazionale il cui risultato, in termini di performances, sarà sicuramente peggiore relativamente ad un sistema non transazionale ?
Per quanto riguarda Uno e Andrea : il "mettere statico" ... che significa ... file system ? Immaginate di avere qualche centinaio di Server su cui "storare" il file (o i files) , con gli ovvii problemi di distribuzione ... in più, essendo acceduto in continuazione, il file, sicuramente mi genera I/O verso la SAN (anche se queste hanno meccanismi di caching autonomi) ... se lo metto in locale, verso i dischi interni ai Server generando anche qui attese e colli di bottiglia in apertura al file stesso ...
L' ideale, a mio avviso, sarebbe quello di disporre di una batteria di Server che di "mestiere" fanno quello, ovvero forniscono servizo di caching a tutto il resto dell' infrastruttura ... come ??? Da verificare, appunto ...
Perchè, ovviamente, di tipologie di cache ne esistono di vari tipi ...
Se analizziamo anche quelle transazionali, probabilmente occorrerebbe inserire il concetto di TTL , che al momento della "morte" della risorsa, si "rinfresca" al DB ... ma non basterebbe ... al momento del "cambio" di informazione, occorrerebbe "semplicemente" invalidare il TTL di quella informazione su tutta la batteria di Server in modo da "forzare" , alla successiva richiesta del dato , la sua lettura dal DB e il conseguente caching sul layer preposto ...
Tra parentesi, questa architettura già realizzata dal sottoscritto qualche anno fa in ambito .NET e perfettamente funzionante su milioni di chiamta giornaliere ...
Ora, mi domandavo, se in ambito Java ci fosse qualcosa di già pronto, senza dovermi re-inventare ... "la ruota" ...
Ciao !!
Site Admin http://www.pctrio.com
Io non ho idea di come sia implementata l'infrastruttura e se usate già qualche application server in java a monte e qualche ORM per le chiamate al DB.
Ad esempio, se usate già Java con Hibernate, puoi implementare quello che dici semplicemente configurando Hibernate o installando un plugin e configurandolo.
Hai dato una occhiata ad ehcache? Fa tutto quello che serve a te, non è transazionale e puoi configurarlo come più ti pare per gestire l'aggiornamento/invalidazione dei dati in cache (Ehcache - Distributed and Replicated Caching).
Per quanto riguarda il mio ragionamento sul sistema di caching transazionale, ti ho scritto che al limite avresti potuto usare quello perché, se le scritture (con conseguente invalidazione della cache) le esegui in batch una volta al giorno (e presumo quando l'uso del dbms è al minimo), non dovresti avere problemi di performance, dato che i problemi sorgono quando esegui write, non quanto leggi dati.
Ci sono attualmente 2 utenti che stanno visualizzando questa discussione. (0 utenti e 2 ospiti)
Segnalibri