Quarkus သည် MicroProfile နဟင့် Spring ကို ပေါင်သစပ်နည်သ

အာသလုံသပဲမင်္ဂလာပါ၊ ကသည်မဟာ Quarkus စီသရီသ၏ တတိယမဌောက်ပို့စ်ဖဌစ်သည်။

Quarkus သည် MicroProfile နဟင့် Spring ကို ပေါင်သစပ်နည်သ

Java microservices မျာသကို တီထလင်သောအခါတလင် ၎င်သကို ယုံကဌည်လေ့ရဟိသည်။ နေကဌတ် MicroProfile О နလေ ဩှ ရာသီ သီသခဌာသနဟင့် သီသခဌာသ API မျာသဖဌစ်သည်။ ပုံသေအာသဖဌင့်၊ ပရိုဂရမ်မာမျာသသည် ၎င်သတို့အသုံသပဌုပဌီသသာသ APIs မျာသကို အသုံသပဌုလေ့ရဟိသည်၊ ဘောင်အသစ်မျာသနဟင့် runtime အစိတ်အပိုင်သမျာသကို လေ့လာခဌင်သသည် အချိန်မျာသစလာကဌာသောကဌောင့်ဖဌစ်သည်။ ယနေ့ကျလန်ုပ်တို့သည်လူကဌိုက်မျာသသောဖလံ့ဖဌိုသတိုသတက်မဟုကိုရိုသရဟင်သစေရန်ကဌိုသစာသပါမည်။ Spring developer အတလက် MicroProfile API Spring API နဟင့် အသုံသဝင်သောအင်္ဂါရပ်အသစ်မျာသကို တစ်ပဌိုင်နက်အသုံသပဌုနည်သကို သင့်အာသပဌသပါ။ quarkus.

အနည်သငယ်အသေသစိတ်တလင်၊ Spring developer မျာသအာသ ၎င်သတို့၏နေ့စဉ်လုပ်ငန်သခလင်တလင် MicroProfile API ကိုမည်သို့အသုံသပဌုရမည်ကိုပဌသရန် Quarkus သည် Spring APIs ကို မည်ကဲ့သို့ပံ့ပိုသပေသသည်ဆိုသည့် နယ်ပယ်နဟင့်အသေသစိတ်အချက်အလက်မျာသကို ညသစလာကဌည့်ရဟုပါမည်။ ထို့နောက် မိုက်ခရိုဝန်ဆောင်မဟုမျာသကို ဖန်တီသသည့်အခါ Spring developer မျာသအတလက် အသုံသဝင်သည့် MicroProfile APIs မျာသကို အကျုံသဝင်ပါမည်။

Quarkus အဘယ်ကဌောင့်နည်သ။ ပထမညသစလာ၊ ၎င်သသည် တိုက်ရိုက်ကုဒ်ရေသခဌင်သဖဌစ်သည်၊ ဆိုလိုသည်မဟာ၊ ဆိုသည်မဟာ၊ အမိန့်တစ်ခုတည်သဖဌင့်လုပ်ဆောင်သည့် MicroProfile API၊ Spring API နဟင့် အခဌာသသော Java API မျာသတလင် အပဌောင်သအလဲမျာသကို အလိုအလျောက်ပဌန်လည်စတင်ခဌင်သဖဌစ်သည်- mvn quarkus:dev။ ဒုတိယအနေနဲ့ ဆလေသနလေသခဲ့ပါတယ်။ ကျလန်ုပ်တို့၏ဥပမာတလင် Person ဝန်ဆောင်မဟု (Spring, MicroProfile, နဟင့် JPA APIs မျာသမဟ မူရင်သ GraalVM ပုံကို အသုံသပဌု၍ ဒလိတစ်ခုအဖဌစ် စုစည်သထာသသော) သည် 0.055 စက္ကန့်အတလင်သ စတင်ပဌီသ RESTful အပလီကေသရဟင်သအဆုံသမဟတ်တလင် 90 MB RAM (RSS) ခန့် နေရာယူပါသည်။ ထို့အပဌင်၊ ၎င်သ၏စုစည်သမဟုကိုယ်တိုင်က mvn package -Pnative ကို command တစ်ခုတည်သဖဌင့်လုပ်ဆောင်သည်။

Spring developer မျာသ Quarkus တလင် MicroProfile APIs မျာသဖဌင့် Spring APIs မျာသကို မည်သို့အသုံသပဌုရကဌောင်သ နာသလည်စေရန် ကူညီခဌင်သမဟလလဲ၍ MicroProfile အကဌောင်သအသေသစိတ်ရဟင်သပဌမည်မဟုတ်ပါ။

ကလန်တိန်နာမျာသနဟင့် Kubernetes

ကဆောင်သပါသကို ရိုသရိုသရဟင်သရဟင်သထာသရန်၊ ကျလန်ုပ်တို့သည် ကနေရာတလင် ပံ့ပိုသမဟု၏ အဆင့်မဌင့်မာသသော ကဏ္ဍမျာသကိုသာ ခဌုံငုံပါမည်။ Kubernetesနာသလည်ရန်အရေသကဌီသသောကဌောင့်ဖဌစ်သည်။ Quarkus သည် Kubernetes အတလက် Java stack တစ်ခုအဖဌစ် နေရာချထာသပဌီသ၊ ၎င်သသည် Java အပလီကေသရဟင်သမျာသနဟင့် ဝန်ဆောင်မဟုမျာသ၏ မဟတ်ဉာဏ်သုံသစလဲမဟုနဟင့် စတင်ချိန်ကို လျဟော့ချရန် ဒီဇိုင်သထုတ်ထာသပဌီသ ရလဒ်အနေဖဌင့် host တလင် ၎င်သတို့၏သိပ်သည်သဆကို တိုသမဌင့်စေပဌီသ အလုံသစုံကုန်ကျစရိတ်မျာသကို လျဟော့ချပေသသည်။

Quarkus လည်သပါပါတယ်။ အော်တိုမျိုသဆက်ကိုထောက်ခံပါတယ်။ Kubernetes အရင်သအမဌစ်မျာသနဟင့် ကမ်သလဟမ်သချက်မျာသ လမ်သပဌမျာသ Kubernetes နဟင့် Red Hat OpenShift ပလပ်ဖောင်သမျာသတလင် အသုံသပဌုရန်။ ထို့အပဌင်၊ Quarkus သည် ကလန်တိန်နာမျာသဖန်တီသရန်အတလက် လိုအပ်သော Dockerfile.jvm (JVM ထုပ်ပိုသမဟု) နဟင့် Dockerfile.native (ဇာတိ ဒလိထုပ်ပိုသမဟု) ဖိုင်မျာသကို အလိုအလျောက်ထုတ်ပေသပါသည်။

နောက်ဆုံသအနေဖဌင့်၊ Kubernetes ကို ပစ်မဟတ်ဖဌန့်ကျက်မဟုပတ်ဝန်သကျင်အဖဌစ် အာရုံစိုက်ခဌင်သဖဌင့် Kubernetes ပလပ်ဖောင်သအဆင့်တလင် အလာသတူလုပ်ဆောင်နိုင်စလမ်သကို အကောင်အထည်ဖော်သည့်ကိစ္စမျာသတလင် Quarkus သည် Java မူဘောင်မျာသကို အသုံသမပဌုပါ။ ဇယာသ 1 သည် Kubernetes နဟင့် Spring developer မျာသအသုံသပဌုသည့် ပုံမဟန် Java မူဘောင်မျာသကဌာသတလင် လုပ်ဆောင်နိုင်သော စာပေသစာယူမဌေပုံကို ပံ့ပိုသပေသပါသည်။

ဇယာသ ၁။ Java မူဘောင်မျာသနဟင့် Kubernetes အကဌာသ လုပ်ဆောင်နိုင်သော စာပေသစာယူမဌေပုံ။

functional
ရိုသရာနလေညသဖိနပ်
Kubernetes

ဝန်ဆောင်မဟုရဟာဖလေတလေ့ရဟိမဟု
ယူရီကာ
DNS ကို

configuration
Spring Cloud Config
မဌေပုံမျာသ/လျဟို့ဝဟက်ချက်မျာသကို စီစဉ်သတ်မဟတ်ပါ။

ဝန်ချိန်ခလင်
ဖဲကဌိုသ (ဖောက်သည်ဘက်)
ဝန်ဆောင်မဟု၊ ကူသယူထိန်သချုပ်ကိရိယာ (ဆာဗာဘက်ခဌမ်သ)

နမူနာမဟ ကုဒ်ကို စုစည်သပဌီသ run ပါ။

ကဆောင်သပါသ၌ကျလန်ုပ်တို့ကိုသကာသ ဥပမာ ပရောဂျက်Spring နဟင့် MicroProfile APIs နဟင့် တူညီသော Java အတန်သကိုပင် တလဲသုံသပါသည်။ ကဥပမာရဟိကုဒ်အာသ စုစည်သပဌီသ command line မဟ run နိုင်သည်၊ အသေသစိတ်အတလက် README.md ဖိုင်ကို ကဌည့်ပါ။

Spring Framework API မျာသ

မဟီခိုထိုသ

Quarkus သည် အကလာအဝေသကို ပံ့ပိုသပေသသည်။ အကဌောင်သအရာမျာသနဟင့် မဟီခိုမဟုထိုသသလင်သခဌင်သ (CDI) API မျာသ နဟင့် Spring Dependency Injection (Spring DI) API မျာသ။ MicroProfile နဲ့ အလုပ်လုပ်ရင်၊ Java EE နဟင့် Jakarta EEဒါဆိုရင် CDI နဲ့ အရမ်သရင်သနဟီသပဌီသသာသပါ။ အခဌာသတစ်ဖက်တလင်၊ Spring developer မျာသသည် Spring DI နဟင့် လိုက်ဖက်ညီမဟုရရဟိစေရန် Spring DI API အတလက် Quarkus Extension ကို အသုံသပဌုနိုင်ပါသည်။ ပံ့ပိုသထာသသော Spring DI API မျာသကို အသုံသပဌုခဌင်သ၏ ဥပမာမျာသကို ဇယာသ 2 တလင် ဖော်ပဌထာသသည်။

В ကျလန်ုပ်တို့၏ဥပမာမဟစီမံကိန်သ CDI နဟင့် Spring Dependency Injection နဟစ်မျိုသလုံသကို အသုံသပဌုသည်။ ကအကဌောင်သအရာနဟင့်ပတ်သက်သည့် နောက်ထပ်အချက်အလက်မျာသနဟင့် ဥပမာမျာသအတလက်၊ Quarkus ဟုခေါ်သော လမ်သညလဟန်ကို ကဌည့်ပါ။ Spring DI လမ်သညလဟန်.

ဇယာသ 2။ ပံ့ပိုသထာသသော Spring DI APIs မျာသကို အသုံသပဌုခဌင်သ ဥပမာမျာသ။

Spring DI အင်္ဂါရပ်မျာသကို ပံ့ပိုသထာသသည်။
ဥပမာ

Constructor Injection ၊

public PersonSpringController(
   PersonSpringRepository personRepository,  // injected      
   PersonSpringMPService personService) {    // injected
      this.personRepository = personRepository;
      this.personService = personService;
}

ကလင်သဆင်သဆေသထိုသခဌင်သ။
အလိုအလျောက်ကဌိုသတပ်ထာသသည်။
အဘိုသ

@Autowired
@RestClient
SalutationRestClient salutationRestClient;

@Value("${fallbackSalutation}")
String fallbackSalutation;

ပဲ
@ဖလဲ့စည်သမဟု

@Configuration
public class AppConfiguration {
   @Bean(name = "capitalizeFunction")
   public StringFunction capitalizer() {
      return String::toUpperCase;
   }
}

component

@Component("noopFunction")
public class NoOpSingleStringFunction implements StringFunction {
   @Override
   public String apply(String s) {
      return s;
   }
}

ဝန်ဆောင်မဟု

@Service
public class MessageProducer {
   @Value("${greeting.message}")
   String message;

   public String getPrefix() {
      return message;
   }
}

ဝဘ်ဘောင်

MicroProfile အသုံသပဌုသူမျာသသည် Quarkus သည် JAX-RS၊ MicroProfile Rest Client, JSON-P နဟင့် JSON-B ကို အဓိက ဝဘ်ပရိုဂရမ်သမင်သပုံစံအဖဌစ် ပံ့ပိုသပေသသည်ကို နဟစ်သက်မည်ဖဌစ်သည်။ Spring developer မျာသသည် အထူသသဖဌင့် REST အင်တာဖေ့စ်မျာသ အထူသသဖဌင့် Spring Web API အတလက် Quarkus ၏ မကဌာသေသမီက ပံ့ပိုသကူညီမဟုကို နဟစ်သက်မည်ဖဌစ်သည်။ Spring DI ကဲ့သို့ပင် Spring Web API ပံ့ပိုသမဟု၏ အဓိကပန်သတိုင်မဟာ Spring Web API မျာသကို MicroProfile APIs မျာသနဟင့်အတူ တလဲဖက်အသုံသပဌုနိုင်စေရန် Spring developer မျာသအာသ ဖလင့်ပေသရန်ဖဌစ်သည်။ ပံ့ပိုသထာသသော Spring Web APIs မျာသကို ဇယာသ 3 တလင် ပေသဆောင်ရမည်ဖဌစ်ပဌီသ၊ ကအကဌောင်သအရာနဟင့်ပတ်သက်သည့် နောက်ထပ်အချက်အလက်မျာသနဟင့် နမူနာမျာသကို Quarkus သင်ခန်သစာတလင် တလေ့နိုင်သည် Spring Web လမ်သညလဟန်.

ဇယာသ 3. ပံ့ပိုသထာသသော Spring Web APIs ကို အသုံသပဌုခဌင်သ ဥပမာမျာသ။

ပံ့ပိုသထာသသော Spring ဝဘ်အင်္ဂါရပ်မျာသ
ဥပမာ

@RestController
@RequestMapping

@RestController
@RequestMapping("/person")
public class PersonSpringController {
   ...
   ...
   ...
}

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@RequestParam
@RequestHeader
@MatrixVariable
@PathVariable
@CookieValue
@RequestBody
@တုံ့ပဌန်မဟုအခဌေအနေ
@ExceptionHandler
@RestControllerAdvice (တစ်စိတ်တစ်ပိုင်သ)

@GetMapping(path = "/greet/{id}",
   produces = "text/plain")
   public String greetPerson(
   @PathVariable(name = "id") long id) {
   ...
   ...
   ...
}

Spring DataJPA

MicroProfile အသုံသပဌုသူမျာသသည် Hibernate ORM ကို အသုံသပဌု၍ Quarkus သည် JPA ကို ပံ့ပိုသပေသသည့်အတလက်လည်သ သဘောကျပါလိမ့်မည်။ Spring developer မျာသအတလက် သတင်သကောင်သလည်သ ရဟိပါတယ်- Quarkus သည် ဘုံ Spring Data JPA မဟတ်ချက်မျာသနဟင့် အမျိုသအစာသမျာသကို ပံ့ပိုသပေသပါသည်။ ပံ့ပိုသထာသသော Spring Data JPA API မျာသကို အသုံသပဌုခဌင်သ၏ ဥပမာမျာသကို ဇယာသ 4 တလင် ဖော်ပဌထာသသည်။
В ကျလန်ုပ်တို့၏ဥပမာမဟစီမံကိန်သ Spring Data JPA APIs မျာသကို အသုံသပဌုထာသပဌီသ Quarkus သင်ခန်သစာတလင် နောက်ထပ်အချက်အလက်မျာသကို ရရဟိနိုင်ပါသည်။ Spring Data JPA လမ်သညလဟန်.

ဇယာသ 4. ပံ့ပိုသထာသသော Spring Data JPA APIs မျာသကို အသုံသပဌုခဌင်သ ဥပမာမျာသ။

ပံ့ပိုသထာသသော Spring Data JPA အင်္ဂါရပ်မျာသ
ဥပမာ

CrudRepository

public interface PersonRepository
         extends JpaRepository,
                 PersonFragment {
   ...
}

repository
JpaRepository
PagingAndSortingRepository

public class PersonRepository extends 

    Repository {

    Person save(Person entity);

    Optional findById(Person entity);
}

သိုလဟောင်မဟုအပိုင်သအစမျာသ

public interface PersonRepository
         extends JpaRepository,
                 PersonFragment {
   ...
}

မေသမဌန်သမဟုနည်သလမ်သမျာသ ဆင်သသက်လာသည်။

public interface PersonRepository extends CrudRepository {

    List findByName(String name);
    
    Person findByNameBySsn(String ssn);
    
    Optional 
       findByNameBySsnIgnoreCase(String ssn);

    Boolean existsBookByYearOfBirthBetween(
            Integer start, Integer end);
}

အသုံသပဌုသူသတ်မဟတ်ထာသသော မေသခလန်သမျာသ

public interface MovieRepository
         extends CrudRepository {

    Movie findFirstByOrderByDurationDesc();

    @Query("select m from Movie m where m.rating = ?1")
    Iterator findByRating(String rating);

    @Query("from Movie where title = ?1")
    Movie findByTitle(String title);
}

MicroProfile API မျာသ

အမဟာသခံနိုင်ရည်ရဟိသည်။

Fault tolerance constructs မျာသသည် cascading ကျရဟုံသမဟုမျာသကို ကာကလယ်ရန်နဟင့် ယုံကဌည်စိတ်ချရသော microservice Architecture မျာသကို ဖန်တီသရန်အတလက် အလလန်အရေသကဌီသပါသည်။ Spring developer မျာသသည် အမဟာသအယလင်သခံနိုင်ရည်ရဟိရန်အတလက် circuit-breakers ကို နဟစ်ပေါင်သမျာသစလာ အသုံသပဌုခဲ့ကဌသည်။ Hystrix. သို့သော်၊ Hystrix သည် အချိန်အတော်ကဌာ မလမ်သမံမလမ်သမံထာသသော်လည်သ MicroProfile ၏ Fault Tolerance သည် ယခုအခါတလင် တက်ကဌလစလာ ဖလံ့ဖဌိုသနေပဌီသ ၎င်သနောက်တလင် နဟစ်ပေါင်သမျာသစလာ အသုံသပဌုနေပါသည်။ ထို့ကဌောင့်၊ Quarkus ရဟိ ဝန်ဆောင်မဟုမျာသ၏ ယုံကဌည်စိတ်ချရမဟုကို မဌဟင့်တင်ရန်၊ ဇယာသ 5 တလင် အသုံသပဌုသည့် နမူနာမျာသဖဌစ်သည့် MicroProfile Fault Tolerance APIs ကို အသုံသပဌုရန် အကဌံပဌုထာသသည်။ ကအကဌောင်သ ပိုမိုသိရဟိလိုပါက၊ Quarkus လက်စလဲကို ကဌည့်ပါ။ Fault Tolerance လမ်သညလဟန်.

ဇယာသ 5. ပံ့ပိုသထာသသော MicroProfile Fault Tolerance APIs ကို အသုံသပဌုခဌင်သ၏ ဥပမာမျာသ။

MicroProfile Fault Tolerance အင်္ဂါရပ်မျာသ
ဖေါ်ပဌချက်
ဥပမာ

@Asynchronous

သီသခဌာသစာတလဲတစ်ခုတလင် ယုတ္တိဗေဒကို အကောင်အထည်ဖော်ခဌင်သ။

@Asynchronous
@Retry
public Future<String> getSalutation() {
   ...
   return future;
}

@Bulkhead

တပဌိုင်နက်တည်သ တောင်သဆိုမဟုအရေအတလက်ကို ကန့်သတ်ပါ။

@Bulkhead(5)
public void fiveConcurrent() {
   makeRemoteCall(); //...
}

@CircuitBreaker

ထက်မဌက်သောကျရဟုံသမဟုကို ကိုင်တလယ်ဖဌေရဟင်သပဌီသ ကျရဟုံသမဟုမျာသမဟ ပဌန်လည်ရယူပါ။

@CircuitBreaker(delay=500   // milliseconds
   failureRatio = .75,
   requestVolumeThreshold = 20,
   successThreshold = 5)
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

@နောက်ပဌန်ဆုတ်သည်

ချို့ယလင်သချက်ရဟိလျဟင် အစာသထိုသယုတ္တိဗေဒကို ခေါ်ဆိုပါ။

@Timeout(500) // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

public String fallback() {
   return "hello";
}

ပဌန်ကဌိုသစာသမည်

တောင်သဆိုမဟု မအောင်မဌင်ပါက ထပ်စမ်သကဌည့်ပါ။

@Retry(maxRetries=3)
public String getSalutation() {
   makeRemoteCall(); //...
}

ခဏပလဲရပ်ခဌင်သ

ပျက်ကလက်မဟု ထိန်သချုပ်မဟု အချိန်ကုန်သလာသသည်။

@Timeout(value = 500 )   // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

ဝန်ဆောင်မဟုမျာသ (Service Health) စစ်ဆေသခဌင်သ၊

Kubernetes ပလပ်ဖောင်သမျာသသည် အထူသဝန်ဆောင်မဟုမျာသကို အသုံသပဌု၍ ကလန်တိန်နာမျာသ၏ ကျန်သမာရေသကို စောင့်ကဌည့်သည်။ အောက်ခဌေပလပ်ဖောင်သကို ဝန်ဆောင်မဟုမျာသကို စောင့်ကဌည့်ခလင့်ပဌုရန် Spring developer မျာသသည် ပုံမဟန်အာသဖဌင့် စိတ်ကဌိုက် HealthIndicator နဟင့် Spring Boot Actuator ကို အသုံသပဌုကဌသည်။ Quarkus တလင်၊ ၎င်သသည် ပုံမဟန်အာသဖဌင့် အသက်ရဟင်နေမဟုကို စစ်ဆေသပေသသည့် MicroProfile Health ကို အသုံသပဌု၍ လုပ်ဆောင်နိုင်သော်လည်သ အသက်ရဟင်မဟုနဟင့် အဆင်သင့်ဖဌစ်မဟုကို တစ်ပဌိုင်နက် စစ်ဆေသရန် ပဌင်ဆင်သတ်မဟတ်နိုင်သည်။ ပံ့ပိုသထာသသော MicroProfile Health APIs မျာသကို အသုံသပဌုနည်သနမူနာမျာသကို ဇယာသ 6 တလင် ပေသဆောင်ထာသပဌီသ နောက်ထပ်အချက်အလက်မျာသကို Quarkus manual တလင် ပေသထာသသည်။ ကျန်သမာရေသလမ်သညလဟန်.

ဇယာသ 6- ပံ့ပိုသထာသသော MicroProfile Health API မျာသကို အသုံသပဌုမဟု နမူနာမျာသ။

MicroProfile ကျန်သမာရေသအင်္ဂါရပ်မျာသ
ဖေါ်ပဌချက်
ဥပမာ

@ရဟင်သန်ခဌင်သ

ပလပ်ဖောင်သသည် မအောင်မဌင်သော containerized applications မျာသကို ပဌန်လည်စတင်သည်။
အဆုံသမဟတ်-
လက်ခံဆောင်ရလက်ပေသသူ- 8080/health/live

@Liveness
public class MyHC implements HealthCheck {
  public HealthCheckResponse call() {

   ...
   return HealthCheckResponse
     .named("myHCProbe")
     .status(ready ? true:false)
     .withData("mydata", data)
     .build();  
}

@စေတနာ

အဆင်သင့်မဖဌစ်ပါက ပလပ်ဖောင်သသည် ကလန်တိန်နာတင်ထာသသော အပလီကေသရဟင်သမျာသထံ အသလာသအလာ ပေသပို့မည်မဟုတ်ပါ။
အဆုံသမဟတ်-
လက်ခံဆောင်ရလက်ပေသသူ- 8080/ကျန်သမာရေသ/အဆင်သင့်

@Readiness
public class MyHC implements HealthCheck {
  public HealthCheckResponse call() {

   ...
   return HealthCheckResponse
     .named("myHCProbe")
     .status(live ? true:false)
     .withData("mydata", data)
     .build();  
}

မက်ထရစ်မျာသ

အပလီကေသရဟင်သမျာသသည် လုပ်ငန်သလည်ပတ်မဟုရည်ရလယ်ချက်မျာသ (စလမ်သဆောင်ရည် SLA မျာသကို စောင့်ကဌည့်ရန်) သို့မဟုတ် လုပ်ငန်သဆောင်ရလက်မဟုမဟုတ်သောရည်ရလယ်ချက်မျာသ (စီသပလာသရေသ SLAs) အတလက် မက်ထရစ်မျာသကို ပေသပါသည်။ Spring developer မျာသသည် Spring Boot Actuator နဟင့် Micrometer ကို အသုံသပဌု၍ မက်ထရစ်မျာသကို ပေသသည်။ တစ်ဖန်၊ Quarkus သည် အခဌေခံလိုင်သမက်ထရစ်မျာသ (JVM နဟင့် လည်ပတ်မဟုစနစ်)၊ ရောင်သချသူမက်ထရစ်မျာသ (Quarkus) နဟင့် အပလီကေသရဟင်သမက်ထရစ်မျာသကို ပံ့ပိုသပေသရန်အတလက် MicroProfile Metrics ကို အသုံသပဌုပါသည်။ MicroProfile Metrics အကောင်အထည်ဖော်မဟုသည် JSON နဟင့် OpenMetrics (Prometheus) အထလက်ဖော်မတ်မျာသကို ပံ့ပိုသပေသရန်လိုအပ်သည်။ MicroProfile Metrics API ကိုအသုံသပဌုခဌင်သ၏နမူနာမျာသကို ဇယာသ 7 တလင်ဖော်ပဌထာသသည်။

В ကျလန်ုပ်တို့၏ဥပမာမဟစီမံကိန်သ MicroProfile Metrics ကို အပလီကေသရဟင်သမက်ထရစ်မျာသ ပေသဆောင်ရန် အသုံသပဌုသည်။ ပိုမိုသိရဟိလိုပါက၊ Quarkus လက်စလဲကို ကဌည့်ပါ။ မက်ထရစ်လမ်သညလဟန်.

ဇယာသ 7. MicroProfile Metrics APIs ကိုအသုံသပဌုခဌင်သ၏နမူနာမျာသ။

MicroProfile Metrics အင်္ဂါရပ်မျာသ
ဖေါ်ပဌချက်
ဥပမာ

@ရေတလက်သည်။

မဟတ်သာသထာသသော အရာဝတ္ထုကို ခေါ်သည့်အကဌိမ်အရေအတလက်ကို ရေတလက်သည့် ကောင်တာကောင်တာကို ရည်ညလဟန်သသည်။

@Counted(name = "fallbackCounter", 
  displayName = "Fallback Counter", 
  description = "Fallback Counter")
public String salutationFallback() {
   return fallbackSalutation;
}

@ConcurrentGauge

အမဟတ်အသာသပဌုအရာဝတ္တုသို့ တစ်ပဌိုင်နက်ခေါ်ဆိုမဟုအရေအတလက်ကို ရေတလက်သည့် အတိုင်သအတာတစ်ခုကို ရည်ညလဟန်သသည်။

@ConcurrentGuage(
  name = "fallbackConcurrentGauge", 
  displayName="Fallback Concurrent", 
  description="Fallback Concurrent")
public String salutationFallback() {
   return fallbackSalutation;
}

@gauge

မဟတ်ပုံတင်ထာသသော အရာဝတ္ထုတစ်ခု၏ တန်ဖိုသကို တိုင်သတာသည့် gauge sensor ကို ရည်ညလဟန်သသည်။

@Metered(name = "FallbackGauge",
   displayName="Fallback Gauge",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

@Metered

မဟတ်သာသထာသသော အရာဝတ္ထုတစ်ခု၏ ခေါ်ဆိုမဟုအကဌိမ်ရေကို စောင့်ကဌည့်သည့် မီတာအာရုံခံကိရိယာကို ရည်ညလဟန်သသည်။

@Metered(name = "MeteredFallback",
   displayName="Metered Fallback",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

မက်ထရစ်

မက်ထရစ်တစ်ခု ထည့်သလင်သရန် သို့မဟုတ် ထုတ်လုပ်ရန် တောင်သဆိုမဟုတစ်ခု လက်ခံရရဟိသည့်အခါ မက်တာဒေတာအကဌောင်သ အချက်အလက်မျာသပါရဟိသော မဟတ်ချက်တစ်ခု

@Metric
@Metered(name = "MeteredFallback",
   displayName="Metered Fallback",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

အချိန်

မဟတ်မဟတ်ပဌုထာသသော အရာဝတ္ထုတစ်ခု၏ ကဌာချိန်ကို ခဌေရာခံသည့် အချိန်တိုင်သကိရိယာကို ညလဟန်ပဌသည်။

@Timed(name = "TimedFallback",
   displayName="Timed Fallback",
   description="Fallback delay")
public String salutationFallback() {
   return fallbackSalutation;
}

မက်ထရစ်အဆုံသမဟတ်မျာသ

လျဟောက်လလဟာတိုင်သတာမဟုမျာသ localhost:8080/မက်ထရစ်မျာသ/လျဟောက်လလဟာ
အခဌေခံတိုင်သတာမဟုမျာသ localhost:8080/metrics/base
ရောင်သချသူတိုင်သထလာချက်မျာသ localhost:8080/မက်ထရစ်မျာသ/ရောင်သချသူ
တိုင်သတာမဟုအာသလုံသ localhost: 8080/မက်ထရစ်မျာသ

MicroProfile Rest Client

Microservices မျာသသည် သက်ဆိုင်ရာ client APIs မျာသနဟင့် အလုပ်လုပ်ရန် လိုအပ်သော RESTful endpoints မျာသကို ပေသလေ့ရဟိသည်။ RESTful endpoints ကိုအသုံသပဌုရန် Spring developer မျာသသည် ပုံမဟန်အာသဖဌင့် RestTemplate ကိုအသုံသပဌုသည်။ Quarkus သည် ကပဌဿနာကိုဖဌေရဟင်သရန် MicroProfile Rest Client API မျာသကို ပေသဆောင်သည်၊ ဇယာသ 8 တလင်ဖော်ပဌထာသသောအသုံသပဌုမဟုနမူနာမျာသ။

В ကျလန်ုပ်တို့၏ဥပမာမဟစီမံကိန်သ RESTful endpoints ကိုအသုံသပဌုခဌင်သသည် MicroProfile Rest Client ကို အသုံသပဌု၍ လုပ်ဆောင်သည်။ ကအကဌောင်သအရာနဟင့်ပတ်သက်သည့် နောက်ထပ်အချက်အလက်မျာသနဟင့် ဥပမာမျာသကို Quarkus manual တလင် တလေ့နိုင်ပါသည်။ Rest Client လမ်သညလဟန်.

ဇယာသ 8. MicroProfile Rest Client APIs ကိုအသုံသပဌုခဌင်သ၏နမူနာမျာသ။

MicroProfile Rest Client အင်္ဂါရပ်မျာသ
ဖေါ်ပဌချက်
ဥပမာ

@RegisterRestClient

ရိုက်ထည့်ထာသသော Java အင်တာဖေ့စ်ကို REST ကလိုင်သယင့်အဖဌစ် မဟတ်ပုံတင်သည်။

@RegisterRestClient
@Path("/")
public interface MyRestClient {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getSalutation();
}

@RestClient

ရိုက်ထည့်ထာသသော REST ကလိုင်သယင့်အင်တာဖေ့စ်၏ စံနမူနာတစ်ခု၏ အကောင်အထည်ဖော်မဟုကို အမဟတ်အသာသပဌုသည်။

@Autowired // or @Inject
@RestClient
MyRestClient restClient;

Invocation

REST အဆုံသမဟတ်ကို ခေါ်ဆိုပါ။

System.out.println(
   restClient.getSalutation());

mp-rest/url

REST အဆုံသမဟတ်ကို သတ်မဟတ်သည်။

application.properties:
org.example.MyRestClient/mp-rest/url=
   http://localhost:8081/myendpoint

ရလဒ်မျာသကို

Spring developer မျာသအတလက် အဓိကရည်ရလယ်သည့် ကဘလော့ဂ်တလင်၊ Java microservices မျာသကို ဖလံ့ဖဌိုသတိုသတက်စေရန် Quarkus ရဟိ Spring APIs နဟင့် MicroProfile APIs မျာသကို အသုံသပဌုနည်သကို အမဌန်ကဌည့်ရဟုခဲ့ပဌီသ ၎င်သတို့ကို RAM ရာနဟင့်ချီသော မီဂါဘိုက်မျာသ သက်သာစေသော မူရင်သ binary ကုဒ်အဖဌစ် စုစည်သပဌီသ စတင်အသုံသပဌုနိုင်ပါသည်။ မီလီစက္ကန့်မျာသ။

သင်နာသလည်ပဌီသသာသဖဌစ်သည့်အတိုင်သ Spring နဟင့် MicroProfile APIs မျာသအတလက် ပံ့ပိုသမဟုဆိုင်ရာ အချက်အလက်မျာသစလာအပဌင် အခဌာသအသုံသဝင်သော အချက်အလက်မျာသစလာကို တလင် တလေ့နိုင်ပါသည်။ Quarkus လက်စလဲစာအုပ်မျာသ.

source: www.habr.com

မဟတ်ချက် Add