루비 vs 불로장생약의 성능;울트론 죽었어. 울트론엑스 만세.

5934 단어 elixirrubyslackbot
최초 출시https://darnahsan.medium.com/ruby-vs-elixir-performance-ultron-is-dead-long-live-ultronx-f24e40a4c4d4 2019년 9월 6일 출시
우리의 최초의 실시간 슬랙 로봇 울트론은 AWS 클라우드워치 로봇이다.Cloudwatch에서 제공할 수 없는 경보를 통해 많은 성능과 정지 문제를 피할 수 있습니다.모든 것이 좋지만, 더 많은 계산 자원에 대한 탐욕은 끝이 없다.인프라가 발전함에 따라 메모리와 CPU 소모도 증가하고 있다.클라우드워치 슬랙 로봇으로 작동하는 것은 여전히 관리할 수 있기 때문에 우리는 그것을 다시 쓰거나 최적화하는 것을 너무 많이 고려하지 않았다.그렇다면 울트론엑스는 불로장생의 루비 재 속에서 어떻게 일어났을까?한동안 우리는 우리의 사건에 대해 실시간 분석 흐름 테스트를 실시해 왔다. 유입된 사건의 수가 증가함에 따라 누구도 특정한 사건이나 활동 흐름을 추적하기 어렵다.우리 이동팀의 한 엔지니어가 활동 id를 추적하고 이 MSG를 필터로 개인에게 보내는 아이디어를 생각해냈다.결국 그는 떠났다. 그의 프로젝트는'큰 코'다."그가 떠난 후 이동팀은 유사한 해결 방안을 필요로 했지만 id에 국한되지 않고 모든 키워드가 일치했다. 가장 빠른 방법은 현재의 RTM 로봇 Ultron에 유사한 기능을 추가하는 것이다. 몇 시간 동안 일한 후에 그 솔루션이 출시되었다. 그리고 실시간으로 흐르는 이벤트 수가 끊임없이 증가함에 따라 모든 이벤트는 일치하는 키워드를 검색해야 한다."이 메시지와 다운로드할 수 있는 모든 첨부 파일은 Ultron에 손실을 입혔다.점점 더 많은 사람들이 그것을 사용할 때, 그것은 둔해져서 일치하는 소식을 전달할 수 없다.
개발자로서 이렇게 소중했던 것이 자신의 부하에서 점차 사라지는 것을 보는 것은 받아들일 수 없고 가슴이 찢어진다.한동안 Elixir에서 구축할 만한 것들을 찾아서 루비이스트의 도입이 쉬운지 확인하고 주장한 성능 향상을 평가해 왔다.이에 따라 UltronEx는 한 주말 만에 불로장생약으로 탄생했다.주요 관심사는 RTM 기반 일치 메시지 전달입니다.그것은 오창이 따라갈 수 없는 세 가지 일에 주목해야 한다.
  • 모든 전송 메시지 수신
  • 메시지 본문에서 일치하는 항목을 찾고 첨부파일을 다운로드하고 일치하는 항목을 검사합니다
  • 일치하는 항목을 찾았을 때 첨부된 메시지를 전달합니다.
  • 이것이 바로 울트론의 죽음과 울트론엑스의 탄생이지만, 울트론엑스가 울트론보다 낫지 않을까?통계를 말씀드리도록 하겠습니다.
    Ultron CPU: 58 평균 부하: 1.0

    UltroneX CPU: 0.0 평균 부하: 0.0

    UltroneX가 한동안 출시된 후, 나는 CPU나 평균 부하가 나타나지 않았기 때문에 내가 잘못했다고 느꼈다.따라서 디지털 해양에서 심도 있는 모니터링이 가능하다.RTM 메시지 전달에 사용되는 1GB 1vCPU 미세 방울에서 실행되기 때문에 이 통계는via top과 같습니다.Ultron EX peaks Ultron이 동일한 부하에서 사망한 시간도 표시합니다.
    창조하다

    UltronEX

    루비가 이렇게 엉망일 수도 있다는 것을 인정하고 싶지 않다. 뉴리릭은 루비가 정말 CPU와 평균 부하를 사용하는 로봇만 사용하는지 확인해 보자. 결과는 똑같다고 덧붙였다.
    창조하다

    UltronEX

    다음은 추가 프로세스가 실행되지 않도록 하기 위한 더 자세한 htop 출력입니다. 이것은 둘 사이의 차이점일 수 있습니다.

    스트림 성능이 너무 좋아서 MRI가 따라가지 못해요.불로장생약 점심에 루비 먹기.
    전송된 메시지를 처리하기 위해 일치하는 작업을 설정하지 않아도 됩니다.때때로, 정보를 받았기 때문에, Ultron은 명령에 응답할 때 UltroneX보다 2초 지연됩니다.


    언어의 측면에서 볼 때, Elixir는 Ruby와 매우 비슷해서, 사람들이 그것으로 코드를 작성하기 더욱 쉽다.이 언어의 기능 모델은 머리를 맑게 하는 데 시간이 필요하고 주말에도 그것을 장악할 수 없다.패턴 매칭은 함수 코드를 너무 많이 쓰지 않아도 장생불로약의 위력을 보여준다.
    Ruby는 훌륭한 언어인데다 Rails는 놀라운 웹 스택이다.눈으로 본 것이 사실이기 때문에 나는 특정한 언어로만 어떤 일을 처리하는 것이 아니라 용례에 더 적합한 옵션을 탐색하기를 기대한다. 왜냐하면 이것은 편안하기 때문이다.
    Go, Kotlin, Rust, TypeScript로 Ultron 버전을 작성하여 Rubyists의 성능과 적응률을 비교하는 hackathon을 실행하고 있습니다.
    UltroneX 코드는

    아산달 / ultronex


    RTM 슬랙 로봇용 불로장생약 작성


    Github에서 개인 Gitlab repo의 하나mirror

    AppSignal이 오픈 소스 계획에 따라 프로젝트를 고려하고 APM에 무료 계정을 만들어 준 것에 감사를 드리고 싶습니다.나는 이것이 다른 사람들이 그들의 제품을 사용하는 것을 도울 수 있기를 바란다.그것은 불로장생약 모니터링에 사용되는 가장 전면적인 도구 중의 하나다.


    Ultron Ex - 만병통치약 중의 Ultron


    이것은 내가 처음으로 쓰기를 시도한 것이다. elixir 코드가 그다지 묘약이 아닐 수도 있다.이것은 내가 몇 년 전에 루비에서 만든 슬랙 로봇의 재작업이다.Blog post 결과 제시elixir 초과ruby 100%
    command(s)
          --> help #list the command list
          --> mute/talk #TODO implement later
          --> xkcd #shows a random xkcd comic
          --> xkcd <comic no> #shows xkcd comic no
          --> gif #shows random gif
          --> gif <category> #show a random gif from the category
          --> quote #shares a quote
          --> forward <term> #sets up msg forwarding for the

    View on GitHub

    최초는 2019년 9월 6일https://geeks.wego.com에 발표됐다.

    좋은 웹페이지 즐겨찾기