"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो वर्कस्पेस के साथ गोलांग माइक्रोसर्विस मॉड्यूलर आर्किटेक्चर

गो वर्कस्पेस के साथ गोलांग माइक्रोसर्विस मॉड्यूलर आर्किटेक्चर

2024-11-08 को प्रकाशित
ब्राउज़ करें:728

स्केलेबल कोडबेस इंफ्रास्ट्रक्चर

गोलंग बैकएंड विकास, समवर्ती संचालन में चमकता है और स्केलेबल और परफॉर्मेंट बैकएंड अनुप्रयोगों के निर्माण के लिए एक आदर्श सूट है। गो वर्कस्पेस के साथ इसके माइक्रोसर्विस आर्किटेक्चर के इर्द-गिर्द घूमने वाले पोस्टों की कमी के कारण, जो विभिन्न सेवाओं के माध्यम से मॉड्यूलर कोड साझा करने के लिए एक अविश्वसनीय उपकरण है, मैंने अपना कार्यान्वयन साझा करने का निर्णय लिया।

प्रोजेक्ट सेटअप

Golang microservice modular architecture with go workspace

mkdir docker

touch docker/Dockerfile.authentication

touch docker/Dockerfile.users

mkdir -p services/authentication

mkdir -p services/users

mkdir -p shared/utils

touch docker-compose.yml

शेल कमांड का पालन करने से निम्नलिखित फ़ोल्डर ट्री संरचना उत्पन्न होगी

Golang microservice modular architecture with go workspace

गो कार्यक्षेत्र की स्थापना

प्रोजेक्ट के मूल में, एक साधारण कमांड गो वर्क इनिट का उपयोग करके एक गो वर्कस्पेस बनाएं, इससे गो.वर्क फ़ाइल तैयार होगी

इसके बाद, सभी अलग-अलग गो प्रोजेक्ट्स को इनिशियलाइज़ करें जो निर्भरता बनाए रखने और कोडबेस चलाने में सक्षम होंगे।

cd services/authentication && go mod init github.com/LegationPro/ms/services/authentication

cd ../.. && cd services/users && go mod init github.com/LegationPro/ms/services/users

cd ../.. && cd shared && go mod init github.com/LegationPro/ms/shared

निम्नलिखित कमांड चलाने के बाद, आपका प्रोजेक्ट इस तरह दिखना चाहिए

Golang microservice modular architecture with go workspace

इसके बाद, हम गो वर्कस्पेस को पॉप्युलेट करेंगे और निम्न कमांड चलाकर बताएंगे कि वर्कस्पेस का क्या हिस्सा है

कार्य उपयोग पर जाएं ./services/प्रमाणीकरण ./services/users ./shared

यह go.work फ़ाइल को पॉप्युलेट करेगा

go 1.23.1

use (
    ./services/authentication
    ./services/users
    ./shared
)

डॉकर के साथ इसे स्थापित करना

आइए पहले docker-compose.yml पर चलते हैं।

आपकी docker-compose.yml फ़ाइल इस तरह दिखनी चाहिए

services:
  authentication:
    build:
      context: .
      dockerfile: docker/Dockerfile.authentication
    volumes:
      - ./services/authentication:/app/authentication
      - ./shared:/app/shared
    ports:
      - "8081:8081"

  users:
    build:
      context: .
      dockerfile: docker/Dockerfile.users
    volumes:
      - ./services/users:/app/users
      - ./shared:/app/shared
    ports:
      - "8082:8082"

हम डॉकर-कंपोज़ को निम्नलिखित सेवाओं का उपयोग करने के लिए कहते हैं जो प्रमाणीकरण और उपयोगकर्ता हैं।

हम रूट संदर्भ देते हैं, ताकि हम रूट स्तर पर फ़ाइलों और फ़ोल्डरों तक पहुंच सकें।

डॉकरफ़ाइल स्थान की आपूर्ति करें।

कंटेनर के लिए दिए गए वॉल्यूम को परिभाषित करें और अंत में कंटेनर को चलाने के लिए एक पोर्ट को उजागर करें।

Dockerfiles की स्थापना

डॉकरफ़ाइल को सेट करना बहुत सरल और सीधा है।

हम नवीनतम गोलांग अल्पाइन छवि खींचते हैं, एक कार्यशील निर्देशिका निर्दिष्ट करते हैं, कुछ कोड को चारों ओर ले जाते हैं, इसे गो वर्कस्पेस संरचना के साथ काम करने के लिए समायोजित करते हैं और बस इसे चलाते हैं।

docker/Dockerfile.authentication

# Pull golang image
FROM golang:1.23-alpine

# Switch to /app as the working directory
WORKDIR /app

# Copy the authentication codebase over to our container
COPY ./services/authentication /app/authentication/

# Copy the shared codebase and libraries that are shared across our apps inside the container
COPY ./shared /app/shared

# Initialize go workspace inside of our container
RUN go work init

# Assign different codebases to go workspaces
RUN go work use ./authentication ./shared

# Simply run our service with this simple command
CMD ["go", "run", "./authentication"]

Dockerfile.users

# Pull golang image
FROM golang:1.23-alpine

# Switch to /app as the working directory
WORKDIR /app

# Copy the authentication codebase over to our container
COPY ./services/users /app/users/

# Copy the shared codebase and libraries that are shared across our apps inside the container
COPY ./shared /app/shared

# Initialize go workspace inside of our container
RUN go work init

# Assign different codebases to go workspaces
RUN go work use ./users ./shared

# Simply run our service with this simple command
CMD ["go", "run", "./users"]

हमारा सेवा कोड लिखना

services/authentication/main.go

package main

import (
    "fmt"

    "github.com/LegationPro/ms/shared/utils"
)

func main() {
    fmt.Println(utils.SomeAuthFunc())
}

services/users/main.go

package main

import (
    "fmt"

    "github.com/LegationPro/ms/shared/utils"
)

func main() {
    fmt.Println(utils.SomeUserFunc())
}

shared/utils/utils.go

package utils

func SomeAuthFunc() string {
    return "Some auth func"
}

func SomeUserFunc() string {
    return "Some user func"
}

संरचना अब इस तरह दिखनी चाहिए

Golang microservice modular architecture with go workspace

एप्लिकेशन को डॉकटर कंटेनर के अंदर चलाएँ

docker-compose up --build

यह सुनिश्चित करने के लिए कि सब कुछ काम करता है, आउटपुट निम्नलिखित होना चाहिए:

Golang microservice modular architecture with go workspace

बस, आपके पास पूरी तरह कार्यात्मक गो वर्कस्पेस मॉड्यूलर माइक्रोसर्विस आर्किटेक्चर सेटअप है! ??

स्रोत कोड: https://github.com/LegadationPro/go-microservice-modular-docker-setup

धन्यवाद

मेरे ब्लॉग पोस्ट को पढ़ने के लिए धन्यवाद, मुझे आशा है कि इससे मदद मिलेगी ❤️!

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/legationpro/golang-microservice-modular-architecture-with-go-workspace-44db?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3