Seni Bina Tolakan Data Masa Nyata
Reka bentuk seni bina untuk menolak aliran data dan kemas kini berterusan kepada klien yang bersambung.
Seni Bina Tolakan Data Masa Nyata ialah pelajaran WebSockets dan Sistem Masa Nyata dengan Spring percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran WebSockets dan Sistem Masa Nyata dengan Spring, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus WebSockets dan Sistem Masa Nyata dengan Spring merangkumi sejumlah 4 pelajaran.
Penolakan Data Masa Nyata
Aplikasi moden berkembang maju dengan kemas kini serta-merta. Bayangkan papan harga saham, aplikasi skor sukan atau bilik sembang – semuanya memerlukan data dihantar ketika ia berlaku, bukan apabila diminta.
Pelajaran ini meneroka cara mereka bentuk seni bina sisi pelayan yang secara aktif menolak aliran data dan kemas kini berterusan kepada klien yang bersambung.
Model Penerbit-Pelanggan
Pada teras penolakan data ialah corak Penerbit-Pelanggan (Pub/Sub). Begini cara ia berfungsi:
- Penerbit: Komponen sisi pelayan yang menjana dan menghantar mesej.
- Pelanggan: Klien yang bersambung (contohnya, pelayar web dan aplikasi mudah alih) yang menyatakan minat terhadap jenis mesej tertentu.
Sistem menghantar mesej daripada penerbit kepada semua pelanggan yang berminat, dengan memisahkan sumber data daripada penggunanya.
Sumber Data Sisi Pelayan
Dari manakah data yang ingin anda tolak berasal? Sumber biasa termasuk:
- Perubahan Pangkalan Data: Kemas kini masa nyata apabila data dalam pangkalan data anda diubah suai.
- API Luaran: Peristiwa atau data yang diterima daripada perkhidmatan pihak ketiga.
- Peristiwa Dalaman Aplikasi: Tindakan dalam aplikasi anda sendiri (contohnya, pesanan baharu dibuat atau status pengguna berubah).
- Baris Gilir Mesej: Data yang digunakan daripada sistem seperti Kafka atau RabbitMQ.
Seni bina penolakan anda bertindak sebagai jambatan, mengambil data daripada sumber ini dan menghantarnya kepada klien.
Contoh Perkhidmatan Penolakan Spring
Mari lihat perkhidmatan Spring Boot ringkas yang mensimulasikan penjanaan dan penolakan data kepada topik STOMP. Kami menggunakan SimpMessagingTemplate, pembantu Spring untuk menghantar mesej kepada destinasi broker.
Cuba jalankan contoh ini:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
// Main Spring Boot Application
@SpringBootApplication
@EnableScheduling // Enables scheduled tasks like our data push
@EnableWebSocketMessageBroker // Enables STOMP over WebSockets
public class RealTimeApp {
public static void main(String[] args) {
SpringApplication.run(RealTimeApp.class, args);
}
}
// WebSocket Configuration for STOMP
@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
// Enable a simple in-memory broker for '/topic' and '/user' destinations
config.enableSimpleBroker("/topic", "/user");
// Prefix for messages from clients to server-side @MessageMapping methods
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
// Register the '/ws' endpoint for WebSocket handshake
registry.addEndpoint("/ws").withSockJS();
}
}
// Service to push real-time data
@Service
class DataPushService {
private final SimpMessagingTemplate messagingTemplate;
private int counter = 0;
public DataPushService(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
// This method runs every 3 seconds and pushes data
@Scheduled(fixedRate = 3000)
public void pushTimeUpdate() {
String message = "Current time: " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss")) + " (Update " + (++counter) + ")";
// Push to a public topic. Clients can subscribe to '/topic/updates'.
messagingTemplate.convertAndSend("/topic/updates", message);
System.out.println("Pushed to /topic/updates: " + message);
}
}Menyiarkan Kemas Kini
Contoh dalam babak sebelumnya menunjukkan penyiaran. Apabila DataPushService kami menghantar mesej kepada /topic/updates, mesej itu ditolak kepada semua klien yang sedang melanggan topik tersebut.
- Ini sesuai untuk aliran data awam seperti bilik sembang, suapan berita atau pemberitahuan global.
- Ini ialah seni bina penyebaran yang cekap, dengan satu mesej daripada pelayan sampai kepada berbilang klien secara serentak.
Penolakan Bersasar: Topik & Pengguna
Walaupun topik bagus untuk penyiaran, kadangkala anda perlu menghantar mesej kepada pengguna tertentu atau kumpulan kecil. STOMP menyokong dua jenis destinasi utama untuk menolak data:
- Topik (contohnya,
/topic/news): Untuk menyiarkan mesej kepada semua pelanggan. - Destinasi Pengguna (contohnya,
/user/{userId}/queue/notifications): Untuk menghantar mesej peribadi yang khusus kepada pengguna.
Memahami perbezaan ini penting untuk mereka bentuk seni bina penolakan yang fleksibel.
Pemberitahuan Peribadi Pengguna
Untuk menghantar mesej atau pemberitahuan peribadi kepada pengguna tertentu, SimpMessagingTemplate Spring menyediakan kaedah convertAndSendToUser().
Kaedah ini menghalakan mesej secara automatik kepada sesi WebSocket yang betul yang dikaitkan dengan ID pengguna tersebut.
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;
@Service
public class NotificationService {
private final SimpMessagingTemplate messagingTemplate;
public NotificationService(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
public void sendPrivateNotification(String userId, String message) {
// The client would subscribe to '/user/queue/notifications'
// Spring handles the '/user/{userId}' part automatically.
messagingTemplate.convertAndSendToUser(userId, "/queue/notifications", message);
System.out.println("Sent private notification to " + userId + ": " + message);
}
}Integrasi Peristiwa Luaran
Untuk sistem yang kompleks, mempunyai volum tinggi atau teragih, sumber data anda mungkin broker mesej luaran seperti Apache Kafka atau RabbitMQ.
Seni bina penolakan anda akan melibatkan:
- Komponen Spring yang bertindak sebagai pengguna, mendengar mesej daripada broker luaran.
- Selepas menerima mesej, komponen ini menggunakan
SimpMessagingTemplateuntuk menolak data melalui WebSockets kepada klien yang berkaitan.
Corak ini memastikan gandingan longgar dan kebolehskalaan.
Menskalakan Seni Bina Penolakan
Apabila aplikasi anda berkembang, anda perlu menskalakan sistem penolakan data anda:
- Penskalaan Mendatar: Jalankan berbilang tika pelayan WebSocket anda.
- Broker Mesej Luaran: Penting untuk komunikasi antara pelayan apabila diskalakan secara mendatar. Broker ini memastikan mesej sampai kepada semua klien yang berkaitan, tanpa mengira tika pelayan yang disambungkan kepada mereka.
- Pengimbang Beban: Agihkan sambungan klien merentasi tika pelayan anda. Sesi melekit mungkin diperlukan untuk persediaan ringkas, atau pengurusan sesi yang lebih maju untuk persediaan kompleks.
Kuiz Seni Bina
Anda sedang membina aplikasi masa nyata. Pengguna perlu menerima kemas kini tentang pesanan khusus mereka sendiri, di samping melihat suapan awam pesanan yang baru dibuat oleh semua orang. Apakah pendekatan seni bina yang terbaik untuk setiap senario?
Imbas Kembali: Menguasai Penolakan Data
Anda kini telah meneroka konsep penting di sebalik seni bina penolakan data masa nyata:
- Model Penerbit-Pelanggan sebagai asas.
- Mengenal pasti pelbagai sumber data sisi pelayan.
- Melaksanakan penyiaran melalui topik dan pemberitahuan peribadi melalui destinasi pengguna dalam Spring.
- Memahami peranan sumber peristiwa luaran dan strategi untuk menskalakan sistem penolakan anda.
Pengetahuan ini membolehkan anda mereka bentuk penghantaran data masa nyata yang kukuh dan cekap untuk mana-mana aplikasi!
Pelajari WebSockets dan Sistem Masa Nyata dengan Spring dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Seni Bina Tolakan Data Masa Nyata” percuma?
Ya — teks penuh “Seni Bina Tolakan Data Masa Nyata” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus WebSockets dan Sistem Masa Nyata dengan Spring, tingkat taraf kepada CoddyKit PRO. Kursus WebSockets dan Sistem Masa Nyata dengan Spring merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Seni Bina Tolakan Data Masa Nyata”?
Reka bentuk seni bina untuk menolak aliran data dan kemas kini berterusan kepada klien yang bersambung. Anda berlatih WebSockets dan Sistem Masa Nyata dengan Spring menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan WebSockets dan Sistem Masa Nyata dengan Spring?
Tiada pengalaman terdahulu diperlukan. Pembelajaran WebSockets dan Sistem Masa Nyata dengan Spring di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Seni Bina Tolakan Data Masa Nyata” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran WebSockets dan Sistem Masa Nyata dengan Spring ini?
Ya. Setiap pelajaran WebSockets dan Sistem Masa Nyata dengan Spring menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Acara Dihantar Pelayan (SSE) berbanding WebSockets
- Seni Bina Tolakan Data Masa Nyata
- Melaksanakan Pemberitahuan Pengguna
- Menjejaki Kehadiran dan Status Dalam Talian