-
[스크랩]stateless, 클라이언트 http 요청 관련 싱글톤back_end 2022. 10. 28. 16:13
*request 객체는 Http 요청이 발생하면 생성되는 객체이다.
각 요청마다 하나씩 생성되기 때문에 수많은 요청이 들어와도 request 객체를 통해 전부 구분할 수 있다.
*
동기화/동시성 관련 문제가 있는지 알고 싶습니다. "요청 이벤트에 대한 콜백"으로 "싱글톤"을 사용하여 "요청" 이벤트(swoole과 같은 HTTP 서버에서)를 제공하는 경우. 즉, 요청을 처리하는 콜백은 먼저 싱글톤 객체를 생성합니다(아직 존재하지 않는 경우.
HTTP Server(Swoole)의 "요청" 이벤트에 대해 싱글톤을 생성하고 있습니다. 단일 인스턴스를 생성하는 데 사용되는 정적 멤버는 (동일한) 싱글톤 개체의 비 정적 멤버도 추가로 호출합니다. 이 비정적 멤버는 실제로 요청을 처리합니다.
$http->on('request', 'Bootstrap::getInstance');
//하나씩 일어나는 것
class Bootstrap{ protected static $instance; private function __constructor(){ //initialize Phalcon Micro Routers and Events to fuse with Swoole } public static getInstance($htpRequest, $httpResponse) { if (!$instance) { self::$instance = new Bootstrap(); } //Also call the non-static member to serve "request" self::instance->run($htpRequest, $httpResponse); } //non-static function to serve request public function run(httpRequest, httpResponse) { // Serve Request } }
-
각 요청은 자체적으로 상태를 저장하므로 문제가 없다고 생각합니다.– 마커스 젤러2020년 4월 27일 18:01
-
@MarkusZeller 요청이 동시에(병렬로) 도착하는 경우(예: 동시에 50개의 요청) 시스템은 이러한 병렬 요청을 어떻게 처리합니까? 각 요청은 클래스의 정적 멤버를 통과해야 합니다. 각 새 요청은 이전 요청이 완료될 때까지 대기합니까? 그것(새 요청)이 이 정적 멤버의 제어를 얻기 전에.– 파카 안와르2020년 4월 27일 21:03
-
내가 말했듯이, 모든 요청은 그 자체를 위한 것입니다. 요청이 분산됩니다. apache2의 경우 이를 가져와 작업자 스레드에 대기시킵니다. Swoole은 Apache가 할 수 있는 것보다 더 많은 요청을 받는 데 사용할 수 있습니다.– 마커스 젤러2020년 4월 28일 6:23
https://stackoverflow.com/questions/48778580/singleton-httpclient-vs-creating-new-httpclient-request
https://wooono.tistory.com/366
[주요 개념] Stateful 과 Stateless
들어가기 앞서, Stateful과 Stateless는, 클라이언트와 서버간의 네트워크 통신이 어떻게 이루어지는지에 대한 개념입니다. 즉, 네트워크 프로토콜입니다. 세션 상태 및 세션 정보란? Stateful 과 Stateles
wooono.tistory.com
'back_end' 카테고리의 다른 글
커넥션 풀 (0) 2022.12.24 node.js - io.socket 소켓 통신 연동 (0) 2022.11.23 [메모/스크랩] FCM 노티 관련 메모.. (0) 2022.03.14 [스크랩/메모] GCP 방화벽 설정 관련 복붙 (0) 2022.02.03 firebase 클라우드 펑션 배포, 호출 (0) 2022.02.02 -