ಎಲ್ಲರಿಗೂ ನಮಸ್ಕಾರ, ಕ್ವಾರ್ಕಸ್ ಸರಣಿಯ ಮೂರನೇ ಪೋಸ್ಟ್ ಇಲ್ಲಿದೆ!
ಜಾವಾ ಮೈಕ್ರೋಸರ್ವಿಸ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ, ಇದನ್ನು ಹೆಚ್ಚಾಗಿ ನಂಬಲಾಗಿದೆ
ಸ್ವಲ್ಪ ಹೆಚ್ಚು ವಿವರವಾಗಿ, ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳಿಗೆ ತಮ್ಮ ದಿನನಿತ್ಯದ ಕೆಲಸದಲ್ಲಿ ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ API ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದನ್ನು ತೋರಿಸಲು ಕ್ವಾರ್ಕಸ್ ಸ್ಪ್ರಿಂಗ್ API ಗಳನ್ನು ಹೇಗೆ ಬೆಂಬಲಿಸುತ್ತದೆ ಎಂಬುದರ ವ್ಯಾಪ್ತಿ ಮತ್ತು ವಿವರಗಳನ್ನು ನಾವು ಮೊದಲು ನೋಡುತ್ತೇವೆ. ನಂತರ ನಾವು ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ API ಗಳನ್ನು ಕವರ್ ಮಾಡುತ್ತೇವೆ, ಇದು ಮೈಕ್ರೋಸರ್ವಿಸ್ ರಚಿಸುವಾಗ ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳಿಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ.
ಕ್ವಾರ್ಕಸ್ ಏಕೆ? ಮೊದಲನೆಯದಾಗಿ, ಇದು ಲೈವ್ ಕೋಡಿಂಗ್ ಆಗಿದೆ, ಅಂದರೆ, ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ API, ಸ್ಪ್ರಿಂಗ್ API ಮತ್ತು ಇತರ ಜಾವಾ API ಗಳಲ್ಲಿನ ಯಾವುದೇ ಬದಲಾವಣೆಗಳ ಸ್ವಯಂಚಾಲಿತ ಮರುಲೋಡ್ ಆಗಿದೆ, ಇದನ್ನು ಕೇವಲ ಒಂದು ಆಜ್ಞೆಯೊಂದಿಗೆ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ: mvn quarkus:dev. ಎರಡನೆಯದಾಗಿ, ಚರ್ಚಿಸಲಾಗಿದೆ
ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳು ಕ್ವಾರ್ಕಸ್ನಲ್ಲಿ ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ API ಗಳೊಂದಿಗೆ ಸ್ಪ್ರಿಂಗ್ API ಗಳನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುವುದನ್ನು ಹೊರತುಪಡಿಸಿ ನಾವು MicroProfile ಕುರಿತು ವಿವರವಾಗಿ ಹೋಗುವುದಿಲ್ಲ.
ಕಂಟೈನರ್ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್
ಈ ಲೇಖನವನ್ನು ಸರಳವಾಗಿಡಲು, ನಾವು ಇಲ್ಲಿ ಬೆಂಬಲದ ಉನ್ನತ ಮಟ್ಟದ ಅಂಶಗಳನ್ನು ಮಾತ್ರ ಒಳಗೊಳ್ಳುತ್ತೇವೆ.
ಕ್ವಾರ್ಕಸ್ ಕೂಡ
ಅಂತಿಮವಾಗಿ, ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು ಗುರಿಯ ನಿಯೋಜನೆ ಪರಿಸರವಾಗಿ ಕೇಂದ್ರೀಕರಿಸುವ ಮೂಲಕ, ಕ್ವಾರ್ಕಸ್ ಜಾವಾ ಚೌಕಟ್ಟುಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಅಂತಹ ಕಾರ್ಯವನ್ನು ಕುಬರ್ನೆಟ್ಸ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನ ಮಟ್ಟದಲ್ಲಿಯೇ ಅಳವಡಿಸಲಾಗಿದೆ. ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳು ಬಳಸುವ ಕುಬರ್ನೆಟ್ಸ್ ಮತ್ತು ವಿಶಿಷ್ಟವಾದ ಜಾವಾ ಚೌಕಟ್ಟುಗಳ ನಡುವಿನ ಕ್ರಿಯಾತ್ಮಕ ಪತ್ರವ್ಯವಹಾರದ ನಕ್ಷೆಯನ್ನು ಟೇಬಲ್ 1 ಒದಗಿಸುತ್ತದೆ.
ಕೋಷ್ಟಕ 1. ಜಾವಾ ಚೌಕಟ್ಟುಗಳು ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ನಡುವಿನ ಕ್ರಿಯಾತ್ಮಕ ಪತ್ರವ್ಯವಹಾರದ ನಕ್ಷೆ.
ಕ್ರಿಯಾತ್ಮಕ
ಸಾಂಪ್ರದಾಯಿಕ ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್
ಕುಬರ್ನೆಟ್ಸ್
ಸೇವೆಯ ಅನ್ವೇಷಣೆ
ಯುರೇಕಾ
ಡಿಎನ್ಎಸ್
ಸಂರಚನೆ
ಸ್ಪ್ರಿಂಗ್ ಮೇಘ ಸಂರಚನೆ
ನಕ್ಷೆಗಳು/ರಹಸ್ಯಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ
ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸಿಂಗ್
ರಿಬ್ಬನ್ (ಕ್ಲೈಂಟ್ ಸೈಡ್)
ಸೇವೆ, ಪ್ರತಿಕೃತಿ ನಿಯಂತ್ರಕ (ಸರ್ವರ್ ಸೈಡ್)
ಉದಾಹರಣೆಯಿಂದ ಕೋಡ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡುವುದು ಮತ್ತು ಚಾಲನೆ ಮಾಡುವುದು
ಈ ಲೇಖನದಲ್ಲಿ ನಾವು ಉಲ್ಲೇಖಿಸುತ್ತೇವೆ
ಸ್ಪ್ರಿಂಗ್ ಫ್ರೇಮ್ವರ್ಕ್ API ಗಳು
ಅವಲಂಬನೆ ಇಂಜೆಕ್ಷನ್
ಕ್ವಾರ್ಕಸ್ ವ್ಯಾಪ್ತಿಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ
В
ಕೋಷ್ಟಕ 2. ಬೆಂಬಲಿತ ಸ್ಪ್ರಿಂಗ್ DI API ಗಳನ್ನು ಬಳಸುವ ಉದಾಹರಣೆಗಳು.
ಬೆಂಬಲಿತ ಸ್ಪ್ರಿಂಗ್ ಡಿಐ ವೈಶಿಷ್ಟ್ಯಗಳು
ಉದಾಹರಣೆಗಳು
ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಇಂಜೆಕ್ಷನ್
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("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;
}
}
ವೆಬ್ ಫ್ರೇಮ್ವರ್ಕ್
ಕ್ವಾರ್ಕಸ್ JAX-RS, ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ರೆಸ್ಟ್ ಕ್ಲೈಂಟ್, JSON-P, ಮತ್ತು JSON-B ಅನ್ನು ಪ್ರಾಥಮಿಕ ವೆಬ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಯಾಗಿ ಬೆಂಬಲಿಸುತ್ತದೆ ಎಂದು ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಬಳಕೆದಾರರು ಇಷ್ಟಪಡುತ್ತಾರೆ. ಸ್ಪ್ರಿಂಗ್ ವೆಬ್ API ಗಾಗಿ ಕ್ವಾರ್ಕಸ್ನ ಇತ್ತೀಚಿನ ಬೆಂಬಲದೊಂದಿಗೆ ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳು ಸಂತೋಷಪಡುತ್ತಾರೆ, ನಿರ್ದಿಷ್ಟವಾಗಿ REST ಇಂಟರ್ಫೇಸ್ಗಳು. ಸ್ಪ್ರಿಂಗ್ DI ಯಂತೆಯೇ, ಸ್ಪ್ರಿಂಗ್ ವೆಬ್ API ಬೆಂಬಲದ ಮುಖ್ಯ ಗುರಿ ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳು ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ API ಗಳ ಜೊತೆಯಲ್ಲಿ ಸ್ಪ್ರಿಂಗ್ ವೆಬ್ API ಗಳನ್ನು ಬಳಸಲು ಸಕ್ರಿಯಗೊಳಿಸುವುದು. ಬೆಂಬಲಿತ ಸ್ಪ್ರಿಂಗ್ ವೆಬ್ API ಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದರ ಉದಾಹರಣೆಗಳನ್ನು ಟೇಬಲ್ 3 ರಲ್ಲಿ ನೀಡಲಾಗಿದೆ ಮತ್ತು ಈ ವಿಷಯದ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿ ಮತ್ತು ಉದಾಹರಣೆಗಳನ್ನು ಕ್ವಾರ್ಕಸ್ ಟ್ಯುಟೋರಿಯಲ್ ನಲ್ಲಿ ಕಾಣಬಹುದು
ಕೋಷ್ಟಕ 3. ಬೆಂಬಲಿತ ಸ್ಪ್ರಿಂಗ್ ವೆಬ್ API ಗಳನ್ನು ಬಳಸುವ ಉದಾಹರಣೆಗಳು.
ಬೆಂಬಲಿತ ಸ್ಪ್ರಿಂಗ್ ವೆಬ್ ವೈಶಿಷ್ಟ್ಯಗಳು
ಉದಾಹರಣೆಗಳು
@ರೆಸ್ಟ್ ಕಂಟ್ರೋಲರ್
@RequestMapping
@RestController
@RequestMapping("/person")
public class PersonSpringController {
...
...
...
}
@GetMapping
@ಪೋಸ್ಟ್ಮ್ಯಾಪಿಂಗ್
@ಪುಟ್ಮ್ಯಾಪಿಂಗ್
@ ಅಳಿಸಿ ಮ್ಯಾಪಿಂಗ್
@PatchMapping
@RequestParam
@RequestHeader
@ಮ್ಯಾಟ್ರಿಕ್ಸ್ ವೇರಿಯಬಲ್
@PathVariable
@ಕುಕಿ ಮೌಲ್ಯ
@RequestBody
@ResponseStatus
@ಎಕ್ಸೆಪ್ಶನ್ ಹ್ಯಾಂಡ್ಲರ್
@RestControllerAdvice (ಭಾಗಶಃ)
@GetMapping(path = "/greet/{id}",
produces = "text/plain")
public String greetPerson(
@PathVariable(name = "id") long id) {
...
...
...
}
ಸ್ಪ್ರಿಂಗ್ ಡೇಟಾ JPA
ಹೈಬರ್ನೇಟ್ ORM ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ವಾರ್ಕಸ್ JPA ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಎಂದು ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಬಳಕೆದಾರರು ಸಹ ಶ್ಲಾಘಿಸುತ್ತಾರೆ. ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳಿಗೆ ಒಳ್ಳೆಯ ಸುದ್ದಿಯೂ ಇದೆ: ಕ್ವಾರ್ಕಸ್ ಸಾಮಾನ್ಯ ಸ್ಪ್ರಿಂಗ್ ಡೇಟಾ JPA ಟಿಪ್ಪಣಿಗಳು ಮತ್ತು ಪ್ರಕಾರಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಬೆಂಬಲಿತ ಸ್ಪ್ರಿಂಗ್ ಡೇಟಾ JPA API ಗಳನ್ನು ಬಳಸುವ ಉದಾಹರಣೆಗಳನ್ನು ಟೇಬಲ್ 4 ರಲ್ಲಿ ನೀಡಲಾಗಿದೆ.
В
ಕೋಷ್ಟಕ 4. ಬೆಂಬಲಿತ ಸ್ಪ್ರಿಂಗ್ ಡೇಟಾ JPA API ಗಳನ್ನು ಬಳಸುವ ಉದಾಹರಣೆಗಳು.
ಬೆಂಬಲಿತ ಸ್ಪ್ರಿಂಗ್ ಡೇಟಾ JPA ವೈಶಿಷ್ಟ್ಯಗಳು
ಉದಾಹರಣೆಗಳು
ಕ್ರೂಡ್ ರೆಪೊಸಿಟರಿ
public interface PersonRepository
extends JpaRepository,
PersonFragment {
...
}
ರೆಪೊಸಿಟರಿಯನ್ನು
JpaRepository
ಪೇಜಿಂಗ್ ಮತ್ತು ಸೋರ್ಟಿಂಗ್ ರೆಪೊಸಿಟರಿ
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);
}
ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ API ಗಳು
ದೋಷಸಹಿಷ್ಣುತೆ
ಕ್ಯಾಸ್ಕೇಡಿಂಗ್ ವೈಫಲ್ಯಗಳನ್ನು ತಡೆಗಟ್ಟಲು ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ಮೈಕ್ರೋ ಸರ್ವೀಸ್ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳನ್ನು ರಚಿಸಲು ದೋಷ ಸಹಿಷ್ಣುತೆಯ ರಚನೆಗಳು ಬಹಳ ಮುಖ್ಯ. ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳು ಹಲವು ವರ್ಷಗಳಿಂದ ದೋಷ ಸಹಿಷ್ಣುತೆಗಾಗಿ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದಾರೆ.
ಕೋಷ್ಟಕ 5. ಬೆಂಬಲಿತ ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಫಾಲ್ಟ್ ಟಾಲರೆನ್ಸ್ API ಗಳನ್ನು ಬಳಸುವ ಉದಾಹರಣೆಗಳು.
ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಫಾಲ್ಟ್ ಟಾಲರೆನ್ಸ್ ವೈಶಿಷ್ಟ್ಯಗಳು
ವಿವರಣೆ
ಉದಾಹರಣೆಗಳು
@ಅಸಿಂಕ್ರೊನಸ್
ಪ್ರತ್ಯೇಕ ಥ್ರೆಡ್ನಲ್ಲಿ ತರ್ಕವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು
@Asynchronous
@Retry
public Future<String> getSalutation() {
...
return future;
}
@ಬಲ್ಕ್ಹೆಡ್
ಏಕಕಾಲಿಕ ವಿನಂತಿಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮಿತಿಗೊಳಿಸಿ
@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(); //...
}
ತಪಾಸಣೆ ಸೇವೆಗಳು (ಸೇವಾ ಆರೋಗ್ಯ)
ವಿಶೇಷ ಸೇವೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಕಂಟೈನರ್ಗಳ ಆರೋಗ್ಯವನ್ನು ಕುಬರ್ನೆಟ್ಸ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತವೆ. ಸೇವೆಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಆಧಾರವಾಗಿರುವ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ಅನುಮತಿಸಲು, ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಕಸ್ಟಮ್ HealthIndicator ಮತ್ತು Spring Boot Actuator ಅನ್ನು ಬಳಸುತ್ತಾರೆ. ಕ್ವಾರ್ಕಸ್ನಲ್ಲಿ, ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಹೆಲ್ತ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇದನ್ನು ಮಾಡಬಹುದು, ಇದು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಲೈವ್ನೆಸ್ ಚೆಕ್ ಅನ್ನು ಮಾಡುತ್ತದೆ, ಆದರೆ ಏಕಕಾಲದಲ್ಲಿ ಜೀವಂತಿಕೆ ಮತ್ತು ಸಿದ್ಧತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು. ಬೆಂಬಲಿತ ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಹೆಲ್ತ್ API ಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದರ ಉದಾಹರಣೆಗಳನ್ನು ಟೇಬಲ್ 6 ರಲ್ಲಿ ನೀಡಲಾಗಿದೆ ಮತ್ತು ಕ್ವಾರ್ಕಸ್ ಕೈಪಿಡಿಯಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸಲಾಗಿದೆ
ಕೋಷ್ಟಕ 6: ಬೆಂಬಲಿತ ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಹೆಲ್ತ್ API ಗಳ ಬಳಕೆಯ ಉದಾಹರಣೆಗಳು.
ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಆರೋಗ್ಯ ವೈಶಿಷ್ಟ್ಯಗಳು
ವಿವರಣೆ
ಉದಾಹರಣೆಗಳು
@ಲೈವ್ನೆಸ್
ಪ್ಲಾಟ್ಫಾರ್ಮ್ ವಿಫಲವಾದ ಕಂಟೈನರೈಸ್ ಮಾಡಿದ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ರೀಬೂಟ್ ಮಾಡುತ್ತದೆ
ಅಂತ್ಯಬಿಂದು:
ಹೋಸ್ಟ್:8080/ಹೆಲ್ತ್/ಲೈವ್
@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 ಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು) ಅಥವಾ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲದ ಉದ್ದೇಶಗಳಿಗಾಗಿ (ವ್ಯಾಪಾರ SLA ಗಳು) ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ. ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳು ಸ್ಪ್ರಿಂಗ್ ಬೂಟ್ ಆಕ್ಟಿವೇಟರ್ ಮತ್ತು ಮೈಕ್ರೋಮೀಟರ್ ಬಳಸಿ ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಒದಗಿಸುತ್ತಾರೆ. ಪ್ರತಿಯಾಗಿ, ಕ್ವಾರ್ಕಸ್ ಬೇಸ್ಲೈನ್ ಮೆಟ್ರಿಕ್ಸ್ (JVM ಮತ್ತು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್), ವೆಂಡರ್ ಮೆಟ್ರಿಕ್ಸ್ (ಕ್ವಾರ್ಕಸ್) ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಒದಗಿಸಲು ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ. MicroProfile ಮೆಟ್ರಿಕ್ಸ್ಗೆ ಅನುಷ್ಠಾನವು JSON ಮತ್ತು OpenMetrics (Prometheus) ಔಟ್ಪುಟ್ ಸ್ವರೂಪಗಳನ್ನು ಬೆಂಬಲಿಸುವ ಅಗತ್ಯವಿದೆ. ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಮೆಟ್ರಿಕ್ಸ್ API ಅನ್ನು ಬಳಸುವ ಉದಾಹರಣೆಗಳನ್ನು ಕೋಷ್ಟಕ 7 ರಲ್ಲಿ ನೀಡಲಾಗಿದೆ.
В
ಕೋಷ್ಟಕ 7. ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಮೆಟ್ರಿಕ್ಸ್ API ಗಳನ್ನು ಬಳಸುವ ಉದಾಹರಣೆಗಳು.
ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ಮೆಟ್ರಿಕ್ಸ್ ವೈಶಿಷ್ಟ್ಯಗಳು
ವಿವರಣೆ
ಉದಾಹರಣೆಗಳು
@ಎಣಿಸಲಾಗಿದೆ
ಟಿಪ್ಪಣಿ ಮಾಡಿದ ವಸ್ತುವನ್ನು ಎಷ್ಟು ಬಾರಿ ಕರೆಯಲಾಗಿದೆ ಎಂಬುದನ್ನು ಎಣಿಸುವ ಕೌಂಟರ್ ಕೌಂಟರ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ
@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;
}
@ಗೇಜ್
ಟಿಪ್ಪಣಿ ಮಾಡಲಾದ ವಸ್ತುವಿನ ಮೌಲ್ಯವನ್ನು ಅಳೆಯುವ ಗೇಜ್ ಸಂವೇದಕವನ್ನು ಸೂಚಿಸುತ್ತದೆ
@Metered(name = "FallbackGauge",
displayName="Fallback Gauge",
description="Fallback frequency")
public String salutationFallback() {
return fallbackSalutation;
}
@ಮೀಟರ್ ಮಾಡಲಾಗಿದೆ
ಟಿಪ್ಪಣಿ ಮಾಡಲಾದ ವಸ್ತುವಿನ ಕರೆ ಆವರ್ತನವನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವ ಮೀಟರ್ ಸಂವೇದಕವನ್ನು ಸೂಚಿಸುತ್ತದೆ
@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;
}
ಮೆಟ್ರಿಕ್ಸ್ ಅಂತ್ಯಬಿಂದುಗಳು
ಅಪ್ಲಿಕೇಶನ್ ಮೆಟ್ರಿಕ್ಸ್
ಮೂಲ ಮಾಪನಗಳು
ಮಾರಾಟಗಾರರ ಮೆಟ್ರಿಕ್ಸ್
ಎಲ್ಲಾ ಮೆಟ್ರಿಕ್ಗಳು
ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ರೆಸ್ಟ್ ಕ್ಲೈಂಟ್
ಮೈಕ್ರೋಸರ್ವಿಸ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ RESTful ಎಂಡ್ಪಾಯಿಂಟ್ಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ, ಅವುಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅನುಗುಣವಾದ ಕ್ಲೈಂಟ್ API ಗಳ ಅಗತ್ಯವಿರುತ್ತದೆ. RESTful ಅಂತಿಮ ಬಿಂದುಗಳನ್ನು ಬಳಸಲು, ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ RestTemplate ಅನ್ನು ಬಳಸುತ್ತಾರೆ. ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಕ್ವಾರ್ಕಸ್ ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ರೆಸ್ಟ್ ಕ್ಲೈಂಟ್ API ಗಳನ್ನು ನೀಡುತ್ತದೆ, ಇವುಗಳ ಬಳಕೆಯ ಉದಾಹರಣೆಗಳನ್ನು ಟೇಬಲ್ 8 ರಲ್ಲಿ ನೀಡಲಾಗಿದೆ.
В
ಕೋಷ್ಟಕ 8. ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ರೆಸ್ಟ್ ಕ್ಲೈಂಟ್ API ಗಳನ್ನು ಬಳಸುವ ಉದಾಹರಣೆಗಳು.
ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ ರೆಸ್ಟ್ ಕ್ಲೈಂಟ್ ವೈಶಿಷ್ಟ್ಯಗಳು
ವಿವರಣೆ
ಉದಾಹರಣೆಗಳು
@RegisterRestClient
ಟೈಪ್ ಮಾಡಿದ ಜಾವಾ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು REST ಕ್ಲೈಂಟ್ ಆಗಿ ನೋಂದಾಯಿಸುತ್ತದೆ
@RegisterRestClient
@Path("/")
public interface MyRestClient {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getSalutation();
}
@ರೆಸ್ಟ್ ಕ್ಲೈಂಟ್
ಟೈಪ್ ಮಾಡಿದ REST ಕ್ಲೈಂಟ್ ಇಂಟರ್ಫೇಸ್ನ ನಿದರ್ಶನದ ಅನುಷ್ಠಾನವನ್ನು ಗುರುತಿಸುತ್ತದೆ
@Autowired // or @Inject
@RestClient
MyRestClient restClient;
ಆಹ್ವಾನ
REST ಅಂತಿಮ ಬಿಂದುವನ್ನು ಕರೆಯುತ್ತದೆ
System.out.println(
restClient.getSalutation());
mp-rest/url
REST ಅಂತಿಮ ಬಿಂದುವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ
application.properties:
org.example.MyRestClient/mp-rest/url=
http://localhost:8081/myendpoint
ಫಲಿತಾಂಶಗಳು
ಈ ಬ್ಲಾಗ್ನಲ್ಲಿ, ಪ್ರಾಥಮಿಕವಾಗಿ ಸ್ಪ್ರಿಂಗ್ ಡೆವಲಪರ್ಗಳನ್ನು ಗುರಿಯಾಗಿಟ್ಟುಕೊಂಡು, ಜಾವಾ ಮೈಕ್ರೊ ಸರ್ವೀಸ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಕ್ವಾರ್ಕಸ್ನಲ್ಲಿನ ಮೈಕ್ರೋಪ್ರೊಫೈಲ್ API ಗಳೊಂದಿಗೆ ಸ್ಪ್ರಿಂಗ್ API ಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಮತ್ತು ನಂತರ ಅವುಗಳನ್ನು ನೂರಾರು ಮೆಗಾಬೈಟ್ RAM ಅನ್ನು ಉಳಿಸುವ ಸ್ಥಳೀಯ ಬೈನರಿ ಕೋಡ್ಗೆ ಕಂಪೈಲ್ ಮಾಡುವುದು ಮತ್ತು ಪ್ರಾರಂಭಿಸುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ನಾವು ತ್ವರಿತವಾಗಿ ನೋಡಿದ್ದೇವೆ. ಮಿಲಿಸೆಕೆಂಡುಗಳ ವಿಷಯ.
ನೀವು ಈಗಾಗಲೇ ಅರ್ಥಮಾಡಿಕೊಂಡಂತೆ, ಸ್ಪ್ರಿಂಗ್ ಮತ್ತು ಮೈಕ್ರೊಪ್ರೊಫೈಲ್ API ಗಳಿಗೆ ಬೆಂಬಲದ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿ, ಹಾಗೆಯೇ ಬಹಳಷ್ಟು ಇತರ ಉಪಯುಕ್ತ ಮಾಹಿತಿಗಳನ್ನು ಕಾಣಬಹುದು
ಮೂಲ: www.habr.com