일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준 2146 다리 만들기
- 백준 1043 거짓말 파이썬
- 가장 긴 바이토닉 부분 수열 파이썬
- 다중 컬럼 NOT IN
- 순위 파이썬
- 백준 1516 게임 개발
- 백준 2352 반도체 설계 파이썬
- 프로그래머스 가장 긴 팰린드롬
- SWEA
- 역사 파이썬
- 램프 파이썬
- 백준 1034 램프 파이썬
- 백준 1613 역사
- SQL SERVER MIGRATION
- 프로그래머스 순위
- 등굣길 파이썬
- 가장 긴 팰린드롬 파이썬
- SQL SERVER 장비교체
- 반도체 설계 파이썬
- 프로그래머스 순위 파이썬
- 게임 개발 파이썬
- 백준 1238 파티 파이썬
- 베스트앨범 파이썬
- 백준 1167 트리의 지름 파이썬
- 트리의 지름 파이썬
- 프로그래머스 등굣길
- 백준 11054.가장 긴 바이토닉 부분 수열
- 프로그래머스 여행경로
- 프로그래머스 베스트앨범
- 다리 만들기 파이썬
- Today
- Total
공부, 기록
병렬처리와 분산처리 본문
병렬처리 : 다중 프로세서(Multi Processors) 시스템이다. 2개 이상의 CPU가 각자 맡은 역할을 수행하는 개념으로 이해하는 것이 쉽다.
대칭 구조(Symmetric multiprocessing, SMP)
각각의 프로세서가 동일한 운영체제 사본을 가지고 수행한다. 또한 많은 프로세서가 퍼포먼스가 나빠지지 않으며 한 번에 수행된다. 대부분의 OS가 이를 지원하고 있다.
비대칭 구조(Asymmetric multiprocessing, AMP)
각각의 프로세서가 각자의 역할이 존재하며, 마스터(master)프로세서와 노예(slave) 프로세서들로 구성되어 있다. 마스터 프로세서(CPU)가 노예 프로세서들에게 일을 할당하는 구조이다. 거대한 시스템에서 사용하고 있다.
장점
1. 경제적이다.
2. 처리량이 높다. (High Throughput)
3. garceful degradation, fail-soft system : 시간이 지날 수록 실패하는 비율이 작다.
4. 신뢰성이 높다. : 하나의 CPU가 고장이 나더라도 다른 CPU가 일을 수행할 수 있다.
분산처리 : 핵심은 여러개의 컴퓨터가 동일한 테스크를 처리하기 위해 네트워크상에서 서로 통신하며 협력하는 것
분산 시스템을 설계할 때의 고려사항
① Transparency : 투명성
② Scalability : 확장성
③ Concurrency : 동시성
④ Failure Handling
1. Transparency(투명성)
: Every user's and application's view of a distributed system : A single computer system
>> 컴퓨터 동작의 하부가 복잡하더라도 user입장에서는 single computer system으로 제공할 수 있는 것
다른 말로 'Single System Image'라도 한다. 어떤 시스템을 통해 접근하더라도 똑같은 인터페이스를 제공하는 것인데, 투명성을 극대화 시키면 유저들이 쉽게 접근할 수 있지만, 전체적인 성능이 떨어진다. 이유는 관리를 위한 management에서 성능적인 overhead가 많아지기 때문이다. 따라서 사용자에 따라 유리하게 투명성을 제공해야한다.
(투명성의 단계)
- End user의 경우에는 투명성을 극대화 시켜야한다.
- Application Developer의 경우에는 기본지식이 바탕이 되어있다고 판단하고, 3단계로 투명성 정도를 달리한다.
- SW Developer의 경우에는 하부의 시스템 소프트웨어를 접근하여 활용할 수 있는 수준으로 본다.
(투명성의 요소)
- Access : 컴퓨터마다 데이터 표현과 자원 접근 방법이 다르지만, 이러한 다른 점을 인터페이스 상에서는 동일하도록 맞춘다.
- Location : 물리적 위치를 알 수 없어야 한다.
- Migration : 자원이 이주하더라도 물리적 위치를 사용하는 등의 방법으로 해당하는 자원에 접근할 수 있다.
- Relocation : 자원을 이주하는 동안에 접근 block이 이뤄지지만, 정상적으로 접근이 이뤄져야 한다.
- Replication : 똑같은 copy본을 가지고 여러 machine에 수행할 수 있도록 한다.
- Concurrency : 한 사용자 혹은 여러 사용자가 자원에 접근할지라도 성능적인 일관성을 유지해야 한다.
- Failure : 사용자가 내부에서 고장이 발생되더라도 이를 몰라야 하며, 해당된 자원이 이전 상태로 복원될 수 있어야 한다.
2. Scalability(확장성)
: A system is scalable if it operate effectively at many different scales.
>> 하나의 프로젝트에 10명이 투입되면, 10명이 투입된 생산성을 발휘될 수 있다. 하지만 그러한 생산성이 이뤄지지 않았을 경우에 확장성이 이뤄지지 않았다고 말한다. 이때 우리는 흔히 '확장(scale)'이라고 하면, 규모가 점점 커지고 효율성이 증대되는 걸 의미한다고 생각하지만, 만약 애플리케이션의 user 수가 떨어지면 규모를 축소하여 작은 규모로 효율적이게 사용할 수 있도록 축소시키는 것도 '확장성'으로 생각할 수 있다.
(확장성을 저해시키는 요인)
- Centralized Service
: 집중화된 서비스, 여러 대의 machine에다가 트래픽을 분산시킨다. // DNS 예시
- Centralized Data
: 하나의 machine의 데이터베이스에 특정 데이터만 담아둘 경우, 해당 자원을 이용할 때 하나의 데이터 베이스에
몰리게 된다. copy본들을 다양한 machine의 데이터베이스에 두도록 하여 각 machine마다 local storage에 접근하여
정보를 제공할 수 있도록 해야 한다.
- Centralized Algorithms
: Doing routing based on complete cinformation
각 라우터가 라우팅 테이블을 통해 out going link 중에서 해당 주소를 찾아간다. 완전한 라우팅 테이블을 만든 후에
접근하는 것이 아닌 partial information을 통해 해당 주소를 찾아가는 방법을 사용한다.
(문제점)
- local 정보를 가지고 결정을 내린다.
- 하나의 machine의 붕괴에 의해서 알고리즘이 붕괴되면 안 된다.
- global clock이 존재하지 않는 가정 하에 시스템을 완성한다.
3. Concurrency(일관성)
- concurrenct execution
- parallel execution : 병렬 처리 즉, 수행할 수 있는 하드웨어가 여러 개가 있다는 것을 전제로 한다.
Concurrency(일관성)에서 발생할 수 있는 이슈
: 동일한 자원을 해당되는 task에서 접근하는 것을 serial execution이라고 한다. 만약 여러 개의 task를 가진 machine에서 연속적으로 접근한다면, task가 순서대로 하나씩 수행되므로 concurrency하게 작동할 필요가 없다. 하지만 만약에 동시에 접근하게 된다면 concurrency(일관성)을 유지시켜야 한다. 각 task들의 동시에 접근할 때, 각 자원들의 상태가 동일해야 한다.
4. Failure Handling
: 분산 시스템을 구성하는 일부 컴퓨터들이 고장 난다 하더라도 그 시스템이 계속해서 사용자에게 일관성 있는 컴퓨팅 서비스를 제공할 수 있도록 해야 한다.
어떻게 한결같은 서비스를 유지시킬 수 있을까?
A, B, C 서비스를 제공하는 machine a, b, c가 존재한다.
machine들 간에는 서로 살아있다는 heartbeat 메시지를 보낸다. 하지만 일정 주기 동안 machine A에 대한 heartbeat 메세지를 받지 못한다면, machine B, C는 본인이 수행하는 task들에 추가적으로 A가 가지고 있는 task를 수행한다. 이러한 과정으로 user 입장에서는 조금 느려질지라도, 서비스는 지속되도록 해야 한다.
병럴처리와 분산처리의 차이점
- 병렬 처리는 명령어를 여러 프로세서로 분할 한 반면 분산 처리는 장치에 더 많은 기능을 제공하기 위해 동일한 명령어를 여러 프로세서로 실행하는 것입니다.
- 병렬 처리는 공유 메모리를 사용하는 반면 분산 처리는 고유 메모리를 사용합니다.
- 병렬 처리는 동일한 작업을 수행하는 데 더 좋지만 분산 처리는 다른 작업을 수행하는 데 더 좋습니다.
- 병렬 처리는 종속적이며 분산 처리는 독립적입니다.
참조 :
'공부 > 소소한 개발' 카테고리의 다른 글
데이터 처리 방식 (배치, 마이크로 배치) (0) | 2022.09.12 |
---|---|
[AIRFLOW, SPARK] AIRFLOW TEAMS 알람 설정 값 (0) | 2022.09.04 |
MSA (Micro Service Architecture) (0) | 2022.08.15 |
타입스크립트 (0) | 2022.08.06 |
[AIRFLOW, SPARK] AIRFLOW, SPARK 연동 (0) | 2022.08.06 |