Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как един сървър обработва заявки за уеб услуги от множество клиенти

Това е за общата концепция, а не конкретно за Android

Обикновено всеки от потребителите изпраща HTTP заявка за страницата. Сървърът получава заявките и ги делегира на различни работници (процеси или нишки).

В зависимост от дадения URL адрес сървърът чете файл и го изпраща обратно на потребителя. Ако файлът е динамичен, като например PHP файл, той се изпълнява, преди да бъде изпратен обратно на потребителя.

След като исканият файл бъде изпратен обратно, сървърът обикновено затваря връзката след няколко секунди.

Вижте Как работят уеб сървърите

РЕДАКТИРАНЕ:

За HTTP използва TCP, който е протокол, базиран на връзка. Тоест, клиентите установяват TCP връзка, докато комуникират със сървъра.

Множество клиенти имат право да се свързват към един и същ целеви порт на една и съща целева машина по едно и също време. Сървърът просто отваря множество едновременни връзки.

Apache (и повечето други HTTP сървъри) имат многопроцесорен модул (MPM). Това е отговорно за разпределянето на нишки/процеси на Apache за обработка на връзки. След това тези процеси или нишки могат да работят паралелно на собствена връзка, без да се блокират взаимно. MPM на Apache също има тенденция да поддържа отворени „резервни“ нишки или процеси, дори когато няма отворени връзки, което помага за ускоряване на последващите заявки.

Забележка:

Един от най-често срещаните проблеми с многонишковостта е "състезателни условия"-- когато вие двете заявки правите едно и също нещо („състезавате се“ да направите едно и също нещо), ако това е един ресурс, единият от тях ще спечели. Ако и двамата вмъкнат запис в базата данни, не могат и двамата да получат една и съща идентификация – единият от тях ще спечели. Така че трябва да внимавате, когато пишете код, за да осъзнаете, че други заявки се изпълняват по същото време и може да променят вашата база данни, да пишат файлове или да променят глобалните стойности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате курсора за актуализиране на запис

  2. ABS() Примери в SQL Server

  3. списък на таблици без индекси в sql 2008

  4. SQL cast datetime

  5. Как мога да намеря номера на порта на sql сървъра от системния регистър на Windows?