목차
1. 분산 아키텍처의 개발 역사
1. 분산 아키텍처의 공통 개념
아키텍처의 개발 과정
1단계: 단일 애플리케이션 아키텍처
2단계: 애플리케이션 서버와 데이터베이스 서버의 분리
3단계: 애플리케이션 서버 클러스터 - 애플리케이션 서버 로드 경보
4단계: 데이터베이스 압력 증가 - 데이터베이스 읽기 및 쓰기 분리
5단계: 검색 엔진을 사용하여 데이터베이스를 읽는 부담을 완화하세요
6단계: 데이터베이스에 대한 부담을 완화하기 위한 캐싱 메커니즘 도입
8단계: 애플리케이션 분할
Java java지도 시간 Java 애플리케이션 분산 아키텍처의 진화 과정에 대한 간략한 논의

Java 애플리케이션 분산 아키텍처의 진화 과정에 대한 간략한 논의

Jul 19, 2018 am 09:32 AM
java 프로그래밍 언어


1. 분산 아키텍처의 개발 역사

1946년 미국 펜실베니아 대학교에서 이름이 ENICAC으로 탄생한 컴퓨터입니다. 빠르지는 않지만 컴퓨터 시대의 도래를 의미하며 향후 인터넷 발전에 있어서도 근본적인 의미를 갖습니다.

컴퓨터의 구성은 입력 장치, 출력 장치, 메모리의 다섯 부분으로 구성됩니다. 메모리에는 연산 장치와 컨트롤러가 포함되어 있습니다. 컴퓨터의 구성을 매우 생생하게 설명하는 폰 노이만 모델이 있습니다. 그러나 컴퓨터에는 계산을 수행하고 정상적으로 작동하기 위한 데이터 흐름, 명령 흐름 및 제어 흐름도 있습니다. 그림과 같이:


ENIAC 이후 전자 컴퓨터는 IBM이 지배하는 메인프레임 시대에 돌입했습니다. 1946년 최초의 IBM 메인프레임 SYSTEM/360이 탄생하여 1950년대와 1960년대에 IBM이 되었습니다. 메인프레임 컴퓨터 산업 전체를 지배했습니다. 메인프레임 시대에는 컴퓨터 아키텍처가 두 가지 방향으로 발전했습니다. CISC(컴퓨터 언어 명령 집합이 마이크로프로세서에 의해 실행됨) CPU 기반의 저렴한 개인용 PC 및 RISC(축소 명령 집합 컴퓨터) 가격이 높은 고급형 소형 UNIX 서버 .

컴퓨팅 성능과 처리 능력, 높은 안정성과 보안을 갖춘 메인프레임의 등장은 오랫동안 컴퓨팅 분야의 발전을 이끌어 왔습니다. 그러나 중앙 집중식 컴퓨터 시스템은 몇 가지 문제를 가져왔고 다음과 같은 사용자 요구를 점점 더 충족시킬 수 없습니다.

1. 대규모 호스트는 매우 비싸고 일반 소규모 기업에서는 이를 감당할 수 없습니다.

2. 메인프레임은 더 복잡하고 인재 교육 비용이 상대적으로 높습니다.

3. 메인프레임 장애와 같은 단일 지점 문제로 인해 전체 시스템이 다운되고 작동할 수 없게 되어 기업에 막대한 손실이 발생합니다.

4. 기술의 발전으로 개인용 PC의 성능은 점점 높아지고, 가격은 점점 낮아지고 있습니다.

알리바바는 2009년에 “IOE”를 없애기 위한 운동을 시작했습니다

IOE는 IBM의 미니컴퓨터, Oracle의 데이터베이스 및 EMC의 고급 스토리지 장치를 의미합니다. 2009년 IOE에서 벗어나는 움직임은 Alipay의 마지막 IBM 미니컴퓨터가 2003년 오프라인이 될 때까지 계속되었습니다.

IOE로 가는 이유

알리바바는 과거 데이터베이스로 오라클을 사용했으며, 고성능 데이터 처리 및 저장 서비스를 제공하기 위해 미니컴퓨터와 고급 저장 장치를 사용했습니다. 회사의 비즈니스 규모가 증가하고 사용자 수가 계속 증가함에 따라 기존의 중앙 집중식 아키텍처 Oracle 데이터베이스는 확장 시 병목 현상에 직면하게 됩니다. 기존 Oracle에 비해 DB2는 주로 중앙 집중식입니다. 중앙 집중식 확장은 주로 수평 확장이 아닌 상향 확장을 채택합니다. 이는 시스템 병목 현상이 조만간 발생합니다.

1. 분산 아키텍처의 공통 개념

Cluster

그 작은 식당은 야채를 자르고, 야채를 씻고, 재료를 준비하고 요리하는 요리사로 밝혀졌습니다. 나중에 손님이 많아지자 주방의 한 셰프가 너무 바빠서 다른 셰프를 고용해 두 셰프가 같은 요리를 할 수 있게 됐다.


Distributed

셰프가 요리에 집중하고 요리를 완벽하게 만들기 위해 야채를 자르고, 야채를 준비하고, 재료를 준비하는 일을 담당하는 셰프를 고용합니다. 셰프와 셰프가 분산되어 있어서 반찬 셰프 한 명이라도 너무 바쁘고, 반찬 셰프를 고용하면 두 셰프의 관계가 클러스터가 된다. 따라서 분산 아키텍처에도 클러스터가 있을 수 있지만 클러스터가 분산을 의미하는 것은 아닙니다.

Node

노드는 분산 프로토콜에 따라 일련의 로직을 독립적으로 완성할 수 있는 개별 프로그램을 말합니다. 특정 프로젝트에서 노드는 운영 체제의 프로세스를 나타냅니다.

복제 메커니즘

복제란 분산 시스템에서 데이터 또는 서비스에 대한 중복성을 제공하는 것을 의미합니다.

데이터 복사는 동일한 데이터를 다른 노드에 유지하는 것을 의미하며, 특정 노드의 데이터가 손실되면 복사본에서 데이터를 읽을 수 있습니다. 데이터 복사본은 분산 시스템에서 데이터 손실을 초래하는 유일한 수단입니다.

서비스 사본은 여러 노드가 동일한 서비스를 제공하고 마스터-슬레이브 관계를 통해 서비스의 고가용성을 달성하는 것을 나타냅니다.

Middleware

Middleware는 운영체제에서 제공하는 서비스에 추가되며, 애플리케이션에 속하지 않습니다. 애플리케이션 및 시스템 개발자를 위해 계층 간 통신, 입력 및 출력을 편리하게 처리하여 사용자가 애플리케이션의 일부에 신경 쓸 수 있도록 하는 소프트웨어 유형입니다.

아키텍처의 개발 과정

성숙한 대규모 웹사이트 시스템 아키텍처는 처음부터 완벽하게 설계되지도 않고, 처음부터 고성능, 고가용성을 갖추지도 않습니다. 사용자 수가 증가하고 비즈니스 기능이 확장됨에 따라 보안 및 기타 기능은 점차 개선되고 진화됩니다. 이러한 개발 과정에서 개발 모델, 기술 아키텍처 등은 큰 변화를 겪게 됩니다.

시스템에 다음 기능이 있는 경우:

사용자 모듈: 사용자 등록 및 관리#🎜🎜 ## 🎜🎜#

제품 모듈: 제품 표시 및 관리

거래 모듈: 거래 및 결제 정산 생성

1단계: 단일 애플리케이션 아키텍처

시스템 시작 시 애플리케이션과 데이터베이스가 모두 하나의 서버에 배치됩니다.

2단계: 애플리케이션 서버와 데이터베이스 서버의 분리

웹사이트 사용자 수가 증가하고 트래픽이 증가함에 따라 애플리케이션 서버와 데이터베이스 서버를 별도로 배포하는 시스템을 사용하면 시스템 성능을 높이고 성능을 향상시킬 수 있습니다. 액세스 효율성을 높여 단일 시스템의 로드 용량과 재해 복구 기능을 향상시킵니다.

3단계: 애플리케이션 서버 클러스터 - 애플리케이션 서버 로드 경보

방문 횟수와 트래픽이 증가함에 따라 데이터베이스에 병목 현상이 발생하지 않는다고 가정하면 애플리케이션 서버 클러스터를 사용하여 요청을 오프로드하여 프로그램 성능을 향상시킵니다. 기존 문제: 사용자의 요청을 누가 전달할 것인지, 세션을 어떻게 관리할 것인지.

4단계: 데이터베이스 압력 증가 - 데이터베이스 읽기 및 쓰기 분리

읽기와 쓰기가 분리되면 향후 요청 및 쿼리 요청은 슬레이브 라이브러리에서 데이터를 읽을 수 있고 작성된 데이터를 메인 라이브러리로 보낼 수 있습니다. 하지만 이는 몇 가지 문제를 가져올 것입니다:

1. 마스터와 슬레이브 데이터베이스 간의 데이터 동기화: 마스터-슬레이브 복제를 달성하기 위해 mysql과 함께 제공되는 마스터-슬레이브 방법을 사용할 수 있습니다.

2 해당 데이터 소스 선택: 다음과 같은 타사 데이터베이스 미들웨어: mycat

5단계: 검색 엔진을 사용하여 데이터베이스를 읽는 부담을 완화하세요

데이터베이스를 사용하여 데이터베이스를 읽는 경우 퍼지 쿼리의 성능이 좋지 않은 경우가 많습니다. 특히 대규모 인터넷 회사의 경우 검색하려는 모듈이 검색 엔진을 사용하는 것이 가능하지만 쿼리 속도를 크게 향상시킬 수 있지만 인덱스 구성과 같은 몇 가지 문제도 발생합니다.

6단계: 데이터베이스에 대한 부담을 완화하기 위한 캐싱 메커니즘 도입

일부 핫 데이터의 경우 redis 및 memcache를 애플리케이션 계층 캐시로 사용할 수 있으며 일부 시나리오에서는 mongodb를 사용하여 대체할 수 있습니다. 저장할 관계형 데이터베이스입니다.

7단계: 데이터베이스의 수평/수직 분할

수직 분할: 데이터베이스에 있는 서로 다른 비즈니스 데이터를 서로 다른 데이터베이스로 분할합니다.

수평 분할: 동일한 테이블의 데이터를 두 개 이상의 데이터베이스로 분할하는 이유는 데이터 양이 많은 일부 기업이 단일 데이터베이스의 병목 현상에 도달했기 때문입니다. 여러 데이터베이스에 테이블을 추가합니다.

8단계: 애플리케이션 분할

비즈니스가 발전함에 따라 비즈니스가 점점 더 많아지고 애플리케이션에 대한 부담도 커지고 있습니다. 프로젝트 규모도 점점 커지고 있다. 이때 도메인 모델에 따라 애플리케이션을 분할하고 사용자, 제품 및 트랜잭션을 하위 시스템으로 분할하는 것을 고려할 수 있습니다.

이러한 분할 후에는 사용자 작업 및 제품 거래 쿼리와 같은 일부 동일한 코드가 있을 수 있으며 이로 인해 각 시스템에서 사용자 쿼리 및 액세스 관련 작업이 발생하게 됩니다. 이러한 동일한 코드와 모듈은 추상화되어야 합니다. 이는 유지보수 및 관리를 용이하게 합니다.

서비스가 분할된 후 서비스 간 통신은 RPC 기술을 통해 이루어질 수 있습니다. 대표적인 기술로는 webservice, hession, http, RMI 등이 있습니다.

위 내용은 Java 애플리케이션 분산 아키텍처의 진화 과정에 대한 간략한 논의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Java Spring 인터뷰 질문 Java Spring 인터뷰 질문 Aug 30, 2024 pm 04:29 PM

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Feb 07, 2025 pm 12:09 PM

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 날짜까지의 타임스탬프 Java의 날짜까지의 타임스탬프 Aug 30, 2024 pm 04:28 PM

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍 미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍 Oct 13, 2024 pm 01:32 PM

Java는 초보자와 숙련된 개발자 모두가 배울 수 있는 인기 있는 프로그래밍 언어입니다. 이 튜토리얼은 기본 개념부터 시작하여 고급 주제를 통해 진행됩니다. Java Development Kit를 설치한 후 간단한 "Hello, World!" 프로그램을 작성하여 프로그래밍을 연습할 수 있습니다. 코드를 이해한 후 명령 프롬프트를 사용하여 프로그램을 컴파일하고 실행하면 "Hello, World!"가 콘솔에 출력됩니다. Java를 배우면 프로그래밍 여정이 시작되고, 숙달이 깊어짐에 따라 더 복잡한 애플리케이션을 만들 수 있습니다.

캡슐의 양을 찾기위한 Java 프로그램 캡슐의 양을 찾기위한 Java 프로그램 Feb 07, 2025 am 11:37 AM

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4

Spring Tool Suite에서 첫 번째 Spring Boot 응용 프로그램을 실행하는 방법은 무엇입니까? Spring Tool Suite에서 첫 번째 Spring Boot 응용 프로그램을 실행하는 방법은 무엇입니까? Feb 07, 2025 pm 12:11 PM

Spring Boot는 강력하고 확장 가능하며 생산 가능한 Java 응용 프로그램의 생성을 단순화하여 Java 개발에 혁명을 일으킨다. Spring Ecosystem에 내재 된 "구성에 대한 협약"접근 방식은 수동 설정, Allo를 최소화합니다.

Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드 Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드 Oct 11, 2024 pm 06:30 PM

간단해진 Java: 강력한 프로그래밍을 위한 초보자 가이드 소개 Java는 모바일 애플리케이션에서 엔터프라이즈 수준 시스템에 이르기까지 모든 분야에서 사용되는 강력한 프로그래밍 언어입니다. 초보자의 경우 Java의 구문은 간단하고 이해하기 쉬우므로 프로그래밍 학습에 이상적인 선택입니다. 기본 구문 Java는 클래스 기반 객체 지향 프로그래밍 패러다임을 사용합니다. 클래스는 관련 데이터와 동작을 함께 구성하는 템플릿입니다. 다음은 간단한 Java 클래스 예입니다. publicclassPerson{privateStringname;privateintage;

스택 하단에 요소를 삽입하는 Java 프로그램 스택 하단에 요소를 삽입하는 Java 프로그램 Feb 07, 2025 am 11:59 AM

스택은 Lifo (마지막으로, 첫 번째) 원칙을 따르는 데이터 구조입니다. 다시 말해서, 우리가 스택에 추가하는 마지막 요소는 제거 된 첫 번째 요소입니다. 우리가 스택에 요소를 추가 (또는 푸시) 할 때, 그것들은 상단에 배치됩니다. 즉, 무엇보다도

See all articles