Spring Cloud Tencent ialah penyelesaian mikroperkhidmatan sehenti sumber terbuka oleh Tencent. Spring Cloud Tencent melaksanakan SPI perkhidmatan mikro standard Spring Cloud Pembangun boleh membangunkan aplikasi seni bina perkhidmatan mikro Spring Cloud berdasarkan Spring Cloud Tencent. Teras Spring Cloud Tencent bergantung pada penemuan perkhidmatan sehenti sumber terbuka Tencent dan platform tadbir urus Polarismesh untuk melaksanakan pelbagai senario perkhidmatan mikro yang diedarkan.
Keupayaan yang disediakan oleh Spring Cloud Tencent termasuk tetapi tidak terhad kepada:
Alamat projek:https://github . com/Tencent/spring-cloud-tencent
https://github.com/lltx/spring-cloud-tencent-demo
Polaris ialah pusat penemuan perkhidmatan sumber terbuka dan pusat tadbir urus Tencent yang didedikasikan untuk menyelesaikan keterlihatan perkhidmatan, toleransi kesalahan, kawalan aliran dan isu keselamatan dalam seni bina perkhidmatan teragih atau mikro. Walaupun sudah ada beberapa komponen dalam industri yang boleh menyelesaikan beberapa masalah ini, terdapat kekurangan pelaksanaan piawai, berbilang bahasa, tanpa rangka kerja.
Tencent mempunyai sejumlah besar perkhidmatan yang diedarkan dan kepelbagaian barisan perniagaan dan susunan teknologi, yang telah mengumpul berpuluh-puluh komponen berkaitan, besar dan kecil. Bermula pada 2019, kami telah mengabstrak dan menyepadukan komponen ini melalui Polaris untuk mencipta penemuan perkhidmatan dan penyelesaian tadbir urus yang bersatu untuk syarikat untuk membantu perniagaan meningkatkan kecekapan R&D dan kualiti operasi.
Pemasangan Polaris sangat mudah Muat turun zip platform respons dan jalankan terus,Alamat muat turun:https://github.com/polarismesh/polaris/releases/tag/. v1 .9.0
Perkhidmatan menambah pergantungan polaris-penemuan
<dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId> </dependency>
application.yaml Sambung ke pelayan polaris
spring: cloud: polaris: address: grpc://127.0.0.1:8091
Mulakan pemerhatian perkhidmatan konsol polaris
Contoh panggilan perkhidmatan
@Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } @Autowired private RestTemplate restTemplate; @GetMapping("/consumer") public String consumer() { return restTemplate.getForObject("http://lengleng-tencent-discovery-provider/provider/lengleng", String.class); }
Semasa fasa Bootstrap permulaan aplikasi, Spring Cloud akan memanggil PolarisConfigFileLocator untuk mendapatkan fail konfigurasi daripada pelayan Polaris dan memuatkannya ke dalam konteks Spring. Kandungan konfigurasi boleh diperolehi melalui anotasi Standard Spring Boot @Value,@ConfigurationProperties. Keupayaan segar semula konfigurasi dinamik dilaksanakan melalui mekanisme @RefreshScope standard Spring Cloud.
Perkhidmatan menambah kebergantungan polaris-config
<dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-config</artifactId> </dependency>
bootstrap.yaml access polaris-config
spring: cloud: polaris: address: grpc://127.0.0.1:8081 config: groups: - name: ${spring.application.name} files: "application"
Nota istimewa: Ini perlu dikonfigurasikan dalam bootstrap, spring-cloud-tencent tidak disesuaikan dengan mekanisme pemuatan fail terbaharu bagi but spring
Konsol Polaris menambah konfigurasi
Konfigurasi penggunaan kod
@Value("${name:}") private String name;
Penghadan arus perkhidmatan ialah salah satu langkah perlindungan diri perkhidmatan yang paling biasa, ; Mencegah lonjakan trafik daripada menurunkan perkhidmatan. Modul Spring Cloud Tencent Rate Limit mempunyai Penapis pengehad semasa terbina dalam untuk senario Spring Web dan Spring WebFlux, digabungkan dengan fungsi mengehadkan semasa Polaris untuk membantu perniagaan mengakses dengan pantas keupayaan mengehadkan semasa.
Perkhidmatan menambah kebergantungan polaris-ratelimit ,Tambah penemuan apabila menggunakan komponen pengehad semasa untuk memudahkan penyuntingan senarai perkhidmatan
<dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId> </dependency>com.tencent.cloud spring-cloud-starter-tencent-polaris-ratelimit
Akses perkhidmatan polaris-ratelimit
spring: cloud: polaris: address: grpc://127.0.0.1:8091 namespace: default ratelimit: reject-http-code: 403 reject-request-tips: "lengleng test rate limit"
Konsol Polaris menambah peraturan pengehadan semasa
polaris boleh melaksanakan berbilang borang penghalaan seperti penghalaan metadata, penghalaan terdekat, penghalaan peraturan, penghalaan tersuai, dsb. #xff0c;Artikel ini menggunakan penghalaan metadata untuk menunjukkan,Seperti yang ditunjukkan di bawah, hanya perkhidmatan dengan maklumat metadata yang sama akan dihalakan ke
perkhidmatan Tambah pergantungan polaris-router
<dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-router</artifactId> </dependency>
metadata tanda perkhidmatan
spring: cloud: polaris: address: grpc://127.0.0.1:8091 tencent: metadata: content: version: local
故障实例熔断是常见的一种容错保护机制。故障实例熔断能实现主调方迅速自动屏蔽错误率高或故障的服务实例,并启动定时任务对熔断实例进行探活。在达到恢复条件后对其进行半开恢复。在半开恢复后,释放少量请求去进行真实业务探测。并根据真实业务探测结果去判断是否完全恢复正常。
添加限流熔断相关的依赖 polaris-circuitbreaker
com.tencent.cloud spring-cloud-starter-tencent-polaris-circuitbreaker <dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId> </dependency> org.springframework.cloud spring-cloud-starter-loadbalancer org.springframework.cloud spring-cloud-circuitbreaker-spring-retry org.springframework.cloud spring-cloud-starter-openfeign
提供 Feign 服务调用实现
spring-cloud-tencent 当前版本仅支持 feign 熔断
@FeignClient(contextId = "demoFeign", value = "lengleng-circuitbreaker-tencent-circuitbreaker-provider", fallback = DemoFeignFallback.class) public interface DemoFeign { @GetMapping("/provider") String get(@RequestParam String name); }
服务接入 polaris-circuitbreaker
spring: cloud: polaris: address: grpc://127.0.0.1:8091 #开启断路器 feign: circuitbreaker: enabled: true
编写熔断规则 polaris.yml
consumer: circuitBreaker: checkPeriod: 100ms chain: - errorCount - errorRate plugin: errorCount: continuousErrorThreshold: 1 metricNumBuckets: 1 errorRate: errorRateThreshold: 100 metricStatTimeWindow: 1s requestVolumeThreshold: 1
Atas ialah kandungan terperinci SpringCloud Tencent penyelesaian lengkap satu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!