


Bina sistem penerbangan perkhidmatan mikro Spring Cloud yang diedarkan dan selamat
Dengan pembangunan pengkomputeran awan dan pengembangan berterusan perniagaan perusahaan, seni bina perkhidmatan mikro telah menjadi seni bina sistem yang sangat popular. Antaranya, Spring Boot dan Spring Cloud merupakan rangka kerja mikroperkhidmatan yang paling biasa digunakan pada masa ini. Spring Cloud menyediakan banyak komponen untuk menyokong pembangunan dan pengurusan perkhidmatan mikro, termasuk pendaftaran dan penemuan perkhidmatan, penghalaan, pengimbangan beban, pengurusan konfigurasi, pemutus litar, dsb.
Dalam artikel ini, kami akan membina sistem terbang perkhidmatan mikro Spring Cloud yang diedarkan dan selamat sebagai satu kes untuk menunjukkan fungsi berkuasa Spring Cloud.
- Pendaftaran dan penemuan perkhidmatan
Pertama, kita perlu mendaftar dan menemui perkhidmatan. Spring Cloud menyediakan Eureka untuk membantu kami merealisasikan pendaftaran dan penemuan perkhidmatan. Kami akan melengkapkan pendaftaran dan penemuan perkhidmatan melalui Pelayan Eureka.
Buat aplikasi Eureka Server:
@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
Konfigurasikan dalam application.properties:
server.port=8761 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false
Dalam penyedia perkhidmatan dan aplikasi pengguna perkhidmatan, kami perlu mendaftarkannya ke Eureka Server.
Dikonfigurasikan dalam aplikasi penyedia perkhidmatan.sifat:
spring.application.name=flight-service-provider server.port=8080 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
Dikonfigurasikan dalam aplikasi pengguna perkhidmatan.sifat:
spring.application.name=flight-service-consumer server.port=8081 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
- Komunikasi antara perkhidmatan
Pembekal perkhidmatan mencipta antara muka RESTful melalui Spring MVC:
@RestController @RequestMapping("/flights") public class FlightController { @GetMapping("/{flightId}") public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) { Flight flight = new Flight(flightId, "Shanghai", "Beijing", new Date()); return new ResponseEntity<>(flight, HttpStatus.OK); } }
Pengguna perkhidmatan memanggil perkhidmatan melalui Spring RestTemplate:
@Service public class FlightService { @Autowired private RestTemplate restTemplate; @Value("${service.provider.url}") private String serviceProviderUrl; public Flight getFlight(Integer flightId) { return restTemplate.getForObject(serviceProviderUrl + "/flights/{flightId}", Flight.class, flightId); } }
Antaranya, service.provider.url terdapat dalam aplikasi Konfigurasi dalam aplikasi.sifat program.
- Pengimbangan Beban
Dalam aplikasi sebenar, pembekal perkhidmatan mungkin akan digunakan pada berbilang kejadian Dalam kes ini, kami perlu melakukan pengimbangan beban untuk meningkatkan prestasi prestasi dan ketersediaan. Spring Cloud menyediakan Ribbon untuk menyokong pengimbangan beban.
Konfigurasikan dalam aplikasi.sifat pengguna perkhidmatan:
service.provider.url=http://flight-service-provider/ spring.cloud.loadbalancer.ribbon.enabled=true
Gunakan RestTemplate seimbang beban dalam FlightService:
@Service public class FlightService { @Autowired @LoadBalanced private RestTemplate restTemplate; @Value("${service.provider.name}") private String serviceProviderName; public Flight getFlight(Integer flightId) { return restTemplate.getForObject("http://" + serviceProviderName + "/flights/{flightId}", Flight.class, flightId); } }
Di mana, service.provider.name terdapat dalam aplikasi Konfigurasi dalam aplikasi.sifat program.
- Pengurusan Konfigurasi
Spring Cloud menyediakan Config untuk mengurus konfigurasi aplikasi dengan mudah. Kami boleh menyimpan konfigurasi aplikasi dalam repositori Git dan mengedarkannya melalui Pelayan Konfig.
Buat aplikasi Pelayan Config:
@SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
Konfigurasi dalam aplikasi.sifat:
server.port=8888 spring.cloud.config.server.git.uri=https://github.com/xxx/xxx.git spring.cloud.config.server.git.search-paths=config-repo
Dalam penyedia perkhidmatan dan pengguna perkhidmatan, kami boleh mendapatkannya melalui konfigurasi Aplikasi Pelayan Konfig.
Konfigurasikan dalam aplikasi pembekal perkhidmatan.yml:
spring: application: name: flight-service-provider cloud: config: uri: http://localhost:8888 label: master profile: dev
Konfigurasikan dalam aplikasi pengguna perkhidmatan.yml:
spring: application: name: flight-service-consumer cloud: config: uri: http://localhost:8888 label: master profile: dev
- Pemutus litar
Dalam seni bina perkhidmatan mikro, kerana kebergantungan antara perkhidmatan adalah sangat kompleks, masa henti atau masalah dalam sesetengah perkhidmatan boleh menyebabkan keseluruhan sistem runtuh. Untuk menangani situasi ini, kita boleh menggunakan pemutus litar untuk mengendalikan kemerosotan perkhidmatan.
Spring Cloud menyediakan Hystrix untuk menyokong fungsi pemutus litar.
Konfigurasikan dalam application.yml pengguna perkhidmatan:
spring: application: name: flight-service-consumer cloud: config: uri: http://localhost:8888 label: master profile: dev loadbalancer: ribbon: enabled: true circuitbreaker: enabled: true resilience4j: enabled: false circuitBreaker: backend: flight-service-provider failureRateThreshold: 50
Tambah anotasi @HystrixCommand dalam FlightController:
@RestController @RequestMapping("/flights") public class FlightController { @Autowired private FlightService flightService; @GetMapping("/{flightId}") @HystrixCommand(fallbackMethod = "defaultGetFlight") public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) { Flight flight = flightService.getFlight(flightId); if (flight != null) { return new ResponseEntity<>(flight, HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } public ResponseEntity<Flight> defaultGetFlight(Integer flightId) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } }
Antaranya, defaultGetFlight ialah fungsi turun taraf.
- Keselamatan
Dalam sistem yang diedarkan, isu keselamatan adalah sangat penting. Spring Cloud menyediakan Keselamatan untuk menyokong pengurusan keselamatan.
Tambah dalam pom.xml penyedia perkhidmatan dan aplikasi pengguna perkhidmatan:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-security</artifactId> </dependency>
Konfigurasikan dalam application.yml penyedia perkhidmatan dan aplikasi pengguna perkhidmatan:
security: basic: enabled: true spring: security: user: name: user password: password
Antaranya, namakan dan kata laluan ialah nama pengguna dan kata laluan masing-masing. Perlu diingatkan bahawa dalam aplikasi sebenar, kaedah yang lebih selamat mesti digunakan untuk pengesahan pengguna dan pengurusan kebenaran.
Tambah anotasi @PreAuthorize pada peringkat kelas FlightController:
@RestController @RequestMapping("/flights") @PreAuthorize("hasRole('ROLE_ADMIN')") public class FlightController { @Autowired private FlightService flightService; @GetMapping("/{flightId}") public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) { Flight flight = flightService.getFlight(flightId); if (flight != null) { return new ResponseEntity<>(flight, HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } }
Antaranya, anotasi @PreAuthorize digunakan untuk melaksanakan pengesahan keselamatan pada FlightController. Dalam aplikasi sebenar, pengesahan keselamatan yang berbeza boleh dilakukan pada setiap kaedah.
Dengan cara ini, kami telah menyelesaikan pembinaan sistem penerbangan mikro perkhidmatan Spring Cloud yang diedarkan dan selamat. Melalui kes dalam artikel ini, kita dapat melihat bahawa Spring Cloud menyediakan banyak komponen untuk membantu kami membina perkhidmatan mikro. Pada masa yang sama, kita juga perlu memberi perhatian kepada beberapa cabaran yang dibawa oleh seni bina perkhidmatan mikro, seperti pendaftaran dan penemuan perkhidmatan, komunikasi antara perkhidmatan, pengimbangan beban, pengurusan konfigurasi, pemutus litar, keselamatan dan isu-isu lain. Dalam aplikasi sebenar, kita perlu membuat pemilihan dan konfigurasi teknologi berdasarkan senario tertentu.
Atas ialah kandungan terperinci Bina sistem penerbangan perkhidmatan mikro Spring Cloud yang diedarkan dan selamat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dalam masyarakat digital hari ini, komputer telah menjadi bahagian yang amat diperlukan dalam kehidupan kita. Sebagai salah satu sistem pengendalian yang paling popular, Windows digunakan secara meluas di seluruh dunia. Walau bagaimanapun, apabila kaedah serangan rangkaian terus meningkat, melindungi keselamatan komputer peribadi telah menjadi sangat penting. Sistem pengendalian Windows menyediakan satu siri fungsi keselamatan, yang mana "Pusat Keselamatan Windows" adalah salah satu komponen pentingnya. Dalam sistem Windows, "Pusat Keselamatan Windows" boleh membantu kami

Dalam perbandingan keselamatan antara Slim dan Phalcon dalam rangka kerja mikro PHP, Phalcon mempunyai ciri keselamatan terbina dalam seperti perlindungan CSRF dan XSS, pengesahan borang, dsb., manakala Slim tidak mempunyai ciri keselamatan luar biasa dan memerlukan pelaksanaan manual daripada langkah-langkah keselamatan. Untuk aplikasi kritikal keselamatan, Phalcon menawarkan perlindungan yang lebih komprehensif dan merupakan pilihan yang lebih baik.

Apabila melaksanakan algoritma pembelajaran mesin dalam C++, pertimbangan keselamatan adalah penting, termasuk privasi data, pengubahan model dan pengesahan input. Amalan terbaik termasuk menggunakan perpustakaan selamat, meminimumkan kebenaran, menggunakan kotak pasir dan pemantauan berterusan. Kes praktikal menunjukkan penggunaan perpustakaan Botan untuk menyulitkan dan menyahsulit model CNN untuk memastikan latihan dan ramalan yang selamat.

Untuk melindungi aplikasi Struts2 anda, anda boleh menggunakan konfigurasi keselamatan berikut: Lumpuhkan ciri yang tidak digunakan Dayakan semakan jenis kandungan Sahkan input Dayakan token keselamatan Cegah serangan CSRF Gunakan RBAC untuk menyekat akses berasaskan peranan

Reka bentuk rangka kerja Java membolehkan keselamatan dengan mengimbangi keperluan keselamatan dengan keperluan perniagaan: mengenal pasti keperluan perniagaan utama dan mengutamakan keperluan keselamatan yang berkaitan. Membangunkan strategi keselamatan yang fleksibel, bertindak balas terhadap ancaman secara berlapis, dan membuat pelarasan tetap. Pertimbangkan fleksibiliti seni bina, menyokong evolusi perniagaan dan fungsi keselamatan abstrak. Utamakan kecekapan dan ketersediaan, mengoptimumkan langkah keselamatan dan meningkatkan keterlihatan.

Syiling SHIB sudah tidak asing lagi kepada pelabur Ia adalah token konsep yang sama dengan Dogecoin Dengan perkembangan pasaran, nilai pasaran semasa SHIB dapat dilihat bahawa pasaran SHIB sedang hangat dan menarik pelaburan yang tidak terkira . pelabur mengambil bahagian dalam pelaburan. Pada masa lalu, sering berlaku transaksi dan insiden keselamatan dompet di pasaran Ramai pelabur bimbang tentang masalah penyimpanan SHIB Mereka tertanya-tanya dompet mana yang lebih selamat untuk menyimpan syiling SHIB pada masa ini. Menurut analisis data pasaran, dompet yang agak selamat adalah terutamanya dompet OKXWeb3Wallet, imToken, dan MetaMask, yang akan menjadi agak selamat Seterusnya, editor akan membincangkannya secara terperinci. Dompet manakah yang lebih selamat untuk syiling SHIB? Pada masa ini, syiling SHIB diletakkan di OKXWe

Perkembangan pesat AI generatif telah mencipta cabaran yang belum pernah berlaku sebelum ini dalam privasi dan keselamatan, mencetuskan panggilan mendesak untuk campur tangan kawal selia. Minggu lepas, saya berpeluang membincangkan kesan berkaitan keselamatan AI dengan beberapa ahli Kongres dan kakitangan mereka di Washington, D.C. AI generatif hari ini mengingatkan saya tentang Internet pada penghujung 1980-an, dengan penyelidikan asas, potensi terpendam dan kegunaan akademik, tetapi ia belum lagi sedia untuk orang ramai. Kali ini, cita-cita vendor yang tidak terhalang, didorong oleh modal teroka liga kecil dan diilhamkan oleh ruang gema Twitter, dengan pantas memajukan "dunia baharu yang berani" AI. Model asas "awam" adalah cacat dan tidak sesuai untuk penggunaan privasi pengguna dan komersial, jika ada, kebocoran seperti penapis adalah penting kerana permukaan serangan;

Cara Meningkatkan Keselamatan Rangka Kerja SpringBoot Adalah penting untuk meningkatkan keselamatan aplikasi SpringBoot untuk melindungi data pengguna dan mencegah serangan. Berikut ialah beberapa langkah utama untuk meningkatkan keselamatan SpringBoot: 1. Dayakan HTTPS Gunakan HTTPS untuk mewujudkan sambungan selamat antara pelayan dan klien untuk mengelakkan maklumat daripada dicuri atau diusik. Dalam SpringBoot, HTTPS boleh didayakan dengan mengkonfigurasi perkara berikut dalam application.properties: server.ssl.key-store=path/to/keystore.jkserver.ssl.k
