Leí hoy sobre sharded counters in Google App Engine. El artículo dice que debe esperar un máximo de aproximadamente 5/actualizaciones por segundo por entidad en el almacén de datos. Pero me parece que esta solución no 'escala' a menos que tenga alguna forma de saber cuántas actualizaciones está haciendo por segundo. Por ejemplo, puede asignar 10 fragmentos, pero luego comenzará a asfixiarse con 50 actualizaciones por segundo.¿Cuántos fragmentos en un contador fragmentado Google App Engine?
Entonces, ¿cómo sabes qué tan rápido están llegando las actualizaciones, y cómo se vuelve a introducir ese número en la cantidad de fragmentos?
Supongo que junto con el contador puede mantener un registro de la actividad reciente, y si detecta un pico puede aumentar la cantidad de fragmentos. ¿Es así como se hace? Y si es así, ¿por qué no se hace en el código de muestra? (Esa última pregunta puede no ser contestada.) ¿Es una práctica más común monitorear la actividad del sitio web y actualizar los conteos de fragmentos a medida que aumenta el tráfico, en lugar de hacerlo automáticamente en el código?
Actualización: ¿Cuáles son los efectos prácticos de tener muy pocos fragmentos y ahogo? ¿Significa simplemente que el sitio web deja de responder, o es posible perder actualizaciones de contador debido a los tiempos de espera?
Como un aparte, this question habla de implementar contadores sin fragmentación, pero una de las respuestas implica que incluso Memcache debe ser fragmentado si el tráfico es alto. Por lo tanto, este tema de asignación y ajuste de fragmentos parece ser importante.
Sería interesante ver cuántas actualizaciones por segundo enfoque Memcache podía manejar sin sharding. (Por el momento parece que no puedo encontrar ningún número acerca de qué tan rápido puede actualizar una clave de memcaché dada como esta.) –
Estoy aprendiendo sobre esto, pero no es confiable en el sentido de que puede irse en cualquier momento. – brainjam
Sí, los valores de Memcache pueden desalojarse en cualquier momento. Por lo general, esto sucede debido a la presión de la memoria (aunque podría ocurrir por otros motivos, como la caída de los servidores de Memcache). Esa es una de las razones por las cuales las soluciones basadas en Memcache podrían subestimar un poco. –