프로젝트 소개

anygo는 의존성 감소를 목표로 하는 Go 언어 RPC 프레임워크 및 기초 라이브러리로, 각 기능 모듈을 독립적으로 사용할 수 있습니다. 주요 기능은 다음과 같습니다. **RPC Client 기능**: - 하위 서비스 관리자: 설정 파일을 통해 연결 타임아웃, 재시도, 연결 풀, TLS 및 프록시 등을 관리할 수 있으며, DNS, File, Host+Port 서비스 발견 방식과 Random, RoundRobin 부하 분산 전략을 내장하고 있습니다. - 네트워크 컴포넌트: 캐시 및 인터셉터 기능이 포함된 DNS 해석 컴포넌트와 TCP 다이얼 컴포넌트를 포함합니다. - 프로토콜 구현: 범용 TCP RPC Client를 제공하며, Redis (Resp3) 및 HTTP/HTTPS 프로토콜을 구현했습니다. - 스토리지 클라이언트: resp3 기반의 Redis Client와 다양한 데이터베이스(MariaDB, MySQL, SQL Server, Sqlite, Postgres)를 지원하는 경량 ORM db Client를 포함합니다. **RPC Server 기능**: - 미들웨어와 다양한 라우팅 파라미터를 지원하는 HTTP Router를 제공합니다. - HTTP Session 컴포넌트 및 인증번호 생성 기능을 포함합니다. **범용 기초 라이브러리**: - 환경 및 설정: xattr은 애플리케이션 전역 환경 정보를 관리하며, xcfg는 환경 변수와 전역 정보에서 JSON, XML 등의 형식으로 설정을 읽어오는 기능을 지원합니다. - 캐시 컴포넌트 (xcache): 제네릭을 지원하며 파일, 메모리(LRU/FIFO/LIFO), Redis, 데이터베이스 스토리지를 내장하고 있습니다. 다층 캐시 조합(Chains) 및 투명 읽기 템플릿(Reader)을 지원합니다. - KV 스토리지: Redis와 유사한 Key-Value API를 제공하여 String, List, Hash, Set, ZSet 등의 타입을 지원하며, 하위 스토리지 드라이버를 유연하게 전환할 수 있습니다. - 기타 도구: slog 기반으로 캡슐화된 로그 라이브러리 (xlog), 제네릭 단언 라이브러리 (xt) 및 국제화 (i18n) 지원을 제공합니다.