[ 
https://issues.apache.org/jira/browse/SCB-2425?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lei Zhang updated SCB-2425:
---------------------------
    Description: 
The purpose of refactoring is to decouple distributed transaction implementation

*Alpha Module*
 * Rename alpha-fsm to alpha-spec-saga-akka
 * Add alpha-spec-saga-db
 * Add alpha-spec-tcc-db
 * Keep Acceptance module artifactId and directory name the same, e.g. rename 
acceptance-pack-akka-spring to acceptance-pack-akka-spring-demo
 * Rename persistence-jpa to alpha/alpha-persistence-jpa

*Alpha Using Spring SPI*
 * Load AlphaSpecXXXAutoConfiguration through spring.factories under each module
 * Configure the SPI module by parameters, likes alpha.spec.names=saga-db or 
alpha.spec.names=saga-akka

*Alpha Configuration parameters*
{code:java}
alpha:
  spec:
    names: saga-db
    saga:
      akka:
        channel:
          name: memory
          memory:
            max-length: -1
          kafka:
            topic: servicecomb-pack-actor-event
            bootstrap-servers: 127.0.0.1:9092
            consumer:
              group-id: servicecomb-pack
              auto.offset.reset: earliest
            producer:
              batch-size: 16384
              retries: 0
              buffer.memory: 33554432
        repository:
          name: elasticsearch
          elasticsearch:
            uris: http://localhost:9200
            batch-size: 100
            refresh-time: 5000
      db:
        datasource:
          username: sa
          password:
          url: jdbc:hsqldb:mem:saga
          initialization-mode: always
        cluster:
          enabled: true
          type: jdbc
          expire: 5000
    tcc:
      db:
        memory-mode: true
        datasource:
          username: sa
          password:
          url: jdbc:hsqldb:mem:saga
          initialization-mode: always
{code}
 
*Omega Modules*
 * Split OmegaSpringConfig into OmegaSagaSpringConfig and OmegaTccSpringConfig

*Omega AutoConfiguration*
 * OmegaSagaSpringConfig using omega.spec.names=saga
 * OmegaTccSpringConfig using omega.spec.names=tcc
 * TransactionAspectConfig class of the omega-spring-tx module uses 
ConditionalOnExpression to initialize beans

*Duplicate Code*
 * Create class EclipseLinkJpaConfiguration in test case to avoid dependency on 
class EclipseLinkJpaConfiguration in alpha-persistence-jpa module

 * Because of the metrics API, each Spec module contains same classes as 
follows(saga-xxx and tcc-xxx cannot be enabled at the same time)
{code:java}
  AlphaMetricsEndpointImpl.java 
  MetricsService.java 
  SagaAkkaAPIv1Controller.java, SagaAkkaAPIv1Impl.java 
  SagaDbAPIv1Controller.java, SagaDbAPIv1Impl.java 
  TccDbAPIv1Controller.java, TccDbAPIv1Impl.java
{code}
 

 

  was:
The purpose of refactoring is to decouple distributed transaction implementation

*Alpha Module*
 * Rename alpha-fsm to alpha-spec-saga-akka
 * Add alpha-spec-saga-db
 * Add alpha-spec-tcc-db
 * Keep Acceptance module artifactId and directory name the same, e.g. rename 
acceptance-pack-akka-spring to acceptance-pack-akka-spring-demo
 * Rename persistence-jpa to alpha/alpha-persistence-jpa

*Alpha Using Spring SPI*
 * Load AlphaSpecXXXAutoConfiguration through spring.factories under each module
 * Configure the SPI module by parameters, likes alpha.spec.names=saga-db or 
alpha.spec.names=saga-akka

*Alpha Configuration parameters*
{code:java}
alpha:
  spec:
    names: saga-db
    saga:
      akka:
        channel:
          name: memory
          memory:
            max-length: -1
          kafka:
            topic: servicecomb-pack-actor-event
            bootstrap-servers: 127.0.0.1:9092
            consumer:
              group-id: servicecomb-pack
              auto.offset.reset: earliest
            producer:
              batch-size: 16384
              retries: 0
              buffer.memory: 33554432
        repository:
          name: elasticsearch
          elasticsearch:
            uris: http://localhost:9200
            batch-size: 100
            refresh-time: 5000
      db:
        datasource:
          username: sa
          password:
          url: jdbc:hsqldb:mem:saga
          initialization-mode: always
        cluster:
          enabled: true
          type: jdbc
          expire: 5000
    tcc:
      db:
        memory-mode: true
        datasource:
          username: sa
          password:
          url: jdbc:hsqldb:mem:saga
          initialization-mode: always
{code}
 
*Omega Modules*
 * Split OmegaSpringConfig into OmegaSagaSpringConfig and OmegaTccSpringConfig

*Omega AutoConfiguration*
 * OmegaSagaSpringConfig using omega.spec.names=saga
 * OmegaTccSpringConfig using omega.spec.names=tcc
 * TransactionAspectConfig class of the omega-spring-tx module uses 
ConditionalOnExpression to initialize beans

*Duplicate Code*
 * Create class EclipseLinkJpaConfiguration in test case to avoid dependency on 
class EclipseLinkJpaConfiguration in alpha-persistence-jpa module
* Because of the metrics API, each Spec module contains duplicate classes as 
follows(saga-xxx and tcc-xxx cannot be enabled at the same time)
  * AlphaMetricsEndpointImpl.java
  * MetricsService.java
  * APIv1Controller.java, APIv1Impl.java
  * SagaDbAPIv1Controller.java, SagaDbAPIv1Impl.java
  * TccDbAPIv1Controller.java, TccDbAPIv1Impl.java

 


> Refactoring the Alpha module using Spring SPI
> ---------------------------------------------
>
>                 Key: SCB-2425
>                 URL: https://issues.apache.org/jira/browse/SCB-2425
>             Project: Apache ServiceComb
>          Issue Type: Task
>          Components: Saga
>    Affects Versions: pack-0.7.0
>            Reporter: Lei Zhang
>            Assignee: Lei Zhang
>            Priority: Major
>
> The purpose of refactoring is to decouple distributed transaction 
> implementation
> *Alpha Module*
>  * Rename alpha-fsm to alpha-spec-saga-akka
>  * Add alpha-spec-saga-db
>  * Add alpha-spec-tcc-db
>  * Keep Acceptance module artifactId and directory name the same, e.g. rename 
> acceptance-pack-akka-spring to acceptance-pack-akka-spring-demo
>  * Rename persistence-jpa to alpha/alpha-persistence-jpa
> *Alpha Using Spring SPI*
>  * Load AlphaSpecXXXAutoConfiguration through spring.factories under each 
> module
>  * Configure the SPI module by parameters, likes alpha.spec.names=saga-db or 
> alpha.spec.names=saga-akka
> *Alpha Configuration parameters*
> {code:java}
> alpha:
>   spec:
>     names: saga-db
>     saga:
>       akka:
>         channel:
>           name: memory
>           memory:
>             max-length: -1
>           kafka:
>             topic: servicecomb-pack-actor-event
>             bootstrap-servers: 127.0.0.1:9092
>             consumer:
>               group-id: servicecomb-pack
>               auto.offset.reset: earliest
>             producer:
>               batch-size: 16384
>               retries: 0
>               buffer.memory: 33554432
>         repository:
>           name: elasticsearch
>           elasticsearch:
>             uris: http://localhost:9200
>             batch-size: 100
>             refresh-time: 5000
>       db:
>         datasource:
>           username: sa
>           password:
>           url: jdbc:hsqldb:mem:saga
>           initialization-mode: always
>         cluster:
>           enabled: true
>           type: jdbc
>           expire: 5000
>     tcc:
>       db:
>         memory-mode: true
>         datasource:
>           username: sa
>           password:
>           url: jdbc:hsqldb:mem:saga
>           initialization-mode: always
> {code}
>  
> *Omega Modules*
>  * Split OmegaSpringConfig into OmegaSagaSpringConfig and OmegaTccSpringConfig
> *Omega AutoConfiguration*
>  * OmegaSagaSpringConfig using omega.spec.names=saga
>  * OmegaTccSpringConfig using omega.spec.names=tcc
>  * TransactionAspectConfig class of the omega-spring-tx module uses 
> ConditionalOnExpression to initialize beans
> *Duplicate Code*
>  * Create class EclipseLinkJpaConfiguration in test case to avoid dependency 
> on class EclipseLinkJpaConfiguration in alpha-persistence-jpa module
>  * Because of the metrics API, each Spec module contains same classes as 
> follows(saga-xxx and tcc-xxx cannot be enabled at the same time)
> {code:java}
>   AlphaMetricsEndpointImpl.java 
>   MetricsService.java 
>   SagaAkkaAPIv1Controller.java, SagaAkkaAPIv1Impl.java 
>   SagaDbAPIv1Controller.java, SagaDbAPIv1Impl.java 
>   TccDbAPIv1Controller.java, TccDbAPIv1Impl.java
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to