Rumah Java javaTutorial Bina sistem penerbangan perkhidmatan mikro Spring Cloud yang diedarkan dan selamat

Bina sistem penerbangan perkhidmatan mikro Spring Cloud yang diedarkan dan selamat

Jun 22, 2023 am 08:06 AM
spring cloud Keselamatan diedarkan

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.

  1. 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);
    }
}
Salin selepas log masuk

Konfigurasikan dalam application.properties:

server.port=8761

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
Salin selepas log masuk

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/
Salin selepas log masuk

Dikonfigurasikan dalam aplikasi pengguna perkhidmatan.sifat:

spring.application.name=flight-service-consumer
server.port=8081

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
Salin selepas log masuk
  1. 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);
    }
}
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

Antaranya, service.provider.url terdapat dalam aplikasi Konfigurasi dalam aplikasi.sifat program.

  1. 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
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

Di mana, service.provider.name terdapat dalam aplikasi Konfigurasi dalam aplikasi.sifat program.

  1. 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);
    }
}
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

Konfigurasikan dalam aplikasi pengguna perkhidmatan.yml:

spring:
  application:
    name: flight-service-consumer
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
Salin selepas log masuk
  1. 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
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

Antaranya, defaultGetFlight ialah fungsi turun taraf.

  1. 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>
Salin selepas log masuk

Konfigurasikan dalam application.yml penyedia perkhidmatan dan aplikasi pengguna perkhidmatan:

security:
  basic:
    enabled: true

spring:
  security:
    user:
      name: user
      password: password
Salin selepas log masuk

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);
        }
    }
}
Salin selepas log masuk

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Petua untuk mematikan perlindungan masa nyata dalam Pusat Keselamatan Windows Petua untuk mematikan perlindungan masa nyata dalam Pusat Keselamatan Windows Mar 27, 2024 pm 10:09 PM

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

Kerangka mikro PHP: Perbincangan keselamatan Slim dan Phalcon Kerangka mikro PHP: Perbincangan keselamatan Slim dan Phalcon Jun 04, 2024 am 09:28 AM

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.

Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Pertimbangan Keselamatan dan Amalan Terbaik Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Pertimbangan Keselamatan dan Amalan Terbaik Jun 01, 2024 am 09:26 AM

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.

Konfigurasi keselamatan dan pengerasan rangka kerja Struts 2 Konfigurasi keselamatan dan pengerasan rangka kerja Struts 2 May 31, 2024 pm 10:53 PM

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

Bagaimanakah reka bentuk seni bina keselamatan rangka kerja Java harus seimbang dengan keperluan perniagaan? Bagaimanakah reka bentuk seni bina keselamatan rangka kerja Java harus seimbang dengan keperluan perniagaan? Jun 04, 2024 pm 02:53 PM

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.

Dompet manakah yang lebih selamat untuk syiling SHIB? (Wajib baca untuk newbie) Dompet manakah yang lebih selamat untuk syiling SHIB? (Wajib baca untuk newbie) Jun 05, 2024 pm 01:30 PM

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

Cabaran dunia baharu AI: Apa yang berlaku kepada keselamatan dan privasi? Cabaran dunia baharu AI: Apa yang berlaku kepada keselamatan dan privasi? Mar 31, 2024 pm 06:46 PM

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;

Bagaimana untuk meningkatkan keselamatan rangka kerja Spring Boot Bagaimana untuk meningkatkan keselamatan rangka kerja Spring Boot Jun 01, 2024 am 09:29 AM

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

See all articles