서문 2014년 3월 시나 웨이보가 발표한 월간 활성 사용자(MAU)는 1억 4,300만 명에 달했고, 2014년 새해 첫 1분 동안 전송된 웨이보 게시물 수는 808,298건에 달했습니다. 고가용성(HA), 높은 동시 액세스, 짧은 대기 시간의 강력한 백엔드 시스템 지원이 필요합니다.
Weibo 플랫폼의 1세대 아키텍처는 LAMP 아키텍처입니다. 데이터베이스는 MyIsam을 사용하고 백엔드는 PHP를 사용하며 캐시는 Memcache입니다.
애플리케이션 규모가 성장함에 따라 파생된 2세대 아키텍처는 비즈니스 기능을 모듈화하고 서비스 지향적이며 구성 요소화했습니다. 백엔드 시스템은 PHP에서 Java로 대체되어 점차적으로 지원되는 SOA 아키텍처를 형성했습니다. 오랫동안 Weibo 플랫폼의 비즈니스 개발.
이를 바탕으로 오랜 기간의 재구성, 온라인 운영, 사고 및 침전을 거쳐 플랫폼은 3세대 아키텍처 시스템을 형성했습니다.
먼저 Weibo의 핵심 비즈니스 다이어그램(아래)을 살펴보겠습니다. 매우 복잡합니까? 하지만 이는 이미 더 이상 단순화할 수 없는 비즈니스 다이어그램입니다. 3세대 기술 시스템은 Weibo의 핵심 비즈니스에서 새로운 제품과 기능의 신속하고 효율적이며 안정적인 출시를 보장하는 것입니다.
3세대 기술 시스템 Weibo 플랫폼의 3세대 기술 시스템은 직교 분해 방법을 사용하여 모델을 구축합니다. 수평 방향에서는 일반적인 3단계 계층 모델, 즉 인터페이스 계층, 서비스 계층 및 리소스 계층이 채택됩니다. 수직 방향에서는 좀 더 자세히 비즈니스 아키텍처, 기술 아키텍처, 모니터링 플랫폼, 서비스 거버넌스 플랫폼으로 나누어진다. 다음은 플랫폼의 전체 아키텍처 다이어그램입니다.
위 그림과 같이 직교분해 방식은 전체 그림을 3*4=12개의 영역으로 분해합니다. 각 영역은 수평 차원과 수직 차원의 교차점을 나타내며 이에 따라 이 영역의 핵심 기능 포인트를 정의합니다. , Area 5와 같은 서비스 계층의 기술 아키텍처를 주로 완성합니다.
다음은 수평 및 수직 방향의 디자인 원칙을 자세히 소개하며, 특히 4, 5, 6의 기술 구성 요소와 전체 아키텍처 시스템에서의 역할에 중점을 둡니다.
가로 레이어 수평적 차원의 분할은 중대형 인터넷 백엔드 비즈니스 시스템 설계에 있어 매우 기본이며 플랫폼 기술 시스템의 모든 세대에 반영됩니다. 수직적 차원의 후속 확장을 위한 초석을 마련하기 위한 간략한 소개는 다음과 같습니다.
[size=15.4545450210571px]1, 인터페이스 계층은 주로 웹 페이지 및 모바일 클라이언트와의 인터페이스 상호 작용을 구현하고 플랫폼의 세 가지 핵심 인터페이스 서비스가 콘텐츠입니다. (피드) 서비스, 사용자 관계 서비스 및 커뮤니케이션 서비스(단일 비공개 메시지, 그룹 메시지, 그룹 채팅).
[크기=15.4545450210571px]
[size=15.4545450210571px]2, 서비스 계층은 주로 핵심 비즈니스를 모듈화하여 서비스합니다. 클래스는 다른 서비스에 의존하지 않는 서비스 모듈로 정의되는 원자 서비스입니다. 예를 들어 일반적으로 사용되는 짧은 체인 서비스 및 디스패처 서비스가 이 범주에 속합니다. 그림에서는 수영 레인을 사용하여 독립성을 나타냅니다. 다른 유형은 피드 서비스, 통신 서비스 등 다양한 아토믹 서비스와 비즈니스 로직의 결합을 통해 완성되는 복합 서비스입니다. 자체 비즈니스 로직 외에도 짧은 체인, 사용자 및 디스패처 서비스에도 의존합니다.
[크기=15.4545450210571px]
[size=15.4545450210571px]3, 리소스 계층은 주로 일반 캐시 리소스 Redis 및 Memcached를 포함한 데이터 모델의 저장입니다. 지속성 데이터베이스 스토리지 MySQL, HBase 또는 분산 파일 시스템 TFS 및 Sina S3 서비스.
수평적 계층화의 특징 중 하나는 상위 계층의 서비스가 하위 계층에 종속되고, 하위 계층의 서비스가 상위 계층에 종속되지 않아 단순하고 직접적인 종속성을 생성한다는 것입니다. 관계.
계층 모델에 따라 Weibo 시스템의 서버는 주로 프런트엔드 머신(API 인터페이스 서비스 제공), 큐 머신(업링크 비즈니스 로직 처리, 주로 데이터 쓰기) 및 스토리지(mc, mysql, mcq, redis, HBase 등).
수직 확장 기술 아키텍처 비즈니스 아키텍처의 개발 및 최적화와 함께 플랫폼 연구 개발은 핵심 비즈니스를 지원하기 위해 많은 우수한 미들웨어 제품을 구현했습니다. 이러한 미들웨어는 비즈니스를 중심으로 기술 구성 요소가 점점 더 풍부해지면서 완전한 플랫폼이 형성됩니다. 기술 프레임워크는 플랫폼의 제품 개발 효율성과 비즈니스 운영 안정성을 크게 향상시켰습니다.
수평 방향의 상위 계층과 하위 계층의 관계와 달리 수직 방향은 기술 프레임워크를 기반 지원 지점으로 사용하여 양측의 비즈니스 아키텍처, 모니터링 플랫폼, 서비스 거버넌스 플랫폼을 구동하고 영향을 미칩니다. 다음은 핵심 구성 요소에 대한 소개입니다.
인터페이스 레이어 웹 V4 프레임워크 인터페이스 프레임워크는 비즈니스 인터페이스 개발 작업을 단순화 및 표준화하고, 공통 인터페이스 계층 기능을 프레임워크에 패키지하며, Spring의 AOP(Aspect-Oriented) 디자인 개념을 채택합니다. 인터페이스 프레임워크는 Jersey를 기반으로 2차 개발되어 Annotation을 기반으로 인터페이스(url, 매개변수)를 정의하고, 인증, 빈도 제어, 액세스 로그, 다운그레이드 기능이 내장되어 인터페이스 레이어 모니터링 플랫폼 및 서비스 거버넌스를 지원하며, Bean-json/xml 직렬화를 자동화했습니다.
서비스 계층 프레임워크 서비스 계층에는 주로 Weibo 플랫폼의 서비스 계층에서 가장 널리 사용되는 두 가지 프레임워크인 RPC 원격 호출 프레임워크와 메시지 대기열 프레임워크가 포함됩니다.
MCQ 메시지 큐 메시지 큐는 선입선출 통신 메커니즘을 제공합니다. 플랫폼 내에서 가장 일반적인 시나리오는 구현하는 것입니다. 데이터 작업 대기열 처리기는 비동기적으로 대기열에 쓰고 일괄적으로 DB에 씁니다. 메시지 대기열이 제공하는 비동기 메커니즘은 프런트 엔드 시스템의 응답 시간을 단축합니다. 둘째, 일괄 DB 작업도 간접적으로 DB 작업을 향상시킵니다. 성능 또 다른 응용 시나리오, 플랫폼 메시지 대기열을 통해 검색, 빅데이터 및 비즈니스 운영 부서에 실시간 데이터를 제공합니다.
Weibo 플랫폼 내에서 광범위하게 사용되는 MCQ(SimpleQueue Service Over Memcache) 메시지 큐 서비스는 MemCache 프로토콜을 기반으로 합니다. 메시지 데이터는 get/set라는 두 가지 명령만 가지고 있습니다. 모니터링하기 쉽고(통계 대기열), 풍부한 클라이언트 라이브러리를 보유하고 있으며 수년 동안 온라인으로 실행되어 왔으며 성능은 일반 MQ보다 몇 배 더 높습니다.
Motan RPC 프레임워크 Weibo의 Motan RPC 서비스는 기본 통신 엔진으로 Netty 네트워크 프레임워크를 사용하며 직렬화 프로토콜은 Hessian 및 Java 직렬화를 지원합니다. 통신 프로토콜은 Motan, http, tcp, mc 등을 지원합니다. Motan 프레임워크는 내부적으로 널리 사용됩니다. 시스템 견고성 및 서비스 거버넌스 측면에서 상대적으로 성숙한 기술 솔루션이 있으며 Config를 기반으로 합니다. 구성 관리 서비스는 Load Balance 전략(유연한 FailOver 및 FailFast HA 전략 지원, Round Robin, LRU, Condependent Hash 등의 Load Balance 전략 지원)과 서비스 거버넌스를 통해 완전한 서비스 콜 체인 데이터, 서비스 요청 성능 데이터를 생성합니다. , 응답 시간(Response Time ), QPS 및 표준화된 오류 및 예외 로그 정보를 제공합니다.
리소스 계층 프레임워크 MySQL과 HBase를 캡슐화하는 Key-List DAL 미들웨어, 맞춤형 계산 구성요소, 분산형 MC와 Redis를 지원하는 Proxy 등 많은 리소스 계층 프레임워크가 있습니다. 여기에서 플랫폼 아키텍처의 개체 라이브러리와 SSD 캐시 구성 요소를 공유하세요.
객체 라이브러리 객체 라이브러리는 Weibo에서 객체 데이터의 편리한 직렬화 및 역직렬화를 지원합니다. 직렬화 중에 JVM 메모리의 객체 데이터는 객체입니다. 직렬화되어 HBase에 기록되고 개체에 액세스해야 할 경우 ObjectID를 통해 읽혀집니다. 개체 라이브러리는 PB, JSON 및 바이너리 직렬화 프로토콜을 지원합니다. 웨이보에서 인용되는 영상, 사진, 기사 등을 일률적으로 객체로 정의하고, 표준 객체 메타데이터 스키마를 추상화하여 객체로 업로드합니다. 객체 스토리지 시스템(Sina S3) Sina S3의 다운로드 주소는 객체 메타데이터에 저장됩니다.
SSDCache SSD 하드 드라이브의 인기와 함께 우수한 IO 성능으로 인해 기존 SATA 및 SAS 디스크를 대체하는 데 점점 더 많이 사용되고 있습니다. 애플리케이션 시나리오: 1) mysql 데이터베이스의 하드 디스크 교체 현재 커뮤니티에는 SSD에 최적화된 MySQL 버전이 없습니다. 그럼에도 불구하고 SSD 하드 디스크를 직접 업그레이드하면 IOPS가 약 8배 증가할 수 있습니다. 성능 향상을 위한 Redis 하드 디스크 3) 정적 리소스 로딩 속도를 높이기 위해 CDN에 사용됩니다.
Weibo 플랫폼은 SSD를 분산 캐시 시나리오에 적용하여 기존 Redis/MC Mysql 방식을 Redis/MC SSD Cache Mysql 방식으로 확장하여 SSD 캐시를 L2 캐시로 사용하므로 먼저 MC/Redis 비용이 절감됩니다. 너무 크고 작은 용량으로 인해 DB 침투로 인한 데이터베이스 접근 부담도 해결됩니다.
수직적 모니터링 및 서비스 거버넌스 서비스 규모와 비즈니스가 점점 더 복잡해짐에 따라 비즈니스 설계자조차도 서비스 간의 종속성을 정확하게 설명하기 어렵고, 서비스의 관리 및 운영이 점점 더 어려워지는 맥락에서 Google의 dapper를 참조하세요. 트위터의 zipkin과 같은 플랫폼은 자체적으로 대규모 분산 추적 시스템인 WatchMan을 구현했습니다.
WatchMan 대규모 분산 추적 시스템 다른 대형 및 중형 인터넷 애플리케이션과 마찬가지로 Weibo 플랫폼은 브라우저나 모바일 클라이언트를 통한 사용자의 각 HTTP 요청이 애플리케이션 서버에 도달한 후 수많은 비즈니스 시스템이나 시스템을 통과하게 됩니다. 구성 요소 및 발자국을 남겨주세요. 그러나 이렇게 분산된 데이터는 문제 해결이나 프로세스 최적화에 제한적으로 도움이 됩니다. 이러한 일반적인 프로세스 간/스레드 간 시나리오의 경우 이러한 로그를 수집하고 분석하는 것이 특히 중요합니다. 한편, 각 공간의 성능 데이터를 수집하고 정책에 따라 각 하위 시스템의 흐름 제어 또는 다운그레이드를 수행하는 것 역시 Weibo 플랫폼의 고가용성을 보장하는 중요한 요소입니다. 각 요청의 전체 호출 링크를 추적할 수 있어야 하며, 호출 링크에서 각 서비스의 성능 데이터를 수집하고, 성능 데이터를 계산하고 성능 지표를 비교하여 피드백을 제공할 수 있어야 합니다. (SLA) 제어 흐름 속에서 Weibo의 Watchman 시스템은 이러한 목표를 기반으로 탄생했습니다.
시스템 설계의 핵심 원칙은 비침투성입니다. 비비즈니스 구성 요소로서 다른 비즈니스 시스템에 최대한 침입하지 않아야 하며 사용자에게 투명성을 유지하여 개발자의 부담을 크게 줄일 수 있습니다. 그리고 접근 장벽. 이러한 고려 사항에 따라 모든 로그 수집 지점은 인터페이스 프레임워크, RPC 프레임워크 및 기타 리소스 미들웨어를 포함한 기술 프레임워크 미들웨어에 배포됩니다.
WatchMan은 기술팀이 구축한 프레임워크로 모든 비즈니스 시나리오에 적용됩니다. 운영 기반은 모니터링 플랫폼을 개선하기 위해 이 시스템을 함께 사용하여 분산 서비스 거버넌스를 완성합니다. 서비스 확장 및 축소, 서비스 저하, 트래픽 전환, 서비스 출시 및 그레이스케일.
종료 요즘 플랫폼의 기술 업그레이드, 비즈니스 개발, 시스템 운영 및 유지 관리 서비스를 주도하는 플랫폼에서 기술 프레임워크의 역할이 점점 더 중요해지고 있습니다. 이 기사에서는 핵심 미들웨어에 대해 소개하지 않습니다. 앞으로도 지속적으로 디자인 원칙과 시스템 아키텍처를 도입하겠습니다.
작가소개 Wei Xiangjun(@伟向军_微博)은 베이징 우편통신대학을 졸업하고 현재 Weibo 플랫폼 설계자로 활동하고 있으며 Microsoft, Kingsoft Cloud, Sina Weibo에서 기술 연구 및 개발 업무를 담당하고 있습니다. 시스템 아키텍처 설계, 오디오 및 비디오 통신 시스템, 분산 파일 시스템, 데이터 마이닝 및 기타 분야에 중점을 두고 있습니다.
[size=15.4545450210571px] 이 글은 InfoQ 공식 계정에서 옮겨왔습니다: ucaicn 진심으로 추천합니다
[url=]신고[/url |