Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

성능업(ScaleUP)  VS 분산처리(ScaleOUT)

ScaleUP

...

 노드1의 장비 성능을 높이기위해 사용되는 여러가지 행위임

...

외적으로는 고성능 장비 도입역시 같은 의미가 될수 있습니다.

ScaleOut

...

 측정된 노드1의 성능을 베이스로, 대용량처리를 위해 노드를 수평적으로 확장해 나갈수 있는 행위이며

...

외적으로는 장비를 병렬적으로 늘리고 효율적으로 관리하는 방법도 포함될수 있습니다.


동시성(Concurrency)  VS 병렬처리(Parallelism)

동일시간(성능적차이를 제거하고)에 여러가지 작업을 동시에 처리한다란 점은 동일하지만

...

쉬운 이해를 위해, 네트워크 모델을 제거하고 단일 PC에서의 차이를 살펴보겠습니다.


concurrency

...


동시성의 경우,  본질적으로 작업이 동일시간(나노세컨)에 동시에 실행되지는 않습니다. 작업이 작은 단위로 조각이 난상태로 

...

Code Block
languagec#
linenumberstrue
Task task1;
Task task2;
Task task3;


task1.Start();
task2.Start();
task3.Start();
//물론 이 코드는, 실행 최적화에의해 다중코어로 병렬처리가 될수 있습니다. 
//Task의 개수가 코어개수를 초과했을시 동시성 설명이 가능합니다.
//Core와 Task의 개수가 같다고 해도, 한가지 Task가 특정 Core에만 작동되어야하는 룰은 없음 ( 개발로직은 신경쓰지 않은체 OS 실행 최적화에 따름 )


Parallelism

...


병렬처리의 경우 작업을 명시적으로 여러개의 물리(코어)적 연산 장치에의하여 동시에 처리하는 방식입니다.

...

Info
title추가정보

단순하게 네트워크 모델을 대입시키면,

하나의 장비에 어떻게 여러가지 일을 효율적으로 시킬것인가? (동시성)

여러가지 장비에 어떻게 단일 작업을 배분하여 시킬것인가? ( 병렬처리)


조금더 복잡한 네트워크 모델을 적용을 시키면 새로운 해석이 가능합니다.

여러가지 장비에 ,여러가지 작업에대한 서브Task를 어떻게 나눠서 동시에 시킬것인가? ( 동시성과 병렬처리)

Akka에서는 StrameSinkAndFlows+Cluster 조합으로 이러한 문제를 풀려고 하고있습니다.



Synchronous vs. Asynchronous

Synchronous(동기)

...

메서드 호출후 값이 반환되거나, 예외가 throw될때까지 호출자가 진행할수 없는 경우

Asynchronous(비동기)

...

메서드 호출후  호출자는 몇가지 메카니즘(완료및 진행 등록된 콜백)을 통해 알수있으며

...

일반적으로 비동기 API로 설계하는것은 시스템이 진보할수 있음을 보장함으로 선호됩니다.

액터는 본질적으로 비동기입니다.


Non-blocking vs. Blocking

...

한 스레드의 지연이 다른 스레드를 무기한 지연 시킬수 있을때 블록킹되었다라고 표현함

...

블록킹 작업포함시 전반적인 작업진행이 쉽게 보장이 되지 않기때문에, 논블록킹 작업방식으로의 설계가 추천됩니다.

Deadlock vs. Starvation vs. Live-lock

...

DeadLock

DeadLock(교착상태)는 여러 Task가 어떠한 특정 상태를 기다린후 진행할수 있는 구조에서

어떠한 Task가 특정상태에 도달하지 못할때 하위의 모든 시스템이 멈추는 경우입니다.


Starvation

Starvation(빈곤)은 계속 진행이되며 , 우선순위가 높은 Task가 어렵게 진행이되지만  

항상 높은 우선순위의 Task를 선택하는 순진한 스케쥴링 알고리즘때문에 낮은 순위의 Task가 

끝나지 않거나 진입을 못하는 경우입니다.


LiveLock

LiveLock은 Task중 누구도 진행되지 않는 경우이며, 교착상태와 유사합니다. 서로 진행되기를

...

양보하는 경우가 발생하여 누구도 실행되지 않는 케이스입니다.

Race Condition

...

우리가 정한 이벤트 세트의 순서에대한 가정이 , 외부의 결정적이지 않은 효과임에도 불구하고

...

Info

특정 액터 상호간에 보내는 메시지에대해 Akka가 제공하는 유일한 보증은

해당 메시지의 순서가 항상 유지된다는 것입니다. Akka의 Message Delivery Reliability를 참고하십시오



Non-blocking Guarantees (Progress Conditions)

...

이전 섹션에서 설명된것처럼 블로킹은 여러가지 이유로 바람직하지 않습니다. 

...

다음은 다양한 강도(차단이 강하거나 제한) 를 지닌 차단 특성에대해 논의를 합니다.

Wait-freedom -기다림이 없으나 호출수 한정

...

모든 호출이 한정된 수의 단계로 끝나도록 보장되는 경우 메소드는 대기하지 않아도됩니다.

...

참여자는 제한된 수의 호출후에 진행할수 있으므로 궁핍(기아)현상이 발생하지 않습니다.

Lock-freedom -Lock이 없음

...

Lock이 없기때문에 교착상태가 발생하지 않지만

호출이 결국 완료되는것을 보장하지 않기때문에 궁핍(기아)현상을 보장하기에는 충분하지 않습니다.

Obstruction-freedom -기다림/Lock등 방해요소가없음

...

메소드가 격리되어 작동하다가, 특정 시점 (Write중)

...