Golang 마이크로서비스 개발로 달성할 수 있는 핵심 비즈니스 기능은 무엇인가요?
클라우드 컴퓨팅과 컨테이너 기술의 급속한 발전으로 마이크로서비스 아키텍처는 현대 애플리케이션 개발의 주요 트렌드 중 하나가 되었습니다. 효율적이고 안정적인 동시 프로그래밍 언어인 Golang은 마이크로서비스 구축을 위한 이상적인 선택이 되었습니다.
Golang 마이크로서비스 개발에서는 다음과 같은 핵심 비즈니스 기능을 달성할 수 있습니다.
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/hello", helloHandler) log.Fatal(http.ListenAndServe(":8080", nil)) } func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }
package main import ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { log.Fatal(err) } defer db.Close() rows, err := db.Query("SELECT * FROM users") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id int var name string err = rows.Scan(&id, &name) if err != nil { log.Fatal(err) } fmt.Println(id, name) } }
package main import ( "log" "github.com/streadway/amqp" ) func main() { conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/") if err != nil { log.Fatal(err) } defer conn.Close() ch, err := conn.Channel() if err != nil { log.Fatal(err) } defer ch.Close() q, err := ch.QueueDeclare( "hello", false, false, false, false, nil, ) if err != nil { log.Fatal(err) } err = ch.Publish( "", q.Name, false, false, amqp.Publishing{ ContentType: "text/plain", Body: []byte("Hello, RabbitMQ!"), }, ) if err != nil { log.Fatal(err) } }
package main import ( "fmt" "log" "net/http" "github.com/dgrijalva/jwt-go" ) var jwtKey = []byte("secret_key") type Claims struct { Username string `json:"username"` jwt.StandardClaims } func main() { http.HandleFunc("/login", loginHandler) http.HandleFunc("/protected", authMiddleware(protectedHandler)) log.Fatal(http.ListenAndServe(":8080", nil)) } func loginHandler(w http.ResponseWriter, r *http.Request) { username := r.FormValue("username") password := r.FormValue("password") if username == "admin" && password == "admin" { token := jwt.NewWithClaims(jwt.SigningMethodHS256, Claims{ Username: username, }) tokenString, err := token.SignedString(jwtKey) if err != nil { log.Fatal(err) } fmt.Fprintln(w, tokenString) } else { w.WriteHeader(http.StatusUnauthorized) fmt.Fprintln(w, "Username or password incorrect") } } func protectedHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Protected resource") } func authMiddleware(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { tokenString := r.Header.Get("Authorization") token, err := jwt.ParseWithClaims(tokenString, &Claims{}, func(token *jwt.Token) (interface{}, error) { return jwtKey, nil }) if claims, ok := token.Claims.(*Claims); ok && token.Valid { fmt.Println(claims.Username) next(w, r) } else { w.WriteHeader(http.StatusUnauthorized) fmt.Fprintln(w, "Unauthorized") } } }
Golang을 사용하여 마이크로서비스를 개발하면 RESTful API 인터페이스 개발, 데이터베이스 통합, 메시지 대기열 및 비동기 작업 처리, 인증 및 권한 부여와 같은 핵심 비즈니스 기능을 구현할 수 있습니다. . Golang의 단순성, 효율성 및 동시성 기능을 통해 안정적인 마이크로서비스를 보다 쉽고 효율적으로 구축할 수 있습니다.
위 내용은 Golang 마이크로서비스 개발로 어떤 핵심 비즈니스 기능을 달성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!