Tema ini menjelaskan cara menggunakan Alibaba Cloud Toolkit untuk menerapkan aplikasi ke Serverless App Engine (SAE) dan memantau aplikasi tersebut.
Prasyarat
SAE telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktivasi SAE.
Maven telah diunduh dan variabel lingkungan telah dikonfigurasi.
Java Development Kit (JDK) 1.8 atau yang lebih baru telah diunduh dan diinstal.
IntelliJ IDEA 2018.3 atau yang lebih baru telah diunduh dan diinstal.
CatatanServer resmi dari plugin JetBrains ditempatkan di luar Tiongkok. Jika Anda tidak dapat mengunduh IntelliJ IDEA karena respons jaringan yang lambat, peroleh paket instalasi offline untuk IntelliJ IDEA dan instal. Untuk informasi lebih lanjut, lihat Hubungi kami.
Alibaba Cloud Toolkit telah diinstal dan dikonfigurasi di IntelliJ IDEA.
Langkah 1: Buat aplikasi demo di SAE
SAE memungkinkan Anda menerapkan aplikasi dengan menggunakan paket kode dan gambar. Untuk informasi lebih lanjut, lihat Terapkan Aplikasi Java ke SAE 1.0.
Dalam contoh ini, paket JAR digunakan untuk membuat aplikasi penyedia dan aplikasi konsumen di SAE. Untuk informasi lebih lanjut, lihat Terapkan Aplikasi Mikro Layanan Menggunakan Paket JAR di Konsol SAE.
Langkah 2: Buat penyedia
Buat proyek aplikasi penyedia di lingkungan lokal, tambahkan dependensi, aktifkan pendaftaran dan penemuan layanan, lalu tentukan server Nacos sebagai registri layanan.
Buat proyek Maven bernama
nacos-service-provider.Tambahkan dependensi ke file
pom.xml.Kode sampel berikut memberikan contoh tentang cara menambahkan dependensi Spring Boot 2.1.4.RELEASE dan Spring Cloud Greenwich.SR1:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>Dalam contoh ini, Spring Cloud Greenwich digunakan. Versi Spring Cloud Alibaba untuk Spring Cloud Greenwich adalah 2.1.1.RELEASE.
Versi Spring Cloud Alibaba untuk Spring Cloud Finchley adalah 2.0.1.RELEASE.
Versi Spring Cloud Alibaba untuk Spring Cloud Edgware adalah 1.5.1.RELEASE.
CatatanSpring Cloud Edgware sudah tidak digunakan lagi. Kami sarankan Anda tidak menggunakan Spring Cloud Edgware untuk mengembangkan aplikasi.
Di
src\main\java, buat package bernama com.aliware.edas.Di dalam paket com.aliware.edas, buat kelas startup bernama
ProviderApplicationuntuk penyedia, dan tambahkan kode sampel berikut:Anotasi
@EnableDiscoveryClientdigunakan untuk mengaktifkan fitur pendaftaran dan penemuan layanan untuk aplikasi penyedia.package com.aliware.edas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } }Di dalam paket
com.aliware.edas, buatEchoController, dan tentukan/echo/{String}sebagai pemetaan URL dan GET sebagai metode HTTP. Dapatkan parameter metode dari jalur URL, dan gema parameter yang diterima.package com.aliware.edas; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class EchoController { @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET) public String echo(@PathVariable String string) { return string; } }Di
src\main\resources, buat file bernama application.properties dan tambahkan konfigurasi berikut ke application.properties untuk menentukan alamat IP server Nacos.spring.application.name=service-provider server.port=18081 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848Dalam konfigurasi sebelumnya,
127.0.0.1menunjukkan alamat IP server Nacos Anda. Jika server Nacos Anda ditempatkan di server lain, Anda harus mengubah nilainya menjadi alamat IP server tersebut.CatatanJika registri layanan Anda adalah registri layanan mandiri, ganti
127.0.0.1dengan alamat registri layanan mandiri.Verifikasi hasilnya.
Jalankan fungsi
maindariProviderApplicationdi proyeknacos-service-provideruntuk memulai aplikasi penyedia.Masuk ke konsol Nacos Server lokal di
http://127.0.0.1:8848/nacos. Nama pengguna dan kata sandi default yang dapat digunakan untuk masuk ke konsol Nacos Server adalah nacos.Di panel navigasi sisi kiri, pilih .
Anda dapat melihat service-provider dalam daftar layanan. Anda juga dapat memeriksa detail layanan tersebut.
Langkah 3: Buat konsumen
Bagian ini menjelaskan fitur pendaftaran layanan, dan bagaimana Nacos Server bekerja dengan RestTemplate dan FeignClient.
Buat proyek Maven bernama
nacos-service-consumer.Tambahkan dependensi ke file
pom.xml.<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>Di
src\main\java, buat package bernama com.aliware.edas.Di dalam paket
com.aliware.edas, konfigurasikan RestTemplate dan FeignClient.Di dalam paket
com.aliware.edas, buat kelas antarmuka bernamaEchoService, tambahkan anotasi@FeignClient, lalu tentukan URL HTTP dan metode HTTP.package com.aliware.edas; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @FeignClient(name = "service-provider") public interface EchoService { @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET) String echo(@PathVariable("str") String str); }Di dalam paket
com.aliware.edas, buat kelas startup bernamaConsumerApplicationdan tambahkan konfigurasi terkait.Tambahkan anotasi
@EnableDiscoveryClientuntuk mengaktifkan pendaftaran dan penemuan layanan.Tambahkan anotasi
@EnableFeignClientsuntuk mengaktifkan FeignClient.Tambahkan anotasi
@LoadBalanceduntuk mengintegrasikan RestTemplate dengan penemuan layanan.
package com.aliware.edas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class ConsumerApplication { @LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }
Di dalam paket
com.aliware.edas, buat kelas bernamaTestControlleruntuk menguji dan memvalidasi fitur penemuan layanan.package com.aliware.edas; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class TestController { @Autowired private RestTemplate restTemplate; @Autowired private EchoService echoService; @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET) public String rest(@PathVariable String str) { return restTemplate.getForObject("http://service-provider/echo/" + str, String.class); } @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET) public String feign(@PathVariable String str) { return echoService.echo(str); } }Di
src\main\resources, buat file bernamaapplication.propertiesdan tambahkan konfigurasi berikut keapplication.propertiesuntuk menentukan alamat IP server Nacos.spring.application.name=service-consumer server.port=18082 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848Dalam konfigurasi sebelumnya,
127.0.0.1menunjukkan alamat IP server Nacos Anda. Jika server Nacos Anda ditempatkan di server lain, Anda harus mengubah nilainya menjadi alamat IP server tersebut.CatatanJika registri layanan Anda adalah registri layanan mandiri, ganti
127.0.0.1:8848dengan alamat registri layanan mandiri.Verifikasi hasilnya.
Jalankan fungsi
maindariConsumerApplicationdi proyeknacos-service-consumeruntuk memulai aplikasi konsumen.Masuk ke konsol Nacos Server lokal di
http://127.0.0.1:8848/nacos. Nama pengguna dan kata sandi default yang dapat digunakan untuk masuk ke konsol Nacos Server adalah nacos.Di panel navigasi sisi kiri, pilih .
Anda dapat melihat service-consumer dalam daftar layanan. Anda juga dapat memeriksa detail layanan tersebut.
Langkah 4: Uji layanan di lingkungan lokal
Gunakan konsumen untuk memanggil penyedia di lingkungan lokal.
Untuk Linux, UNIX, atau macOS, jalankan perintah berikut:
curl http://127.0.0.1:18082/echo-rest/rest-rest curl http://127.0.0.1:18082/echo-feign/feign-restDi Windows, masukkan http://127.0.0.1:18082/echo-rest/rest-rest lalu http://127.0.0.1:18082/echo-feign/feign-rest di bilah alamat browser dan tekan tombol Enter.
Dalam contoh ini, layanan diuji di Windows.

Gambar di atas menunjukkan bahwa penyedia mikro layanan dipanggil oleh konsumen mikro layanan di lingkungan lokal.
Langkah 5: Terapkan aplikasi ke SAE
Setelah Anda mengembangkan aplikasi, Anda harus mengonfigurasi tugas penerapan di Alibaba Cloud Toolkit untuk menerbitkan kode bisnis Anda ke aplikasi yang Anda buat di Langkah 1: Buat Aplikasi Demo di SAE.
Konfigurasikan akun di Alibaba Cloud Toolkit.
Klik ikon Alibaba Cloud Toolkit
dan pilih Preference… dari daftar drop-down. Di panel navigasi sisi kiri halaman Pengaturan, pilih Di halaman Accounts, konfigurasikan parameter Access Key ID dan Access Key Secret, lalu klik OK.
CatatanUntuk mendapatkan Access Key ID dan Access Key Secret, lakukan langkah-langkah berikut:
Di halaman Accounts, klik Get existing AK/SK untuk pergi ke halaman logon Alibaba Cloud lalu masuk ke Alibaba Cloud. Di halaman Manajemen Keamanan, dapatkan Access Key ID dan Access Key Secret.
Konfigurasikan tugas penerapan.
Di IntelliJ IDEA, klik ikon Cloud Toolkit
dan pilih Deploy to SAE dari daftar drop-down.Di halaman Deploy to SAE, konfigurasikan parameter. Setelah Anda mengonfigurasi pengaturan, klik Apply untuk menyimpan pengaturan.
CatatanJika Anda menggunakan registri layanan mandiri, Anda harus mengonfigurasi perintah startup berikut di tab Advanced:
-Dnacos.use.endpoint.parsing.rule=falsedan-Dnacos.use.cloud.namespace.parsing=false.Konfigurasikan pengaturan untuk aplikasi penyedia.
Di bagian Aplikasi, tentukan wilayah, namespace, dan nama aplikasi yang Anda buat di Langkah 1: Buat Aplikasi Demo di SAE.

Konfigurasikan pengaturan untuk aplikasi konsumen.
Di bagian Aplikasi, tentukan wilayah, namespace, dan nama aplikasi yang Anda buat di SAE.

Terapkan aplikasi.
Klik Run untuk menjalankan aplikasi penyedia, lalu jalankan aplikasi konsumen.

Verifikasi hasilnya.
Tautkan instance Server Load Balancer (SLB) ke aplikasi konsumen.
Untuk informasi lebih lanjut, lihat Tautkan Instance SLB ke Aplikasi.

Akses konsumen.
Ajukan permintaan HTTP ke konsumen.
curl http://47.111.XX.XX/echo-feign/feign-restAjukan permintaan HTTP ke konsumen. Konsumen memanggil penyedia.
curl http://47.111.XX.XX/echo-rest/rest-rest

Lihat data panggilan di dasbor Pemantauan Aplikasi terkait.