jdomainapp/jda

I4. Implement language improvements for MOSA+

ducmle opened this issue · 6 comments

@haworker25 @ducmle-fpt
Depends on: #39
Paper-2: mdsa: Part 2

MOSA+ = MDSA (micro-domain software architecture) architecture.

@haworker25
(em liệt kê issues hàng ngày lên đây)

@haworker25
Error running "clean install"

Error: mvn clean install
[ERROR]   The project jda.example:jda-eg-coursemanmsa-servicestmsa:1.0 (/data/projects/jda/examples/courseman/msa/modules/servicestmsa/pom.xml) has 1 error
[ERROR]     Child module /data/projects/jda/examples/courseman/msa/modules/servicestmsa/cmodulemgnt-service of /data/projects/jda/examples/courseman/msa/modules/servicestmsa/pom.xml does not exist

Java JDK

  • Use Oracle Java 13.0 or above

ServiceReconfigurer.promote()

  • 1: assume service config has been uploaded into the git (used by config-server)
  • 1.3.1: initDataSource: find a way to do this automatically at service start up time. (e.g. use a library)
  • 1.4: promoteCompleted: same as ResponseEntity.ok

ServiceReconfigurerController

  • do not use 2 classes, merge into one class

Service Resiliency

  • Used Oracle Java 13.0 but 2 functions still not work
  • Used Oracle Java 13.0 but 2 functions still not work

Very strange because they run on myy machine.

Please finish the code of promote() and let me try on my machine.

@haworker25

Service Resiliency

Implement 3 resiliency patterns (bulkhead (BH), circuit breaker (CB), fallback (FB)) into the AcademicAdministration service

Design (abstract):
ControllerTk.invokeService:

  • BH: use thread pool (e.g. Executors) to execute the service invocation on a thread
  • CB: check for service invocation timeout. Flag the service instance as bad if timeout occurs without any result
  • FB: use the FB service instance when CB occurs. Look up the alternative service instance and invoke ControllerTk.invokeService again to repeat the process.
    • this recursive invocation is necessary to ensure that resiliency is applied to every service invocation

Discussion

  1. How to unregister a service instance from Eureka server:
  • using InstanceRegistry.cancel of the Eureka server