บัญชี Alibaba Cloud: บทแนะนำการปรับใช้โครงการ Spring Cloud ตามสถาปัตยกรรมไมโครเซอร์วิสดั้งเดิมของ Alibaba Cloud

เมฆ 2026-05-28 阅读 18
1

มีบทช่วยสอนมากมายเกี่ยวกับการปรับใช้ไมโครเซอร์วิสในตลาดซึ่งช่วยให้คุณสร้าง Nginx, Nacos, Sentinel, Zipkin บนเซิร์ฟเวอร์... หลังจากชุดหมัดรวมหน่วยความจำเซิร์ฟเวอร์จะระเบิดและไฟล์การกำหนดค่าต่างๆสามารถฆ่าคนได้ครึ่งหนึ่ง

ในยุคของคลาวด์มันไม่มีประสิทธิภาพเกินไปที่จะเล่นแบบนี้ Alibaba Cloud ได้สร้างฐานบริการขนาดเล็กทั้งหมด (ศูนย์การลงทะเบียนศูนย์การกำหนดค่าเกตเวย์การลดระดับขีดจำกัดปัจจุบัน)

บริการโฮสติ้งพื้นเมืองบนคลาวด์

บทช่วยสอนในวันนี้ไม่ได้พูดถึงทฤษฎีสถาปัตยกรรมที่ซับซ้อนหรือเรื่องไร้สาระเราใช้มาตรฐานโดยตรง

โครงการบริการไมโคร Spring Cloud

ตัวอย่างเช่นนำคุณไปสู่วิธีการต่อสู้จริงที่มีเหตุผลที่สุด

จากสถาปัตยกรรมดั้งเดิมของ Alibaba Cloud (MSE ACK/SAE) การปรับใช้และการเรียกใช้บริการขนาดเล็กจะเสร็จสมบูรณ์ตั้งแต่เริ่มต้น

การออกแบบสถาปัตยกรรมหลัก

ก่อนที่จะเริ่มให้ดูที่โทโพโลยีการปรับใช้บริการไมโครเนทีฟบนคลาวด์ที่เราต้องการบรรลุ:

[คำขอของลูกค้า]

[Alibaba Cloud Native Gateway (MSE)] ── (บริการค้นหาอัตโนมัติ) ──> 【ศูนย์การลงทะเบียนไมโครเซอร์วิส (MSE Nacos)】

││

├────> 【ไมโครเซอร์วิส A (แอพพลิเคชั่นน้ำหนักเบา/SAE)】 <────────────────────────────────────────────────────────────────────────────

││

└ ────> 【ไมโครเซอร์วิส B (แอพพลิเคชั่นน้ำหนักเบา/SAE)】 <──────────────────────────────────────────────────────────────────────────────────────

วิธีการดั้งเดิมคือการติดตั้ง Nacos และ Gateway บน ECS ด้วยตัวเองในขณะที่วิธีการดั้งเดิมบนคลาวด์คือการใช้ Alibaba Cloud โดยตรง

ของ

MSE (เครื่องมือไมโครเซอร์วิส)

และ

SAE (โปรแกรมประยุกต์ Serverless)

。ด้วยวิธีนี้คุณไม่จำเป็นต้องรักษาชั้นล่างสุดของเซิร์ฟเวอร์แต่ยังสามารถปรับขนาดได้อย่างยืดหยุ่นในไม่กี่วินาที

ขั้นตอนที่1: การเปลี่ยนแปลงรหัสไมโครเซอร์วิส (ปรับให้เข้ากับคลาวด์เนทีฟ)

ในการย้ายโครงการ Spring Cloud ในเครื่องไปยังระบบคลาวด์ก่อนอื่นคุณต้องแก้ไขไฟล์คอนฟิกูเรชันเพื่อเชื่อมต่อกับ Nacos ที่โฮสต์ของ Alibaba Cloud

1.แนะนำการพึ่งพา

ตรวจสอบให้แน่ใจว่าไฟล์

Pom.xml

แนะนำมาตรฐาน Spring Cloud Alibaba พึ่งพา:

XML

<Dependency>

<GroupId> com.alibaba.cloud</groupId>

<ArtifactId> spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</Dependency>

<Dependency>

<GroupId> com.alibaba.cloud</groupId>

<ArtifactId> spring-cloud-starter-alibaba-nacos-config</artifactId>

</Dependency>

2. แก้ไขไฟล์กำหนดค่า

ในพื้นที่เรามักจะเขียนที่อยู่ Nacos เป็น

Localhost: 8848

。แต่ในการปรับใช้คลาวด์เนทีฟเรา

อย่าเขียนเส้นทาง IP ใดๆในรหัส

。ใช้ตัวแปรสภาพแวดล้อมโดยตรงเพื่อฉีดแบบไดนามิก:

YAML

# Bootstrap.yml หรือ application.yml

Spring:

Application:

ชื่อ: order-service # ชื่อบริการของคุณ

Cloud:

Nacos:

Discovery:

Server-addr: ${NACOS_SERVER_ADDR:localhost:8848} # ลำดับความสำคัญอ่านตัวแปรสภาพแวดล้อม

Namespace: ${NACOS_NAMESPACE:public}

Config:

Server-addr: ${NACOS_SERVER_ADDR:localhost:8848}

File-extension: yaml

💡ทำไมต้องเขียนแบบนี้? ด้วยการเขียน $ {ชื่อตัวแปร: ค่าเริ่มต้น} หากไม่มีการส่งผ่านตัวแปรสภาพแวดล้อมในระหว่างการพัฒนาในเครื่องเรายังคงใช้ localhost และในระบบคลาวด์แพลตฟอร์มคลาวด์จะช่วยเราฉีดที่อยู่คลัสเตอร์ Alibaba Cloud จริงโดยอัตโนมัติเพื่อให้ได้รหัส "ชุดของการคอมไพล์เรียกใช้ทุกที่".

ขั้นตอนที่2: เปิดและกำหนดค่า MSE Nacos ใน Alibaba Cloud (1นาที)

ตอนนี้เราไปที่ Alibaba Cloud เพื่อรับ "สมอง" ของศูนย์การลงทะเบียนไมโครเซอร์วิสและศูนย์กำหนดค่า

ลงชื่อเข้าใช้คอนโซล Alibaba Cloud ค้นหาและป้อน "Micro Service Engine MSE"

คลิก "ตัวอย่างการจัดการ" $ \ rightarrow $ "สร้างอินสแตนซ์" และเลือก "Nacos"

การเลือกเวอร์ชัน: เลือกเวอร์ชันเสถียรล่าสุด (เช่น Nacos 2.x) ข้อกำหนดคลัสเตอร์สามารถเลือกได้ตามปริมาณธุรกิจการทดสอบส่วนบุคคลหรือโครงการขนาดเล็กสามารถเลือกประเภทการทดสอบการพัฒนา (โหนดเดียว) และสภาพแวดล้อมการผลิตต้องเป็นประเภทมืออาชีพ (3โหนดที่มีความพร้อมสูง)

หลังจากสร้างเสร็จแล้วให้ไปที่หน้ารายละเอียดของอินสแตนซ์คุณจะเห็นที่อยู่เครือข่ายหลักสองที่อยู่: ที่อยู่อินทราเน็ต (คล้ายกับ mse-xxxx-nacos-ctl.tbls.com:8848) ที่อยู่เครือข่ายสาธารณะ (หากเป็นการดีบักเครือข่ายสาธารณะจำเป็นต้องเปิดใช้งานสภาพแวดล้อมการผลิตขอแนะนำให้ใช้อินทราเน็ตเพื่อความปลอดภัยเท่านั้น)

บันทึกที่อยู่อินทราเน็ตนี้ซึ่งเป็นตัวแปรที่ป้อมปราการถัดไปของเราจะมอบให้กับไมโครเซอร์วิส

ขั้นตอนที่3: ใช้ SAE เพื่อปรับใช้ส่วนประกอบไมโครเซอร์วิส (4นาที)

มีส่วนประกอบของไมโครเซอร์วิสมากมายหากคุณใช้ K8s(ACK) แบบเดิมในการปรับใช้คุณต้องเขียนไฟล์ YAML จำนวนมากและเข้าใจแนวคิดเช่น Pod และ Deployment

ขอแนะนำให้ใช้งานง่ายขึ้น

SAE (โปรแกรมประยุกต์ Serverless)

ช่วยให้คุณไม่ต้องเจ็บปวดจากการรักษาคลัสเตอร์ K8s คุณสามารถเรียกใช้โดยการอัปโหลดแพ็คเกจ Jar หรือมิเรอร์ได้โดยตรง

1.บรรจุรายการ

ดำเนินการคำสั่ง Maven ในไดเร็กทอรีรากของโครงการในเครื่องเพื่อบรรจุไมโครเซอร์วิสลงในแพ็คเกจ Jar มาตรฐาน:

แบช

Mvn clean package -DskipTests

รับแพ็ค

Order-service.jar

2.สร้างแอปพลิเคชันใน SAE

เข้าสู่คอนโซลของ Alibaba Cloud "Serverless Application Engine SAE"

คลิกที่ "รายการแอป" $ \ rightarrow $ "สร้างแอป"

วิธีการปรับใช้แอปพลิเคชัน: เลือก "การปรับใช้แพ็กเกจ JAR" (หากคุณคุ้นเคยกับ Docker คุณสามารถเลือกการปรับใช้แบบมิเรอร์ได้เช่นกัน)

สภาพแวดล้อมรันไทม์: เลือกรุ่น JDK ที่สอดคล้องกัน (เช่น Java 8หรือ Java 11/17)

อัปโหลด order-service.jar ที่คุณเพิ่งแพ็ค

3.การฉีดตัวแปรสภาพแวดล้อม (ขั้นตอนหลัก)

ในหน้าการปรับใช้

"การตั้งค่าขั้นสูง"

ค้นหา

"ตัวแปรสิ่งแวดล้อม"

ตัวเลือกจำช่องว่างที่เราทิ้งไว้ในโค้ดขั้นตอนแรก

บิต? เพิ่มที่นี่:

คีย์ (Key)

มูลค่า (Value)

NACOS_SERVER_ADDR

กรอกที่อยู่อินทราเน็ต MSE Nacos ที่คัดลอกในขั้นตอนที่สอง

NACOS_NAMESPACE

หากคุณสร้างเนมสเปซใหม่ใน Nacos ให้กรอก ID หากไม่มีให้กรอกข้อมูลสาธารณะ

4.เปิดตัวแอป

คลิกยืนยันการสร้างและปรับใช้ SAE จะกำหนดเวลาทรัพยากรคอมพิวเตอร์ให้คุณโดยอัตโนมัติในพื้นหลังดึงคอนเทนเนอร์ขึ้นและเรียกใช้แพ็คเกจ Jar รอ1 ~ ใน2นาทีฉันเห็นว่าสถานะกลายเป็น "กำลังดำเนินการ" ซึ่งแสดงว่าบริการทำงานได้สำเร็จในระบบคลาวด์

คุณสามารถกลับเข้าสู่ระบบ

คอนโซล MSE Nacos

, รีเฟรชในรายการ "การจัดการบริการ" คุณจะเห็น

Order-service

ลงทะเบียนเรียบร้อยแล้ว!

ขั้นตอนที่4: กำหนดค่าเกตเวย์เนทีฟบนคลาวด์เพื่อเข้าถึงภายนอก (2นาที)

ไมโครเซอร์วิสทำงานบนอินทราเน็ตแต่ผู้ใช้เครือข่ายภายนอกจะเข้าถึงได้อย่างไร? เราต้องการพอร์ทัลแบบรวมคือไมโครเซอร์วิสเกตเวย์ Alibaba Cloud MSE มี "เกตเวย์เนทีฟบนคลาวด์" ในตัวซึ่งแทนที่ Spring Cloud Gateway แบบเดิมได้อย่างสมบูรณ์แบบ

เข้าสู่คอนโซล MSE $ \ rightarrow $ Cloud Native Gateway $ \ rightarrow $ รายการอินสแตนซ์เกตเวย์คลิกสร้าง

เชื่อมโยงตัวอย่าง MSE Nacos ที่คุณเพิ่งสร้างขึ้น

หลังจากสร้างเกตเวย์สำเร็จแล้วให้ไปที่หน้ารายละเอียดเกตเวย์และคลิก "แหล่งบริการ" $ \ rightarrow $ "เพิ่มแหล่งบริการ" ทางด้านซ้ายประเภทแหล่งที่มาเลือก "MSE Nacos" และตรวจสอบอินสแตนซ์ Nacos ของคุณ

คลิก "การกำหนดเส้นทาง" ทางด้านซ้าย $ \ rightarrow $ "สร้างเส้นทาง": ชื่อเส้นทาง: เช่น order-route เส้นทางการจับคู่: ตัวอย่างเช่นอินพุต/order/ บริการเป้าหมาย: เลือกบริการออร์เดอร์ที่คุณลงทะเบียนใน Nacos โดยตรงในเมนูแบบเลื่อนลง

คลิกบันทึกและเผยแพร่

ณจุดนี้ให้เข้าถึงเส้นทางการเพิ่ม IP สาธารณะที่ให้บริการโดยเกตเวย์ดั้งเดิมบนคลาวด์ (เช่น https:// Gateway IP/order/create)

เกตเวย์จะรับรู้โหนดไมโครเซอร์วิสใน Nacos โดยอัตโนมัติและส่งต่อคำขออย่างสมบูรณ์แบบ

คู่มือการต่อสู้จริงเพื่อหลีกเลี่ยงหลุมและการปรับแต่งขั้นสูง

หน้าจอสีขาว/ไม่สามารถลงทะเบียน? ตรวจสอบกลุ่มความปลอดภัยเครือข่ายก่อน! แอปพลิเคชัน MSE Nacos และ SAE ต้องอยู่ภายใต้ VPC เดียวกัน (Virtual Private Cloud) และสวิตช์เดียวกันและสามารถสื่อสารผ่านอินทราเน็ตได้หากคุณพบว่าไมโครเซอร์วิสใน SAE รายงานข้อผิดพลาดอย่างบ้าคลั่งว่า "เชื่อมต่อกับ Nacos หมดเวลา" ให้ตรวจสอบแอตทริบิวต์ VPC ของผลิตภัณฑ์ทั้งสองทันทีว่าสอดคล้องกันหรือไม่

ไมโครเซอร์วิสปัญหาออฟไลน์ที่หรูหราไมโครเซอร์วิสกลัวมากที่สุดที่จะทำให้ผู้ใช้ที่กำลังเยี่ยมชมรายงานข้อผิดพลาดเมื่อมีการเผยแพร่เวอร์ชันใหม่ Alibaba Cloud SAE มาพร้อมกับฟังก์ชันออฟไลน์ที่หรูหรา (ออฟไลน์แบบไม่สูญเสีย) เดิม

เหตุผล: ก่อนที่ไมโครเซอร์วิสจะถูกทำลาย SAE จะส่งสัญญาณออกจากระบบไปยัง MSE Nacos ในเชิงรุกเพื่อไม่ให้เกตเวย์ถ่ายโอนการรับส่งข้อมูลใหม่อีกต่อไปและปิดคอนเทนเนอร์หลังจากประมวลผลคำขอเก่าแล้ววิธีใช้: ในการตั้งค่าขั้นสูงของแอปพลิเคชัน SAE ให้เปิดสวิตช์ "Micro Service Lossless Offline" โดยไม่ต้องแก้ไขโค้ดเลย

หน่วยความจำล้น (OOM) รายงานข้อผิดพลาดมือใหม่หลายคนสับสนหน่วยความจำ JVM กับหน่วยความจำระบบหากคุณซื้ออินสแตนซ์ข้อมูลจำเพาะ1คอร์2G ใน SAE อย่าเขียน-Xmx2g ในพารามิเตอร์ JVM เนื่องจากระบบเองต้องใช้หน่วยความจำในการทำงานกฎทอง: หน่วยความจำฮีปสูงสุดของ JVM (-Xmx) ควรตั้งค่าเป็น60% ของข้อกำหนดอินสแตนซ์ ~ ประมาณ70% ตัวอย่างเช่นตัวอย่างข้อกำหนด2G พารามิเตอร์ JVM แนะนำให้กำหนดค่าเป็น-Xmx1300m

ยินดีด้วย! ณจุดนี้ระบบบริการไมโครเนทีฟบนคลาวด์ที่มีความพร้อมใช้งานสูงซึ่งสามารถปรับขนาดได้โดยอัตโนมัติและยืดหยุ่นได้ทำงานอย่างสมบูรณ์บอกลาการทำงานและการบำรุงรักษามิดเดิลแวร์ที่ยุ่งยากคุณสามารถทุ่มเทพลังทั้งหมดให้กับการเขียนโค้ดธุรกิจ

1
← 返回新闻中心