Rumah > Java > javaTutorial > teks badan

Amalan terbaik untuk seni bina perkhidmatan mikro dalam pembangunan Java

WBOY
Lepaskan: 2023-09-18 08:55:53
asal
1012 orang telah melayarinya

Amalan terbaik untuk seni bina perkhidmatan mikro dalam pembangunan Java

Amalan Terbaik Seni Bina Perkhidmatan Mikro dalam Pembangunan Java

Dengan perkembangan pesat Internet, seni bina aplikasi monolitik tradisional tidak lagi dapat memenuhi keperluan untuk ketersediaan tinggi, berskala dan lelaran pantas. Sebagai penyelesaian, seni bina perkhidmatan mikro secara beransur-ansur menjadi popular dalam bidang pembangunan perisian. Artikel ini akan memperkenalkan amalan terbaik seni bina perkhidmatan mikro dalam pembangunan Java dan menyediakan contoh kod khusus.

1. Pisahkan domain dan perkhidmatan

Apabila mereka bentuk seni bina perkhidmatan mikro, anda perlu membahagikan sistem kepada domain terlebih dahulu. Bahagikan sistem kepada berbilang perkhidmatan mengikut kawasan perniagaan, dan setiap perkhidmatan bertanggungjawab untuk fungsi perniagaan bebas. Melalui pemisahan, kerumitan sistem dapat dikurangkan, kecekapan pembangunan dan kebolehselenggaraan sistem dapat dipertingkatkan. Contohnya, bahagikan sistem e-dagang kepada perkhidmatan pengguna, perkhidmatan produk, perkhidmatan pesanan, dsb.

Mengambil perkhidmatan pesanan sebagai contoh, kita boleh menggunakan Spring Boot dan Spring Cloud untuk membina perkhidmatan pesanan yang mudah. Mula-mula, cipta projek Spring Boot dan perkenalkan kebergantungan yang berkaitan:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
Salin selepas log masuk

Kemudian, buat kelas entiti pesanan dan lapisan akses data:

@Entity
@Table(name = "orders")
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String orderNumber;
    // ...其他属性和方法
}

@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
    // ...其他方法
}
Salin selepas log masuk

Seterusnya, buat pengawal dan logik perniagaan perkhidmatan pesanan:

@RestController
@RequestMapping("/orders")
public class OrderController {
    private final OrderRepository orderRepository;

    public OrderController(OrderRepository orderRepository) {
        this.orderRepository = orderRepository;
    }

    @PostMapping
    public Order createOrder(@RequestBody Order order) {
        return orderRepository.save(order);
    }

    @GetMapping("/{id}")
    public Order getOrder(@PathVariable Long id) {
        return orderRepository.findById(id)
                            .orElseThrow(() -> new RuntimeException("Order not found"));
    }
}
Salin selepas log masuk

Akhir sekali, konfigurasikan Perkhidmatan pendaftaran dan penemuan:

spring:
  application:
    name: order-service
  cloud:
    discovery:
      register-with-eureka: true
      fetch-registry: true
      service-url:
        defaultZone: http://localhost:8761/eureka

server:
  port: 8081
Salin selepas log masuk

Melalui langkah di atas, kami telah menyelesaikan pembinaan perkhidmatan pesanan ringkas. Anda boleh membuat pesanan dengan menghantar permintaan POST dan mendapatkan maklumat pesanan dengan menghantar permintaan GET.

2. Komunikasi antara perkhidmatan

Dalam seni bina perkhidmatan mikro, komunikasi antara perkhidmatan adalah sangat penting. Amalan biasa ialah menggunakan API RESTful atau baris gilir mesej untuk komunikasi. Berikut mengambil komunikasi menggunakan RESTful API sebagai contoh.

Kami membahagikan perkhidmatan pesanan di atas kepada perkhidmatan pengguna, perkhidmatan produk dan perkhidmatan pesanan, dan mereka menggunakan API RESTful untuk berkomunikasi antara satu sama lain. Perkhidmatan pesanan perlu menghubungi perkhidmatan pengguna dan perkhidmatan produk untuk mendapatkan maklumat pengguna dan produk. Pertama, kita perlu memperkenalkan pelanggan perkhidmatan pengguna dan perkhidmatan produk ke dalam perkhidmatan pesanan.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
Salin selepas log masuk

Kemudian, cipta antara muka pelanggan perkhidmatan pengguna dan perkhidmatan produk:

@FeignClient(name = "user-service")
public interface UserClient {
    @GetMapping("/users/{id}")
    User getUser(@PathVariable Long id);
}

@FeignClient(name = "product-service")
public interface ProductClient {
    @GetMapping("/products/{id}")
    Product getProduct(@PathVariable Long id);
}
Salin selepas log masuk

Akhir sekali, masukkan pelanggan perkhidmatan pengguna dan perkhidmatan produk dalam perkhidmatan pesanan, dan gunakan kaedah yang mereka sediakan untuk memanggil perkhidmatan pengguna dan produk perkhidmatan:

@RestController
@RequestMapping("/orders")
public class OrderController {
    private final OrderRepository orderRepository;
    private final UserClient userClient;
    private final ProductClient productClient;

    public OrderController(OrderRepository orderRepository, 
                           UserClient userClient, 
                           ProductClient productClient) {
        this.orderRepository = orderRepository;
        this.userClient = userClient;
        this.productClient = productClient;
    }

    @PostMapping
    public Order createOrder(@RequestBody Order order) {
        User user = userClient.getUser(order.getUserId());
        Product product = productClient.getProduct(order.getProductId());

        // ...处理订单逻辑
        return orderRepository.save(order);
    }

    // ...其他方法
}
Salin selepas log masuk

Melalui konfigurasi di atas, kami boleh menghubungi perkhidmatan pengguna dan perkhidmatan produk dalam perkhidmatan pesanan untuk mencapai komunikasi antara perkhidmatan.

Ringkasan

Amalan terbaik seni bina perkhidmatan mikro dalam pembangunan Java memerlukan pemisahan domain dan pemisahan perkhidmatan, dan menggunakan kaedah komunikasi yang sesuai untuk mencapai komunikasi tak segerak antara perkhidmatan. Artikel ini menggunakan pembangunan Java sebagai contoh untuk memperkenalkan amalan terbaik seni bina perkhidmatan mikro dan menyediakan contoh kod khusus. Sudah tentu, perkara di atas hanyalah contoh mudah Dalam projek sebenar, isu seperti pendaftaran dan penemuan perkhidmatan, pengimbangan beban, toleransi kesalahan, dll. juga perlu dipertimbangkan. Saya harap artikel ini dapat memberikan sedikit rujukan untuk semua orang menggunakan seni bina perkhidmatan mikro dalam pembangunan Java.

Atas ialah kandungan terperinci Amalan terbaik untuk seni bina perkhidmatan mikro dalam pembangunan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan