Ей там! Аз съм доставчик на Spring за затвор и днес искам да разговарям как да управлявам комуникацията на микросервизите през пролетта за нашите продукти на затвора. Това е малко техническа тема, но ще направя всичко възможно, за да го разбия по начин, който е лесен за разбиране.


Първо, нека поговорим за това защо комуникацията на микросервизите е толкова важна за нашата пролет за бизнеса с затвора. В света на производството на затвора имаме куп различни компоненти и процеси. Например имамеСтранична рамка на ролките 90 °, TheКорона за трансмисия на ролкови затвораиРолково колно колело. Всяка от тези части може да се управлява от различен микросервиз в нашата пролетна система.
Когато тези микросервизи не могат да комуникират добре, това е като да имаш куп хора във фабрика, които не говорят помежду си. В крайна сметка сте със закъснения, грешки и много главоболия. Така че, ние трябва да сме сигурни, че тези микросервизи могат да споделят безпроблемно информация.
Един от ключовите начини за управление на комуникацията с микросервизи през пролетта е чрез RESTFUL API. REST (представителен трансфер на държавата) е наистина популярен начин за изграждане на уеб услуги. В нашата система за пролет за затвора можем да създадем спокойни крайни точки за всеки микросервиз. Например, ако имаме микросервиз, който управлява инвентара на [страничната рамка на затвора 90 °], той може да изложи API за REST, който други микросервизи могат да използват за проверка на нивата на запасите.
Ето един прост пример за това как можем да създадем RESTFUL API през пролетта. Ще използваме Spring Boot, която е чудесна рамка за бързо изграждане на пролетни приложения.
импортиране org.springframework.boot.springApplication; импортиране org.springframework.boot.autoconfigure.springBootApplication; import org.springframework.web.bind.annotation.getMapping; импортиране org.springframework.web.bind.annotation.restcontroller; @SpringBootApplication @RestController публичен клас shutterInventoryService {public static void main (string [] args) {springApplication.run (shutterInventoryService.class, args); } @GetMapping ("/инвентаризация/ролкови-Shutter-Side-Frame-90") Public Int GetRrollershuttersideframe90inventory () {// Тук всъщност ще се запитаме базата данни, за да получим връщане на броя на инвентара 10; }}
В този код създадохме прост RESTFUL API, който връща броя на инвентара на [страничната рамка на затвора на ролките 90 °]. След това други микросервизи могат да се обадят на този API, използвайки HTTP GET заявки, за да получите необходимата информация.
Друг важен аспект на комуникацията с микросервизи е съобщението - базирана комуникация. Spring осигурява голяма поддръжка за системи, базирани на съобщения, чрез технологии като Spring Cloud Stream. С комуникация, базирана на съобщение, микросервизите могат да изпращат и получават съобщения асинхронно.
Да речем, че имаме микросервиз, който обработва поръчки за [колелото на коляновия вал на ролката]. Когато е направена поръчка, тази микросервиза може да изпрати съобщение до брокер на съобщения (като Kafka или RabbitMQ). Други микросервизи, като микросервиза за управление на инвентара, след това могат да слушат тези съобщения и съответно да актуализират инвентара.
Ето пример за това как можем да използваме Spring Cloud Stream за изпращане и получаване на съобщения:
import org.springframework.cloud.stream.annotation.enableBinding; import org.springframework.cloud.stream.annotation.input; импортиране org.springframework.cloud.stream.annotation.output; import org.springframework.cloud.stream.annotation.streamlistener; импортиране org.springframework.messaging.messagechannel; импортиране org.springframework.messaging.support.messageBuilder; import org.springframework.stereotype.service; import java.util.logging.logger; интерфейс ShutterorderChannels {String input = "Shutter - поръчка - Input"; String output = "затвор - поръчка - изход"; @Input (вход) org.springframework.messaging.subscribablechannel input (); @Output (изход) messagechannel изход (); } @EnableBinding (shutterorderChannels.class) @Service публичен клас shutterorderService {частен статичен окончателен логер logger = logger.getLogger (shutterorderService.class.getName ()); частни окончателни канали на ShutterorderChannels; public ShutterorderService (ShutterorderChannels канали) {this.Channels = канали; } public void sendorderMessage (string order) {cninaels.output (). send (messageBuilder.withpayload (поръчка) .build ()); } @Streamlistener (shutterorderChannels.input) public void handororderMessage (string order) {logger.info ("Получена поръчка:" + поръчка); // Тук можем да направим нещо с поръчката, като актуализиране на инвентара}}
В този код създадохме услуга, която може да изпраща и получава съобщения, свързани с поръчки на затвора. По този начин различните микросервизи могат да комуникират помежду си по асинхронен и отделен начин.
Що се отнася до управлението на комуникацията с микросервизи в реален световен сценарий, ние също трябва да помислим за откриването на услуги. В голяма пружина за системата на затвора може да има десетки или дори стотици микросервизи. Не е практично всеки микросервиз да знае точното местоположение (IP адрес и порт) на всеки друг микросервиз, с който трябва да комуникира.
Spring Cloud Netflix Eureka е чудесен инструмент за откриване на услуги. Микросервизите могат да се регистрират със сървъра на Eureka, а други микросервизи след това могат да търсят местоположението на услугите, от които се нуждаят чрез сървъра на Eureka.
Ето как можем да настроим Eureka Server в Spring Boot:
импортиране org.springframework.boot.springApplication; импортиране org.springframework.boot.autoconfigure.springBootApplication; import org.springframework.cloud.netflix.eureka.server.enableekaserver; @SpringBootApplication @Enableeurekaserver публичен клас shuttereerekaserver {public static void main (string [] args) {springApplication.run (shuttereurekaserver.class, args); }}
И ето как микросервизът може да се регистрира със сървъра на Eureka:
импортиране org.springframework.boot.springApplication; импортиране org.springframework.boot.autoconfigure.springBootApplication; импортиране org.springframework.cloud.netflix.eureka.enableeureklient; @SpringBootApplication @EnableeurekAclient публичен клас shuttermicroservice {public static void main (string [] args) {springApplication.run (shuttermicroservice.class, args); }}
Използвайки Eureka, нашите микросервизи могат лесно да намерят и комуникират помежду си, без да се налага да кодират местата на услугите.
В заключение, управлението на комуникацията с микросервизи през пролетта за нашите продукти на затвора е от решаващо значение за безпроблемната работа на нашия бизнес. Независимо дали става въпрос за RESTFUL API, съобщения, базирани на съобщения или откриване на услуги, имаме на разположение много инструменти.
Ако сте на пазара за висококачествена пролет за продукти за затвора и се интересувате от това как управляваме нашите микросервизи, за да гарантираме отгоре - качество и ефективност, бих се радвал да си поговорим с вас. Можем да обсъдим вашите специфични нужди и как нашите продукти могат да се впишат във вашия бизнес. Не се колебайте да се свържете с дискусия за възлагане на обществени поръчки.
ЛИТЕРАТУРА
- Пролетна документация за зареждане
- Пролетна облачна документация
- RESTFUL API Design Best Practices
- Съобщение - базирана комуникация в разпределени системи




