სესიის მუშაკი
სესიის მუშაკი უზრუნველყოფს პროცესის დონის იზოლაციას აგენტის სესიებისთვის. ყველა სესიის ერთ პროცესში გაშვების ნაცვლად, PRX-ს შეუძლია გამოყოფილი მუშაკი პროცესების შექმნა, რომლებიც გაუმართაობებს იზოლირებულად ინარჩუნებს და რესურსების ლიმიტებს ოპერაციული სისტემის დონეზე აღასრულებს.
მოტივაცია
პროცესის იზოლაცია რამდენიმე უპირატესობას უზრუნველყოფს:
- გაუმართაობის იზოლაცია -- ერთი სესიის ავარია სხვებზე არ მოქმედებს
- რესურსების ლიმიტები -- სესიაზე მეხსიერებისა და CPU-ს ლიმიტების აღსრულება cgroups-ის ან ოპერაციული სისტემის მექანიზმებით
- უსაფრთხოების საზღვარი -- სხვადასხვა ნდობის დონის სესიები ცალკე მისამართების სივრცეებში მუშაობს
- გრაციოზული დეგრადაცია -- მთავარ პროცესს შეუძლია წარუმატებელი მუშაკების გადატვირთვა
არქიტექტურა
┌──────────────┐
│ მთავარი │
│ პროცესი │
│ (ზედამხედველი)│
│ │
│ ┌──────────┐ │ ┌─────────────┐
│ │ სესია A ├─┼───►│ მუშაკი Proc │
│ └──────────┘ │ └─────────────┘
│ ┌──────────┐ │ ┌─────────────┐
│ │ სესია B ├─┼───►│ მუშაკი Proc │
│ └──────────┘ │ └─────────────┘
└──────────────┘მთავარი პროცესი ზედამხედველის როლს ასრულებს, მუშაკებთან IPC-ით (Unix დომენის სოკეტები ან ფაიფები) კომუნიცირებს.
კომუნიკაციის პროტოკოლი
მუშაკები ზედამხედველთან სიგრძით პრეფიქსირებული JSON პროტოკოლით კომუნიცირებენ IPC არხზე:
- შექმნა -- ზედამხედველი აგზავნის სესიის კონფიგურაციას მუშაკისთვის
- შეტყობინებები -- მომხმარებლის/აგენტის შეტყობინებების ორმხრივი სტრიმინგი
- ჰარტბითი -- პერიოდული ჯანმრთელობის შემოწმებები
- გამორთვა -- გრაციოზული შეწყვეტის სიგნალი
კონფიგურაცია
toml
[agent.worker]
enabled = false
ipc_socket_dir = "/tmp/prx-workers"
heartbeat_interval_secs = 10
max_restart_attempts = 3რესურსების ლიმიტები
Linux-ზე გაშვებისას, სესიის მუშაკს შეუძლია cgroup-ზე დაფუძნებული რესურსების ლიმიტების გამოყენება:
toml
[agent.worker.limits]
memory_limit_mb = 256
cpu_shares = 512დაკავშირებული გვერდები
- აგენტის გაშვების გარემო -- არქიტექტურის მიმოხილვა
- აგენტის ციკლი -- ძირითადი შესრულების ციკლი
- უსაფრთხოების სენდბოქსი -- სენდბოქსის ბექენდები