Golang マイクロサービス開発ではどのようなコア ビジネス機能を実現できますか?
クラウド コンピューティングとコンテナ テクノロジの急速な発展に伴い、マイクロサービス アーキテクチャは現代のアプリケーション開発における主流のトレンドの 1 つになりました。 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 中国語 Web サイトの他の関連記事を参照してください。