입문부터 숙련까지: 제로 제로 프레임워크 마스터하기
Go-zero는 RPC, 캐싱, 예약된 작업 및 기타 기능을 포함한 완전한 솔루션 세트를 제공하는 뛰어난 Go 언어 프레임워크입니다. 실제로 go-zero를 사용하면 고성능 서비스를 구축하는 것은 매우 간단하며, 심지어 몇 시간 안에 초보자부터 숙련자까지 갈 수 있습니다.
이 글의 목적은 Go-Zero 프레임워크를 사용하여 고성능 서비스를 구축하는 과정을 소개하고 독자가 프레임워크의 핵심 개념을 빠르게 이해할 수 있도록 돕는 것입니다.
1. 설치 및 구성
고제로를 사용하기 전에 먼저 설치하고 필요한 환경을 구성해야 합니다.
1. 설치
go-zero 설치는 매우 간단합니다. 다음 명령을 실행하면 됩니다.
$ go get -u github.com/tal-tech/go-zero
그러면 GitHub에서 최신 버전의 go-zero가 자동으로 다운로드됩니다. 하지만 Go 1.13 이상을 사용하는 것이 좋습니다.
2. 구성
고제로를 사용하기 전에 필요한 환경을 구성해야 합니다. 특히 go-zero를 사용하여 서비스를 생성하려면 goctl 명령줄 도구를 설치해야 합니다.
$ GO111MODULE=on go get -u github.com/tal-tech/go-zero/tools/goctl
3. 프로젝트 생성
다음으로 goctl을 사용하여 새 프로젝트를 생성해야 합니다. 프로젝트 이름은 blog이고 다음 명령으로 생성할 수 있다고 가정합니다.
$ mkdir blog $ cd blog $ go mod init blog $ goctl api new blog
위 명령은 새 API 프로젝트를 생성하고 필요한 파일과 디렉터리를 생성합니다.
2. 서비스 만들기
다음으로 go-zero를 사용하여 새로운 서비스를 만들 수 있습니다. 서비스 이름은 user-service이며 다음 단계를 통해 생성할 수 있다고 가정합니다.
1. 서비스 생성
goctl을 사용하여 user-service의 서비스 코드 생성:
$ goctl api go -api user.api -dir .
위 명령은 사용자를 생성합니다. user-service의 서비스 코드가 포함된 user.go라는 파일이 포함된 현재 디렉터리의 디렉터리입니다.
2. 핸들러 구현
또한 특정 비즈니스 로직인 핸들러를 구현해야 합니다.
먼저 사용자 디렉터리 아래에 handler라는 새 디렉터리를 만들고 그 안에 userhandler.go라는 파일을 만들어야 합니다. 이 파일에는 핸들러 코드가 포함됩니다.
userhandler.go 코드는 다음과 같습니다.
package handler import ( "net/http" "github.com/tal-tech/go-zero/rest/httpx" "blog/service/user/api/internal/logic" "blog/service/user/api/internal/svc" ) func userHandler(ctx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { req, err := httpx.NewRequest(r) if err != nil { httpx.WriteError(w, err) return } l := logic.NewUserLogic(r.Context(), ctx) resp, err := l.GetUser(req) if err != nil { httpx.WriteError(w, err) return } httpx.WriteJson(w, resp) } }
위 코드는 go-zero에서 제공하는 Rest/httpx 패키지를 사용합니다. 이는 NewRequest, WriteError, WriteJSON 등과 같은 몇 가지 편리한 기능을 제공하여 HTTP 서비스를 단순화합니다. 글쓰기 과정.
3. 핸들러 등록
이제 위의 핸들러 프로그램을 서비스에 등록해야 합니다.
user.go 파일의 init 메소드에 다음 코드를 추가합니다.
func (s *Service) InitHandlers() { s.UserHandler = http.HandlerFunc(handler.UserHandler(s.Context)) }
위 코드는 userHandler 함수를 HTTP 서비스로 등록하며, API 파일에 경로를 정의하여 이 서비스에 액세스할 수 있습니다.
3. 템플릿 만들기
goctl create api를 통해 새로운 go-zero API를 생성할 수 있으며, 이는 일부 초기화 구성이 포함된 폴더를 자동으로 생성합니다. goctl의 요구 사항에 따라 자체 컨트롤러와 서비스를 추가할 수 있습니다.
여기에서는 go-zero의 소스 코드를 읽는 방법을 더 잘 배울 수 있는 템플릿 애플리케이션을 만듭니다. 애플리케이션에는 go-zero의 일반적인 기능을 사용하는 방법을 보여주는 CRUD 예제가 포함되어 있습니다.
1. 템플릿 생성
goctl을 사용하여 go-zero의 소스 코드를 더 잘 학습할 수 있는 템플릿 애플리케이션을 생성할 수 있습니다.
$ goctl api template -o app.go
위 명령은 템플릿 애플리케이션의 모든 소스 코드가 포함된 app.go라는 파일을 생성합니다.
2. 데이터 액세스 구현
데이터 저장에는 MySQL이 사용된다고 가정합니다. 시작하기 전에 MySQL을 설치하고 구성해야 합니다. 이를 기반으로 go-zero에서 제공하는 go-sql을 사용하여 데이터베이스 액세스 계층을 구축할 수 있습니다.
구체적으로 goctl을 사용하여 데이터 액세스 계층 코드를 생성할 수 있습니다.
$ goctl model mysql datasource "root:123456@tcp(127.0.0.1:3306)/test" -table user -dir .
위 명령은 데이터 액세스를 위한 사용자 데이터 모델이 포함된 userModel.go 파일을 생성합니다.
3. 비즈니스 로직 구현
다음으로 비즈니스 로직을 구현하고 이를 데이터 액세스 계층과 함께 사용해야 합니다. 특히, 사용자 관리를 위한 비즈니스 로직이 포함된 userLogic.go라는 파일을 생성할 수 있습니다.
userLogic.go 코드는 다음과 같습니다.
package logic import ( "context" "github.com/tal-tech/go-zero/core/logx" "github.com/tal-tech/go-zero/core/stores/sqlx" "blog/service/user/model" "blog/service/user/api/internal/svc" "blog/service/user/api/internal/types" ) type UserLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) UserLogic { return UserLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *UserLogic) GetUser(req types.GetUserRequest) (*types.GetUserResponse, error) { //Todo }
위 코드에서 우리는 sqlx, Stores 및 logx 패키지를 소개했습니다. 여기서 sqlx는 go-zero 프레임워크의 일부이며 특별히 데이터베이스 작업에 사용됩니다. Stores는 Go-Zero 프레임워크의 데이터 저장 계층입니다. logx 패키지는 go-zero 프레임워크에서 제공하는 로깅 라이브러리로, 중요한 이벤트를 기록하는 데 도움이 될 수 있습니다.
4. ETCD 등 통합
go-zero 프레임워크를 사용하면 ETCD, Redis, ZooKeeper 등과 같이 일반적으로 사용되는 일부 도구 및 서비스를 쉽게 통합할 수 있습니다. 구체적으로, 코드에서 go-zero가 제공하는 관련 라이브러리를 가져오고 구성 파일에서 관련 정보를 구성할 수 있습니다.
일반적으로 사용되는 통합 방법은 다음과 같습니다.
1. ETCD 통합
먼저 구성 파일에 다음 정보를 추가합니다.
[etcd] host = "localhost:2379"
그런 다음 ETCD를 사용하려는 코드에서 clientv3.New 함수를 사용합니다. 새로운 etcd 클라이언트를 생성합니다.
import ( "go.etcd.io/etcd/clientv3" ) client, err := clientv3.New(clientv3.Config{ Endpoints: []string{"localhost:2379"}, DialTimeout: 5 * time.Second, }) if err != nil { panic(err) }
위 코드는 localhost:2379를 ETCD 서버의 주소로 사용하는 client라는 ETCD 클라이언트를 생성합니다.
2. Redis 통합
Redis를 사용하려면 구성 파일에 다음 정보를 추가해야 합니다.
[redis] host = "localhost:6379" password = "" db = 0
그런 다음 Redis를 사용하려는 코드에서 redis.NewClient 함수를 사용하여 새로운 Redis를 생성합니다. 고객.
import ( "github.com/go-redis/redis" ) client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 0, // use default DB })
위 코드는 localhost:6379를 Redis 서버 주소로 사용하고 비밀번호는 사용하지 않으며 기본 DB를 사용하는 새로운 Redis 클라이언트를 생성합니다.
3. ZooKeeper 통합
要使用ZooKeeper,我们需要在配置文件中添加以下信息:
[zookeeper] host = "localhost:2181"
然后,在要使用ZooKeeper的代码中,使用zk.Connect函数创建一个新的ZooKeeper客户端。
import ( "github.com/samuel/go-zookeeper/zk" "time" ) conn, _, err := zk.Connect([]string{"localhost:2181"}, time.Second*5) if err != nil { panic(err) }
上述代码将创建一个名为conn的ZooKeeper客户端,它将使用localhost:2181作为ZooKeeper服务器的地址。
五、总结
到目前为止,我们已经深入了解了go-zero框架,并学到了如何使用它来构建高性能服务。
总结一下,要使用go-zero,请先安装和配置相关环境,然后创建一个新的项目,通过goctl命令行工具自动生成模板代码和配置文件。
接着,可以使用go-zero提供的各种功能和服务来逐步完善和扩展我们的应用程序,如集成数据库、ETCD、Redis等。
将go-zero框架用于您的下一个项目吧,它将使您能够构建出更加灵活、高效和可靠的服务!
위 내용은 입문부터 숙련까지: 제로 제로 프레임워크 마스터하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











키미: 단 한 문장이면 단 10초만에 PPT가 완성됩니다. PPT가 너무 짜증나네요! 회의를 하려면 PPT가 있어야 하고, 주간 보고서를 작성하려면 PPT가 있어야 하며, 누군가를 부정행위를 했다고 비난하려면 PPT를 보내야 합니다. 대학은 PPT 전공을 공부하는 것과 비슷합니다. 수업 시간에 PPT를 보고 수업 후에 PPT를 하는 거죠. 아마도 데니스 오스틴이 37년 전 PPT를 발명했을 때, 언젠가 PPT가 이렇게 널리 보급될 것이라고는 예상하지 못했을 것입니다. 우리가 PPT를 만들면서 힘들었던 경험을 이야기하면 눈물이 납니다. "20페이지가 넘는 PPT를 만드는 데 3개월이 걸렸고, 수십 번 수정했어요. PPT를 보면 토할 것 같았어요. 한창 때는 하루에 다섯 장씩 했는데, 숨소리까지 냈어요." PPT였어요." 즉석 회의가 있으면 해야죠.

베이징 시간으로 6월 20일 이른 아침, 시애틀에서 열린 최고의 국제 컴퓨터 비전 컨퍼런스인 CVPR2024가 최우수 논문 및 기타 수상작을 공식 발표했습니다. 올해는 우수논문 2편, 최우수 학생논문 2편 등 총 10편의 논문이 수상하였습니다. 컴퓨터 비전(CV) 분야 최고 학회는 매년 수많은 연구기관과 대학이 모여드는 CVPR이다. 통계에 따르면 올해 총 1만1532편의 논문이 제출돼 2719편이 채택돼 합격률 23.6%를 기록했다. Georgia Institute of Technology의 CVPR2024 데이터 통계 분석에 따르면 연구 주제 관점에서 가장 많은 논문이 이미지 및 비디오 합성 및 생성입니다(Imageandvideosyn

우리는 LLM이 대규모 데이터를 사용하여 대규모 컴퓨터 클러스터에서 훈련된다는 것을 알고 있습니다. 이 사이트는 LLM 훈련 프로세스를 지원하고 개선하는 데 사용되는 다양한 방법과 기술을 소개합니다. 오늘 우리가 공유하고 싶은 것은 기본 기술에 대해 심층적으로 살펴보고 운영 체제 없이도 수많은 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 방법을 소개하는 기사입니다. 이 기사는 기계가 생각하는 방식을 이해하여 일반 지능을 달성하기 위해 노력하는 AI 스타트업 Imbue에서 가져온 것입니다. 물론 운영 체제가 없는 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 것은 탐색과 시행착오로 가득 찬 쉬운 과정이 아니지만 Imbue는 마침내 700억 개의 매개변수를 사용하여 LLM을 성공적으로 교육했습니다. 과정이 쌓이다

Machine Power Report 편집자: Yang Wen 대형 모델과 AIGC로 대표되는 인공지능의 물결은 우리가 살고 일하는 방식을 조용히 변화시키고 있지만 대부분의 사람들은 여전히 그것을 어떻게 사용하는지 모릅니다. 이에 직관적이고 흥미롭고 간결한 인공지능 활용 사례를 통해 AI 활용 방법을 자세히 소개하고 모두의 사고를 자극하고자 'AI in Use' 칼럼을 론칭하게 됐다. 또한 독자들이 혁신적인 실제 사용 사례를 제출하는 것을 환영합니다. 영상 링크 : https://mp.weixin.qq.com/s/2hX_i7li3RqdE4u016yGhQ 최근 샤오홍슈에서는 혼자 사는 소녀의 인생 브이로그가 인기를 끌었습니다. 몇 가지 치유의 말과 함께 일러스트레이션 스타일의 애니메이션을 단 며칠 만에 쉽게 익힐 수 있습니다.

검색 증강 생성(RAG)은 검색을 사용하여 언어 모델을 향상시키는 기술입니다. 특히, 언어 모델은 답변을 생성하기 전에 광범위한 문서 데이터베이스에서 관련 정보를 검색한 다음 이 정보를 사용하여 생성 프로세스를 안내합니다. 이 기술은 콘텐츠의 정확성과 관련성을 크게 향상시키고 환각 문제를 효과적으로 완화하며 지식 업데이트 속도를 높이고 콘텐츠 생성 추적성을 향상시킬 수 있습니다. RAG는 의심할 여지 없이 인공 지능 연구에서 가장 흥미로운 분야 중 하나입니다. RAG에 대한 자세한 내용은 본 사이트의 칼럼 기사 "대형 모델의 단점을 보완하는 데 특화된 RAG의 새로운 발전은 무엇인가?"를 참조하시기 바랍니다. 이 리뷰는 이를 명확하게 설명합니다." 그러나 RAG는 완벽하지 않으며 사용자는 이를 사용할 때 몇 가지 "고통"에 직면하는 경우가 많습니다. 최근 NVIDIA의 고급 생성 AI 솔루션

Java 프레임워크에 대한 상용 지원의 비용/성능 평가에는 다음 단계가 포함됩니다. 필요한 보증 수준과 SLA(서비스 수준 계약) 보장을 결정합니다. 연구지원팀의 경험과 전문성. 업그레이드, 문제 해결, 성능 최적화와 같은 추가 서비스를 고려하십시오. 위험 완화 및 효율성 향상을 기준으로 비즈니스 지원 비용을 평가합니다.

소라가 나오지 않자 OpenAI의 반대자들은 무기를 사용해 거리를 파괴했습니다. 소라를 사용할 수 있게 공개하지 않으면 정말 도난당할 것입니다! 오늘 샌프란시스코 스타트업 LumaAI는 트럼프 카드를 사용하여 차세대 AI 비디오 생성 모델 DreamMachine을 출시했습니다. 무료이며 누구나 사용할 수 있습니다. 보도에 따르면 이 모델은 간단한 텍스트 설명을 기반으로 소라에 버금가는 효과로 고품질의 사실적인 동영상을 생성할 수 있다고 합니다. 소식이 알려지자마자 수많은 사용자들이 이를 시험해 보기 위해 공식 홈페이지로 몰려들었습니다. 관계자들은 이 모델이 단 2분 만에 120프레임의 영상을 생성할 수 있다고 주장하고 있지만, 방문 급증으로 인해 공식 홈페이지에서 많은 이용자들이 몇 시간씩 기다려 오고 있다. Luma의 제품 성장 책임자인 BarkleyDai는 Discord에 대해 언급해야 했습니다.

7월 24일, Kuaishou 비디오 세대 대형 모델 Keling AI는 기본 모델이 다시 업그레이드되었으며 내부 테스트를 위해 완전히 공개되었다고 발표했습니다. Kuaishou는 더 많은 사용자가 Keling AI를 사용할 수 있도록 하고 창작자의 다양한 사용 요구 사항을 더 잘 충족시키기 위해 앞으로는 완전히 공개된 내부 테스트를 기반으로 다양한 카테고리에 대한 멤버십 시스템도 공식적으로 출시할 것이라고 밝혔습니다. 회원에게 해당하는 독점적인 기능 서비스를 제공합니다. 동시에 Keling AI의 기본 모델도 다시 업그레이드되어 사용자 경험을 더욱 향상시켰습니다. 사용자 경험을 더욱 향상시키기 위해 기본 모델 효과가 업그레이드되었습니다. Keling AI는 출시된 지 한 달이 넘었고 이번 멤버십 시스템 출시로 여러 번 업그레이드되고 반복되었습니다. 다시 변신을 거쳤습니다. 첫 번째는 업그레이드된 기본 모델을 통해 화질이 대폭 향상됐다는 점이다.
