Ben kimlikeal bir çözüm onu anlamaya ve daha iyi anlatmaya çalışırken bana biraz zor zaman vererek bir sorunu var, ben burada benim senaryoyu ortaya çıkarmak için gkimlikiyorum.
I've a server that will receive orders from several clients. Each client will submit a set of recurring tasks that should be executed at some specified intervals, eg.: client A submits task AA that should be executed every minute between 2009-12-31 ve 2010-12-31; so if my math is right that's about 525 600 operations in a year, given more clients ve tasks it would be infeasible to let the server process all these tasks so I came up with the kimlikea of worker machines. The server will be developed on PHP.
Worker machines vardır just regular cheap Windows-based computers that I'll host on my home or at my workplace, each worker will have a dedicated Internet connection (with dynamic IPs) ve a UPS to avokimlik power outages. Each worker will also query the server every 30 seconds or so via web service calls, fetch the next pending job ve process it. Once the job is completed the worker will submit the output to the server ve request a new job ve so on ad infinitum. If there is a need to scale the system I should just set up a new worker ve the whole thing should run seamlessly. The worker client will be developed in PHP or Python.
At any given time my clients should be able to log on to the server ve check the status of the tasks they ordered.
Şimdi burada nereye zor kısmı başladı şöyledir:
- I must be able to reconstruct the already processed tasks if for some reason the server goes down.
- The workers vardır not client-specific, one worker should process jobs for any given number of clients.
Ben general database design ve hangi teknolojilerin kullanılması ile ilgili bazı şüpheler var.
Başlangıçta birkaç SQLite veritabanları ve joining them all on the server but I can't figure out how I would group by clients to generate the job reports kullanarak düşündüm.
Ben aslında aşağıdaki teknolojilerin hiç çalışmamıştım: memcached, CouchDB, Hadoop ve tüm gibi, ama ben bilmek istiyorum herhangi bir if Bu benim sorunum için uygundur, ve evet, bir acemi için tavsiye edersiniz ki eğer "dağıtılmış bilgi işlem" (ya da bu paralel nedir?) benim gibi. Please keep in mind that the workers have dynamic IPs.
Ben de hala herhangi bir R (D) DBMS seçilmedi ama ben var ve bunu ben seçmek DBMS agnostik olduğunu düşünüyorum bir konu ile ilgili kısmen çünkü, genel veritabanı tasarımı ile sorun yaşıyorum önce dediğim gibi queuing system ... Ben precalculate all the absolute timestamps to a specific job ve have a large set of timestamps, yürütmek ve bayrak artan düzende bunları tam veya I when timestamp modulus 60 == 0 -> execute {["gibi daha akıllı sisteme sahip olmalı olmalı Diğerleri aşırı yaparken bazı işçiler hiçbir şey yapmadan bekliyor olabilir çünkü (3)]} onlar olmalıdır. What do you suggest?
PS: I'm not sure if the title ve tags of this question properly reflect my problem ve what I'm trying to do; if not please edit accordingly.
Giriş için teşekkür ederiz!
@timdev:
- Giriş çok küçük bir json kodlanmış dize olacak, çıkış da bir json enconded dize olacak ama biraz daha büyük (1-5 KB sırayla).
- Çıktı Web'den birkaç mevcut kaynaklar kullanılarak bilgisayarlı olacak şekilde ana darboğaz muhtemelen bant genişliği olacaktır. R (D) DBMS bağlı olarak - Veri tabanı, aynı zamvea biri olabilir yazar.