[Rails, Sidekiq] Weight를 통해 Job 우선 순위 지정

2082 단어 sidekiqRubyRails

개시하다


Sidekiq에는 여러 Job이 자주 사용됩니다.
예를 들어, "Job A"및 "Job B"두 개의 Job 작업을 고려하십시오.'Job A'는 서비스상 중요한 처리로 순조롭게 집행되기를 바라는 반면'B'의 Job은'A'보다 우선도가 낮다.
이'Job A'와'Job B'가 동시에 Que에 투입될 때 보통 투입된 순서대로 처리한다.

한편,'잡비'의 처리가 증가하는 경우 상대적으로'잡A'의 처리 지연이 발생할 수 있다.

만약 Job이 설계를 잘못하면 중요한 처리가 지연되어 서비스에 영향을 미칠 수 있다.

Weight(가중)


위 예에서 보듯이 여러 종류의 Job을 사용할 때 Sidekiq에서 Weight(가중치)를 설정하면 각 Job에 우선도를 부여할 수 있다.
문서에 따르면 다음과 같이 Weight 설정critical을 통해 default보다 2배 우선적으로 집행한다.
# config/sidekiq.yml
:queues:
  - [critical, 2]
  - default
구체적으로'critical = Job A','default = Job'을 고려하면 Job은 항상'A:B = 2:1'의 관계로 실행된다.

Job 우선 설계


Job 우선순위의 디자인을 고려할 때 다른 서비스의 설정을 참고하십시오.
다음은 Ruby on Rails가 구현한 OSS의 유명한 Mastodon의 설정입니다.Weigth는 Job의 우선순위에 따라 설정됩니다.
https://github.com/tootsuite/mastodon/blob/master/config/sidekiq.yml
중요한 것은 개발된 서비스에 사용되는 잡에 대해 우선도에 따라 조를 나누고 적절한 위트 분배를 하는 것이 중요하다.

끝맺다


이번에는 Sidekiq의 Weigth 설정을 통해 Job에게 우선도를 설정하는 방법을 설명했다.
저는 Job/Queue의 디자인이 서비스 디자인에서 많은 중요한 역할을 했다고 생각합니다. 그래서 앞으로 더 좋은 디자인을 배우고 싶습니다.

좋은 웹페이지 즐겨찾기