lamp-cloud 마이크로서비스 비계의 전신은 zuihou-admin-cloud이며 3.0.0부터 lamp-cloud로 이름이 변경되었습니다.
Lamp-cloud 마이크로서비스 스캐폴딩은 SpringCloud(Hoxton.SR10) + SpringBoot(2.3.10.RELEASE) 기반의 SaaS 마이크로서비스 스캐폴딩으로, 사용자 관리, 리소스 권한 관리, 게이트웨이를 포함하는 통합 인증 및 인증 백그라운드 관리 시스템을 갖추고 있습니다. API, 분산 트랜잭션, 대용량 파일 중단점 조각화 등의 다중 모듈은 다중 비즈니스 시스템의 병렬 개발을 지원하며 백엔드 서비스를 위한 개발 발판으로 사용할 수 있습니다. 코드가 간결하고 구조가 명확하여 학습 및 프로젝트에서 직접 사용하기에 적합합니다. 핵심 기술은 Nacos, Fegin, Riadfdson, Zuul, Hystrix, JWT Token, Mybatis, SpringBoot, Redis 및 RiadfdsitMQ와 같은 주요 프레임워크 및 미들웨어를 사용합니다.
램프 클라우드 마이크로서비스 비계 기능
1. 서비스 등록 및 검색 및 호출
Feign을 사용하여 서비스 상호 변조를 구현하는 Nacos 기반 서비스 등록 및 검색은 원격 호출에 대한 HTTP 요청을 사용할 때 로컬 메서드를 호출하는 것과 동일한 코딩 경험을 얻을 수 있습니다. 이것이 HTTP 요청이라는 것을 인식했습니다.
2. 서비스 인증:
JWT를 사용하여 서비스 간 스케줄링에 대한 권한 확인을 강화하고 내부 서비스의 보안을 보장합니다.
3. 로드 밸런싱
서비스에 의해 유지되는 나머지는 일반적으로 사용되는 node.js 및 nginx 외에도 Spring Cloud 시리즈의 zuul 및 riadfdson이 일반적인 게이트웨이 제어 및 로드 밸런싱을 수행하는 데 도움이 될 수 있습니다. 그중 해외 프로젝트의 확장 및 참조는 전류를 제한하는 JWT Zuul 전류 제한 플러그인을 기반으로 합니다.
4. 융합 메커니즘
서비스의 분산으로 인해 서비스 간 통화의 "사태"를 방지하기 위해 Hystrix를 서비스 간 통화의 "사태"를 방지하기 위한 퓨즈로 사용합니다.
5. 모니터링
Spring Boot Admin을 사용하여 각 독립 서비스의 실행 상태를 모니터링하고, 터빈을 사용하여 인터페이스의 실행 상태 및 호출 빈도를 실시간으로 확인하고, Zipkin을 사용하여 각 서비스 간의 호출 체인을 확인합니다.
6. 링크 통화 모니터링
Zipkin을 사용하여 마이크로서비스의 풀링크 성능 모니터링을 실현하고, 전체 차원에서 로컬 차원까지 다양한 지표를 표시하며, 애플리케이션 전반에 걸쳐 모든 콜 체인 성능 정보를 중앙에서 표시합니다. 이를 통해 전체 및 로컬 성능을 쉽게 측정하고, 소스를 쉽게 찾을 수 있습니다. 이는 생산 시 문제 해결 시간을 크게 단축할 수 있습니다. 그것으로 우리는 할 수 있다
링크 추적 요청 및 신속한 오류 위치 확인: 비즈니스 로그와 결합된 콜 체인을 통해 오류 정보를 신속하게 찾을 수 있습니다. 시각화: 각 단계마다 시간이 걸리며 성능 분석이 수행됩니다. 종속성 최적화: 각 호출 링크의 가용성, 서비스 종속성 분류 및 최적화. 데이터 분석, 링크 최적화: 사용자의 행동 경로를 얻을 수 있으며 요약 분석은 많은 비즈니스 시나리오에 적용됩니다.
7. 데이터 권한
Mybatis 기반 DataScopeInterceptor 인터셉터를 사용하여 간단한 데이터 권한 구현
8. SaaS(멀티 테넌트) 비침해 솔루션
Mybatis 인터셉터를 사용하여 모든 SQL을 가로채고 기본 스키마를 수정하여 다중 테넌트 데이터 격리를 달성합니다. 그리고 플러그 가능성을 지원합니다.
9. 두 번째 수준 캐시
캐시를 운영하기 위해 J2Cache를 사용하며, 1단계 캐시는 메모리(Caffeine)를 사용하고, 2단계 캐시는 Redis를 사용합니다. 캐시 읽기 횟수가 많으면 L2 네트워크가 전체 시스템의 병목 현상을 일으키게 되므로 L1의 목표는 L2에 대한 읽기 횟수를 줄이는 것입니다. 이 캐싱 프레임워크는 주로 클러스터 환경에서 사용됩니다. 또한 애플리케이션 재시작으로 인한 캐시 콜드 스타트 이후 백엔드 비즈니스에 미치는 영향을 피하기 위해 단일 시스템에서 사용할 수도 있습니다.
10. 우아한 빈 변환
Dozer 구성요소를 사용하여 DTO, DO, PO 및 기타 객체를 최적화하고 변환합니다.
11. 프런트엔드와 백엔드의 통합된 양식 검증
엄격한 양식 검증은 일반적으로 프런트엔드와 백엔드 검증을 동시에 요구합니다. 그러나 기존 프로젝트에서는 프런트엔드와 프런트엔드를 각각 한 번씩만 테스트할 수 있습니다. 백엔드도 동시에 수정되어야 합니다. 따라서 zuihou-validator-starter의 시작 종속성은 hibernate-validator를 기반으로 캡슐화되어 확인해야 하는 규칙을 얻기 위한 공통 인터페이스를 제공합니다. 그런 다음 프런트엔드는 백엔드에서 반환된 규칙을 사용합니다. 향후 규칙이 변경되면 백엔드만 수정하면 됩니다.
12. XSS(교차 사이트 스크립팅) 공격 방지
필터를 사용하여 모든 요청에서 양식 매개변수 필터링
Json deserializer를 통해 모든 애플리케이션/json 유형 매개변수 필터링
13. 현재 로그인된 사용자 정보 주입기
주석을 통한 사용자 ID 주입
14. 온라인 API
네이티브 swagger-ui의 일부 기능은 친숙하지 않기 때문에 국내 오픈소스인 swagger-bootstrap-ui를 채택하고 springboot 사용자에게 편의를 제공하기 위해 stater를 만들었습니다.
15. 코드 생성기
코드 생성기 세트는 데이터베이스 필드의 주석을 구성하여 열거 클래스, 데이터 사전 주석, SaveDTO, UpdateDTO, 양식 유효성 검사 규칙 주석, Swagger 주석 등을 기반으로 사용자 정의됩니다.
16. 예정된 작업 스케줄러
xxl-jobs를 기반으로 기능이 향상되었습니다. (예: 지정된 시간에 작업 전송, 실행자 및 스케줄러와 프로젝트 병합, 여러 데이터 소스)
17. 대용량 파일/중단점/조각난 이력서 업로드
프론트 엔드는 webupload.js를 사용하고 백엔드는 NIO를 사용하여 대용량 파일의 중단점 조각 업로드를 구현합니다. Eureka, Zuul 및 파일 서비스를 시작한 후 docs/chunkUploadDemo/demo.html을 직접 열어 테스트할 수 있습니다. 테스트 결과 파일 서비스를 시작하기 위한 로컬 제한 스택 최대 메모리는 128M이며, 4.6G 이상의 대용량 파일은 5분 이내에 성공적으로 업로드할 수 있습니다. 오랜 시간이 걸립니다.
18. 분산 거래
Alibaba의 분산 트랜잭션 미들웨어인 Seata와 통합되어 효율적이고 침해가 없는 방식으로 마이크로서비스 시나리오에서 직면한 분산 트랜잭션 문제를 해결합니다.
19. 크로스 테이블, 크로스 데이터베이스, 크로스 서비스 관련 데이터 자동 주입기
이는 테이블 간, 데이터베이스 간, 서비스 간 페이징 데이터 또는 단일 개체의 속성과 관련된 데이터를 에코하는 문제를 해결하는 데 사용됩니다. 정적 데이터 속성(데이터 사전) 및 동적 기본 키의 자동 주입을 지원합니다. 데이터.
20. 그레이스케일 출시
빈번한 온라인 서비스 업데이트, 롤백, 빠른 반복 및 회사 내 공동 개발 문제를 해결하기 위해 이 프로젝트는 수정된 riadfdson의 로드 밸런싱 전략을 사용하여 그레이스케일 릴리스를 달성합니다.
램프구름 업데이트 로그
v3.5.5
리팩터링
lamp-cloud: 게이트웨이의 다른 필터가 로그 정보를 기록할 수 있도록 TraceFilter의 실행 순서를 조정합니다.
lamp-cloud: RouterMeta 최적화 및 프런트엔드 사용자 정의 키 지원
lamp-cloud: 지역 크롤링 인터페이스 크롤링 데이터 왜곡 문제 최적화
lamp-cloud: 지역 크롤링 인터페이스를 최적화하면 도시 아래 카운티의 데이터를 크롤링할 수 없습니다.
lamp-cloud: 트리 구조 기본 엔터티에 addChildren 메소드 추가
lamp-cloud: 웹 소켓 서비스를 무시하도록 Swagger 집계 구조를 최적화합니다.
고치다
lamp-util: 요청 헤더 매개변수에 중국어가 포함되어 있으면 비동기식 feign 호출에서 오류를 보고합니다.
lamp-cloud: 트리 구조가 올바른 접합 계층 구조를 얻을 수 없는 버그를 수정했습니다.
lamp-web-plus: 트리 페이지의 고정 높이로 인한 버그 수정
lamp-web-plus: 권한으로 인해 구분선이 잘못 표시되는 TableAction 구성 요소 드롭다운 문제를 해결합니다.
lamp-web-plus: 목록 페이지의 데이터가 편집 페이지로 전송되어 실수로 데이터가 수정되는 문제를 수정했습니다.