시간이 지남에 따라 몽상가 | 시간 경과에 따른 기여자 |
---|---|
GitHub: opengoofy/hippo4j
Gitee: opengoofy/hippo4j
전체 문서 및 자세한 내용을 보려면 다음을 방문하세요. Docs
스레드 풀은 풀링(Pooling) 개념을 기반으로 스레드를 관리하는 도구로, 스레드 풀을 사용하면 스레드 생성 및 소멸 비용을 줄일 수 있고 스레드가 너무 많아 시스템 리소스가 고갈되는 것을 방지할 수 있습니다. 높은 동시성 및 대용량 작업 처리 시나리오에서는 스레드 풀의 사용이 필수적입니다.
실제로 프로젝트에서 스레드 풀을 사용하는 경우 다음과 같은 문제점에 직면할 수 있다고 생각합니다.
스레드 풀이 임의로 정의되어 있고 스레드 리소스가 너무 많아 서버에 부하가 많이 걸립니다.
스레드 풀 매개변수는 평가하기 어렵습니다. 비즈니스 동시성이 증가하면 비즈니스가 실패할 위험에 직면하게 됩니다.
스레드 풀 작업 실행 시간은 평균 실행 주기를 초과하므로 개발자에게는 표시되지 않습니다.
스레드 풀 작업의 누적은 거부 정책을 유발하고 기존 비즈니스의 정상적인 운영에 영향을 미칩니다.
업무상 타임아웃, 서킷 브레이커 등의 문제가 발생할 경우 모니터링이 되지 않아 문제가 스레드 풀에 의한 것인지 판단이 불가능합니다.
기본 스레드 풀은 런타임 변수 전송을 지원하지 않습니다. 예를 들어 MDC 컨텍스트는 스레드 풀을 발견할 때 GG를 수행합니다.
정상적인 종료를 수행할 수 없습니다. 프로젝트가 종료될 때 실행 중인 많은 스레드 풀 작업이 삭제되었습니다.
스레드 풀이 실행되는 동안 작업 실행이 중지됩니다. 교착 상태가 발생했거나 시간이 많이 걸리는 작업을 수행한 것으로 의심되지만 시작할 방법이 없습니다.
다음 기능을 지원합니다.
전역 제어 - 응용 프로그램 스레드 풀 인스턴스를 관리합니다.
동적 변경 - 애플리케이션이 실행되는 동안 코어, 최대 스레드 수, 차단 대기열 용량, 거부 정책 등을 포함하되 이에 국한되지 않는 스레드 풀 매개변수를 동적으로 변경합니다.
알림 알람 - 내장된 4가지 알람 알림 전략, 스레드 풀 활동, 용량 수위, 거부 전략 및 작업 실행 시간이 너무 깁니다.
데이터 수집 - 로그, 내장 컬렉션, Prometheus, InfluxDB, ElasticSearch 등을 포함하되 이에 국한되지 않는 스레드 풀 데이터를 수집하는 다양한 방법을 지원합니다.
모니터링 실행 - 스레드 풀 런타임 데이터를 실시간으로 확인하고, 맞춤 시간 내에 스레드 풀 런타임 데이터를 차트로 표시합니다.
기능 확장 - 프로젝트가 닫힐 때 스레드 풀 작업 전달 컨텍스트를 지원하고 스레드 풀이 지정된 시간 내에 작업을 완료할 때까지 기다리는 것을 지원합니다.
다중 모드 - 두 가지 기본 제공 사용 모드: 구성 센터에 대한 종속성 및 미들웨어 종속성 없음.
컨테이너 관리 - Tomcat, Jetty, Undertow 컨테이너 스레드 풀 런타임 보기 및 스레드 번호 변경.
프레임워크 적응 - Dubbo, Hystrix, RabbitMQ, RocketMQ 및 기타 소비자 스레드 풀 런타임 데이터 보기 및 스레드 번호 변경.
변경 검토 - 일반 사용자가 스레드 풀 매개변수를 변경하면 적용되기 전에 관리자 검토가 필요합니다.
동적 플러그인 - 사용자 정의 플러그인과 런타임 확장을 지원하는 다중 스레드 풀 플러그인이 내장되어 있습니다.
다중 버전 적용 - 실제 테스트 후 클라이언트 SpringBoot 1.5.x => 2.7.5 버전이 지원되었습니다(상위 버전은 테스트되지 않았습니다).
로컬 데모 목적은 빠른 시작을 참조하세요.
데모 환경: http://console.hippo4j.cn/index.html
더 많은 연결된 회사가 등록 주소에 등록하는 것을 환영합니다. 등록은 제품 홍보용입니다.
오픈소스는 쉽지 않습니다. 오른쪽 상단의 별표를 클릭하여 격려해 주세요!
Hippo4j의 업데이트된 기사와 공유된 정보를 실시간으로 팔로우하고 싶다면 제 공식 계정을 팔로우하시면 됩니다.
사용 중 질문이 있거나 프로젝트에 대한 제안 사항이 있는 경우 공식 계정을 팔로우하고 답장을 보내주세요. 그룹에 가입하여 같은 생각을 가진 1000+
친구들과 소통하고 토론하세요.
귀하의 회사에서 Hippo4j 시나리오를 사용하지 않는 경우 주로 다음과 같은 이유로 프로젝트의 기본 원칙을 읽어볼 것을 권장합니다.
코드 품질과 후속 확장 동작을 개선하기 위해 다양한 디자인 패턴을 사용하여 높은 응집력과 낮은 결합도를 달성합니다.
프레임워크의 최하위 계층은 Spring 프레임워크에 의존하여 실행되며, 소스 코드에서 다수의 Spring 관련 기능을 사용합니다.
JUC 동시성 패키지의 다양한 도구를 사용하여 멀티 스레드 작업의 안전성을 보장하고 실제 시나리오를 통해 동시 프로그래밍을 이해합니다.
주류 오픈 소스 프레임워크인 Nacos 및 Eureka를 통해 경량 구성 센터 및 등록 센터 기능을 구현하는 방법을 알아보세요.
RPC 프레임워크 구현을 사용자 정의하고 Netty를 캡슐화하여 클라이언트/서버 네트워크 통신 최적화를 완료합니다.
CheckStyle 및 Spotless와 같은 플러그인을 통해 코드 작성을 표준화하여 고품질 코드 동작과 코드 스타일을 보장합니다.
[Sa-Token]: 인증을 간단하고 우아하게 만드는 경량형 Java 권한 인증 프레임워크!
[HertzBeat]: 사용하기 쉽고 친숙한 클라우드 모니터링 시스템, 에이전트가 필요 없으며 강력한 맞춤형 모니터링 기능.
[JavaGuide]: 대부분의 Java 프로그래머가 마스터해야 하는 핵심 지식을 다루는 가이드입니다.
[ toBeBetterJavaer ]: 이해하기 쉽고 유머러스한 Java 학습 가이드입니다.
[Jpom]: 간단하고 가벼운 저침해 온라인 구축, 자동 배포, 일일 운영 및 유지 관리, 프로젝트 모니터링 소프트웨어입니다.
[12306]: 고모방 12306 사용자 + 티켓 예매 + 주문 + 결제 서비스를 완성하여 학생들이 취업 프로젝트에 집중할 수 있도록 돕습니다.
[CongoMall]: DDD 도메인 중심 모델을 기반으로 개발된 기업형 쇼핑몰로 쇼핑몰 비즈니스와 인프라를 포함합니다.
프로젝트에 기여한 모든 개발자에게 감사드립니다. 기여에 관심이 있으시면 좋은 첫 번째 호를 참조하십시오.
Hippo4j 커뮤니티는 Jetbrains로부터 여러 라이선스를 받았으며 프로젝트에 활동적인 개발자를 배정했습니다. 오픈 소스 커뮤니티를 지원해준 Jetbrains에 매우 감사드립니다.