로드 밸런서와 연결 풀링 — 차이점이 있습니까?


11

출시 직후 수백만 명의 사용자에게 서비스를 제공 할 것으로 예상되는 프로젝트를 진행하고 있습니다. 데이터베이스는 postgres이며 현재로서는 두 대 이상의 서버가 필요하다고 가정합니다. 확장 가능한 시스템에 정통한 시스템 관리자는 웹 서버와 데이터베이스 서버 사이에로드 밸런서를 배치 할 것을 제안했습니다.

내 질문은 부하 분산과 연결 풀링의 차이점에 관한 것입니다. 성능을 유지하려면 둘 중 하나를보아야합니까?


그들은 거의 같은 것입니다. pgbouncer는 권장되는 풀러이며 pgpool II에는 더 많은 기능이 있지만 설정하기가 더 복잡합니다.
Scott Marlowe

답변:


7

PostgreSQL을 사용하면 응용 프로그램 계층 (예 : 풀링에 내장 된 jdbc 등) 또는 pgbouncer 또는 pgpool과 같은 앱과 db 사이에있는 중간 계층에서 풀링을 수행 할 수있는 두 가지 영역이 있습니다.

pgbouncer 또는 pgpool과 같은 중간 계층에서 풀링을 수행하는 경우 해당 계층은 또한 선택 쿼리의로드 밸런싱을 수행 할 수 있습니다. 또한로드 밸런싱을 수행 할 때 다음 두 가지 방법 중 하나로 쓰기를 수행 할 수 있습니다. slony와 같은 도구 또는 9.0 페이지에 나온 내장 된 스트리밍 복제를 사용하여 다른 방법을 통해 읽기 슬레이브에 복제하는 단일 쓰기 마스터를 가질 수 있습니다. 또는로드 밸런서가 모든 쓰기를 수행하도록하여 수신 읽기가 하나의 db에만 도달하지만 쓰기가 각 데이터베이스에 도달하여 모든 업데이트를 유지하도록 할 수 있습니다.

또는 모험을 좋아한다면 plproxy를 사용하여로드 밸런싱 계층을 다른 계층으로 postgresql 자체로 옮길 수 있습니다. 이것은 실제 데이터가없는 프론트 엔드에 하나의 pg 데이터베이스를 넣을 수 있도록 설계된 pgsql의 pl 언어이며, 그 데이터베이스는 놀라운 처리량을 위해 중복 가능한 여러 개의 데이터베이스에서 실행될 수 있습니다. plpoxy는 설정 및 실행이 매우 복잡하지만 확장 성이 뛰어납니다. 응용 프로그램을 지원하려면 응용 프로그램을 다시 작성해야하므로 이전 응용 프로그램에서 던질 수 없으며 작동합니다.

http://slony.info/ http://wiki.postgresql.org/wiki/PL/Proxy http://pgpool.projects.postgresql.org/


3

부하 분산과 연결 풀링은 매우 다른 두 가지입니다.

연결 풀링 (세계의 Microsoft에서 왔지만 상황이 비슷하다고 가정)은 응용 프로그램이 데이터베이스에 대한 연결을 열어 두어 연결을 끊었다가 다시 연결하는 대신 다음 쿼리에 다시 사용할 수 있도록합니다. 실행해야하는 각 쿼리마다.

로드 밸런싱을 사용하면로드 밸런서 뒤에 여러 데이터베이스 서버를 배치 할 수 있으므로 단일 작업으로 모든 작업을 처리하는 대신 여러 서버에로드를 분산시킬 수 있습니다.

로드 밸런싱과 함께 연결 풀링을 사용할 수 있지만 연결이 끊어지지 않으므로 두 데이터베이스 서버 사이에 불완전한로드가 발생할 수 있습니다.

단일 데이터베이스 서버가 애플리케이션로드를 처리 할 수없는 경우 3 대의 서버를 다시 가져 오십시오. 그렇게하면 앱이 충돌하지 않고 필요에 따라 재부팅 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.