분산 서비스 거버넌스에 대한 설계 문제가 있습니까?
마이크로서비스의 [등록 센터]를 구현하기 위해 C++를 사용했으며 이 등록 센터에 대한 고가용성을 구현했습니다. 내 서비스 네트워크는 TCP를 통해 통신하며 서비스가 온라인 상태가 되면 [등록 센터]에 등록됩니다. 등록 센터]가 푸시됩니다. 이 서버 주소는 [서비스 소비자]로 이동합니다. 이런 식으로 [서비스 소비자]는 모든 [마이크로서비스 맵]을 보유합니다. 내 로드 밸런싱은 [서비스 소비자]에서 수행됩니다. 직설적으로 말하면 [서비스 소비자]는 메모리에 상주해야 하므로 매우 중요합니다. Python에서는 Java가 더 쉽지만 FPM을 사용하는 PHP에서는 사형 선고와 같습니다. 기존 FPM PHP가 이 아키텍처를 지원할 수 있도록 PHP를 변환하는 방법입니다. Dubbo도 비슷한 방식으로 하는 것 같은데, 프론트엔드를 PHP로 하면 좀 골치아프지 않을까요?
답글 내용:
로드 밸런싱에는 두 가지 방법이 있습니다.클라이언트 로드 밸런싱(일반적으로 Finagle 및 Dubbo) 구현이 간단하고 서비스가 직접 연결되어 성능이 좋은 것이 장점이다. 단점은 여러 언어를 사용하는 경우 언어별로 클라이언트를 구현해야 한다는 점입니다.
서버 측 로드 밸런싱, 일반적인 로드 밸런서는 Nginx 및 HAProxy입니다. 일반적으로 역방향 프록시가 서비스 앞에 추가됩니다. 클라이언트는 역방향 프록시를 통해 서버와 통신하며, 특정 로드 밸런싱 논리는 로드 밸런서에 의해 구현됩니다. 로드 밸런서 자체도 레지스트리에 등록할 수 있습니다. 장점은 클라이언트가 매우 간단하고 여러 언어를 지원한다는 것입니다. 단점은 약간의 성능 저하가 있다는 것입니다.
구체적인 선택은 비즈니스와 회사의 기술 선택에 따라 다릅니다. 다국어 시나리오에서 서버 측 솔루션은 유지 관리 비용을 많이 절약해 줄 것입니다. 물론 클라이언트를 유지 관리할 팀이 있다면, 결국 팀이 해야 할 일은 무엇인지는 언급하지 않겠습니다.
순수 Java 시나리오의 경우 Dubbo 또는 유사한 프레임워크가 이미 사용되었습니다. 프레임워크가 이미 지원을 제공한다면 신경쓰지 마세요.
주요 시나리오로 돌아가서, PHP 서비스에서 서비스 검색을 구현해야 하는 경우 Memcache에 넣는 등 서비스 레지스트리를 캐시하고 가끔씩 다시 가져올 수 있습니다.
이상 가장 간단하고 아마도 가장 안정적인 솔루션은 PHP 서버에서 에이전트를 실행하여 등록 센터를 모니터링하는 것입니다. 이 에이전트는 FPM에서 PHP를 호출한 후 PHP 구성 파일을 수정합니다. .
일반적으로 거의 모든 프레임워크에는 구성 파일이 있습니다. 이 파일을 직접 수정하면 됩니다(구성 파일도 읽어야 하기 때문에). 이 설계 방법에는 이제 특정 장점이 있습니다. 즉, 서비스 버스에 속한 일부 기능이 완전히 서비스 소비자 노드로 하위 계층화되었습니다. 이러한 방식으로 버스 자체는 더 가벼운 기능을 가지며 서비스 등록 및 등록 배포만 관리합니다. 정보. 등록 센터의 가동 중지 시간은 기본적으로 서비스 소비 및 호출에 영향을 미치지 않습니다.
방금 언급한 문제에 대한 해결책은 두 가지가 있습니다. 하나는 라우팅 및 로드 밸런싱을 포함하여 버스로 돌아가는 서비스 에이전트의 기능을 향상시키는 것입니다. 이를 원하지 않는 경우 별도의 서버를 설정하여 이 서버에서 서비스 소비 및 라우팅 균형 조정 논리를 구현하는 것도 고려할 수 있습니다. 이 서버는 PHP 애플리케이션에 해당하는 백엔드 프록시로 간주될 수 있습니다. 마이크로서비스에서 클라이언트 로드 밸런싱을 사용하는 것이 주요 추세라고 생각합니다. 첫째, 성능 이점이 있고, 둘째, 등록 센터가 다운되더라도 여전히 정상적으로 실행될 수 있습니다. 클라이언트 자체에서 회로 차단기 및 서비스를 구현해야 합니다. 다운그레이드와 같은 로직의 경우 간단한 로드 밸런싱 로직을 구현하는 것이 좋습니다. 저는 PHP에 익숙하지 않습니다. 서비스 구성을 service_config.php 파일에 작성하고 이 service_config.php를 다른 파일에 포함시키는 것이 가능합니까? 이전에 감지된 파일의 타임스탬프가 포함되어 있습니다. 특정 시간(예: 1분)을 초과하면 등록 센터에서 구성 쓰기 파일을 다시 가져옵니다. 두 가지 솔루션
1. Swoole
Swoole: PHP의 비동기식, 병렬, 고성능 네트워크 통신 엔진
Swoole을 사용하여 영구적인 내부 테스트 PHP 서버를 작성할 수 있습니다
2. 캐시
APCu(PHP: APCu - 수동) 또는 redis를 사용하여 서버 주소 목록을 캐시합니다
서비스 목록의 특정 성능 요구 사항 및 일관성 요구 사항을 확인하세요. 일관성 요구 사항이 상대적으로 높고 캐시가 더 짧을 수 있으며 Redis 캐시를 읽고 쓰는 데 따른 네트워크 오버헤드가 걱정된다면 APCu와 같은 로컬 캐시를 사용할 수 있습니다. 스울

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

PHP는 지난 수십 년 동안 네트워크를 형성했으며 웹 개발에서 계속 중요한 역할을 할 것입니다. 1) PHP는 1994 년에 시작되었으며 MySQL과의 원활한 통합으로 인해 개발자에게 최초의 선택이되었습니다. 2) 핵심 기능에는 동적 컨텐츠 생성 및 데이터베이스와의 통합이 포함되며 웹 사이트를 실시간으로 업데이트하고 맞춤형 방식으로 표시 할 수 있습니다. 3) PHP의 광범위한 응용 및 생태계는 장기적인 영향을 미쳤지 만 버전 업데이트 및 보안 문제에 직면 해 있습니다. 4) PHP7의 출시와 같은 최근 몇 년간의 성능 향상을 통해 현대 언어와 경쟁 할 수 있습니다. 5) 앞으로 PHP는 컨테이너화 및 마이크로 서비스와 같은 새로운 도전을 다루어야하지만 유연성과 활발한 커뮤니티로 인해 적응력이 있습니다.

PHP는 동적 웹 개발 및 서버 측 응용 프로그램에 사용되는 서버 측 스크립팅 언어입니다. 1.PHP는 편집이 필요하지 않으며 빠른 발전에 적합한 해석 된 언어입니다. 2. PHP 코드는 HTML에 포함되어 웹 페이지를 쉽게 개발할 수 있습니다. 3. PHP는 서버 측 로직을 처리하고 HTML 출력을 생성하며 사용자 상호 작용 및 데이터 처리를 지원합니다. 4. PHP는 데이터베이스와 상호 작용하고 프로세스 양식 제출 및 서버 측 작업을 실행할 수 있습니다.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

PHP의 핵심 이점에는 학습 용이성, 강력한 웹 개발 지원, 풍부한 라이브러리 및 프레임 워크, 고성능 및 확장 성, 크로스 플랫폼 호환성 및 비용 효율성이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 웹 서버와 우수한 통합 및 여러 데이터베이스를 지원합니다. 3) Laravel과 같은 강력한 프레임 워크가 있습니다. 4) 최적화를 통해 고성능을 달성 할 수 있습니다. 5) 여러 운영 체제 지원; 6) 개발 비용을 줄이기위한 오픈 소스.

vs 코드에서는 다음 단계를 통해 터미널에서 프로그램을 실행할 수 있습니다. 코드를 준비하고 통합 터미널을 열어 코드 디렉토리가 터미널 작업 디렉토리와 일치하는지 확인하십시오. 프로그래밍 언어 (예 : Python의 Python Your_file_name.py)에 따라 실행 명령을 선택하여 성공적으로 실행되는지 여부를 확인하고 오류를 해결하십시오. 디버거를 사용하여 디버깅 효율을 향상시킵니다.
