개발 자: Sentinel 흐름 제어 기능 이 SpringMVC / SpringBoot 에서 의 실천

3073 단어
집성 Sentinel 전생
흐름 통 제 는 분포 식 시스템 에서 비교적 기본 적 인 수요 로 시스템 부하, 서비스 분량, 분량 선별, 안전, 통제 등 이 필요 하 다.
흐름 제어 수단 은 일반적으로 데이터 게 이 트 웨 이와 업무 내 에 마 운 트 되 는 논리 이다.
데이터 게 이 트 웨 이 는 Nginx 와 같은 프 록 시 계층 에서 흔히 볼 수 있 습 니 다. 확장 플러그 인, Lua 스 크 립 트 를 통 해 IP / path / Query 등 형식의 흐름 을 제어 합 니 다.업무 내 에 주로 국부 또는 구조 층 에서 직진 신호 분량, 스 레 드 탱크, 시간 초과 또는 다른 논리 로 흐름 통 제 를 실현 한다.전 자 는 주로 운영 가능 한 조작 성에 나타 나 고 업무 라인 을 침범 하지 않 으 며 후 자 는 목적 성 이 63745 ° 강하 지만 침입 성 이 있 거나 수정 할 때 배치 해 야 하 며 전체 12207 ° 업무 팀 에 통제 할 수 있다.
두 가지 유형의 흐름 통 제 는 흔히 12112 ℃ 로 갈 라 지고 (서로 다른 팀 이 공유 하지 않 는 공간 에서 행동 통제) 지표의 불 균형 성 이 자주 나타난다.
이 문 제 를 해결 하기 위해 우 리 는 기 존의 수 요 를 모 으 고 관련 시스템 을 조사 연구 하기 시 작 했 습 니 다. 그리고 12032 세트 를 실현 하려 고 합 니 다. 업무 와 운영 을 동시에 대상 으로 하 는 응용 급 격 리 와 기본 규칙 유형의 수 요 를 만족 시 키 는 흐름 제어 실현 을 실현 하려 고 합 니 다. Nginx 에서 LuaJIT 를 이용 하여 더욱 강력 한 흐름 제어 모듈 을 실현 할 것 으로 예상 합 니 다.
조사 연 구 를 하 는 과정 에서 Sentinel 0.1 / 0.2 의 발표 가 있 었 습 니 다. * 12096 ° servlet 통합 (URL 제한) 을 가지 고 조작 * 12207 ° 판 (Dashboard) 을 가지 고 기본 적 인 실시 간 상황 조회, 실시 간 으로 배포 규칙 을 수정 하고 전체 부하 와 단일 지점 의 용 단 을 지원 하 며 QPS, 신호 분량 등 형식 으로 흐름 을 제어 할 수 있 습 니 다.제로 침입 을 제외 하고 대체적으로 우리 의 수 요 를 만족 시 키 기 때문에 Sentinel 진입 방안 을 바탕 으로 착지 시 도 를 하려 고 합 니 다.
Sentinel 통합 실천
우리 의 기본 수 요 는 다음 과 같다.
  • URL 기반 흐름 제어
  • Dashboard 를 바탕 으로 동적 수정 규칙
  • 업무 단 은 SpringMVC / SpringBoot
  • 비동기 Servlet (후속 제출)
  • sentinel - transport 감청 단 은 12061 ° 맞 춤 형 (방 벽 배치, 동 노드 다 중 서비스 와 관련)
  • 집적 어댑터 는 Sentinel 이 제공 하 는 기능, 어댑터 방식 을 바탕 으로 직진 의 기본 적 인 설정 과 수정 이 필요 하 다.
    집적 방식 은 현재 항목 의 분량 이 12042 ℃ 이 고 입 부분 은 대부분이 SpringMVC 를 바탕 으로 하 는 프로젝트 이 며 적은 부분 은 SpringBoot 프로젝트 이 며 운영 배치 의 측면 에서 볼 때 전체 12140 ℃ 전에는 주로 일반 운송 방식 (JVM / tomcat) 과 수용 방식 이 있 습 니 다.
  • 일반 운송 방식: JVM 시작 파 라 메 터 를 수정 하지 않 고 파 라 메 터 는 집중 설정 센터 나 properties * 12098 건 을 통 해 정의 합 니 다.
  • 용 器 화 ⽅ 식: 매개 변 수 는 대부분이 ENV 환경 을 통 해 분량 을 정 의 했 습 니 다.

  • 그래서 우 리 는 실제 수요 에 따라 Sentinel 초기 화 도 구 를 패키지 에 넣 었 습 니 다. SpringMVC 를 바탕 으로 XML 초기 화 방식 을 제 공 했 습 니 다. SpringBoot 를 바탕 으로 주해 초기 화 방식 을 제 공 했 습 니 다. 예 를 들 어:
    @InitDefaults(
    
              projectName = "demo",
    
              sentinelPort = 19000,
    
              sentinelGroup = "test"
    
         )

    집성 구조
    집적 요점
  • 은 12163 ℃ 에서 해당 하 는 Sentinel 의존 여 부 를 판단 한다
  • .
  • 움 직 이 는 설정
  • ZooKeeper 를 규칙 저장 센터 로 사용 (기 존 인 프 라 재 구축)
  • 노드 엔 드 는 규칙 에 대한 읽 기와 쓰기
  • 를 지원 합 니 다.
  • Dashboard
  • 를 지원 하기 위해 sentinel - transport - netty - http 을 통합 합 니 다.
  • Dashboard 를 이용 하여 API 조작 서 를 통 해 노드 의 에 너 지 를 간접 적 으로 Zookeeper 에 기록 하여 모든 노드
  • 를 나 누 어 줍 니 다.
    주로 스토리 보드 를 sentinel - web - servlet 로 하여 금 이 방안 을 사용 하 게 한다.
    Sentinel 에 대한 기대
  • 서로 다른 장면 에서 의 흐름 제어 집성 과 착지
  • 를 간소화 한다.
  • 더욱 간단 하고 엄격 하지 않 은 클 러 스 터 제한 흐름, 도입 가능 한 스토리 보드
  • Dashboard
  • Dubbo / ZooKeeper / Spring / Servlet 관련 적합 한 표준 을 실현 하 는 개봉 즉시 사용
  • 링크
    본 고 는 운 서 지역사회 의 오리지널 내용 으로 허락 없 이 전재 할 수 없다.
    다음으로 전송:https://juejin.im/post/5d034a21f265da1b8e709bdb

    좋은 웹페이지 즐겨찾기