You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@servicecomb.apache.org by "Lei Zhang (Jira)" <ji...@apache.org> on 2022/05/05 12:29:00 UTC

[jira] [Resolved] (SCB-2425) Refactoring the Alpha module using Spring SPI

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

Lei Zhang resolved SCB-2425.
----------------------------
    Fix Version/s: pack-0.7.0
       Resolution: Fixed

> 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
>             Fix For: pack-0.7.0
>
>
> 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*
> {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
> *Legacy Issue*
>  * [Duplicate Code]Create class EclipseLinkJpaConfiguration in test case to avoid dependency on class EclipseLinkJpaConfiguration in alpha-persistence-jpa module
>  * [Duplicate Code]Because of the metrics API, each Spec module contains same classes as follows
> {code:java}
>   AlphaMetricsEndpointImpl.java 
>   MetricsService.java 
>   SagaAkkaAPIv1Controller.java, SagaAkkaAPIv1Impl.java 
>   SagaDbAPIv1Controller.java, SagaDbAPIv1Impl.java 
>   TccDbAPIv1Controller.java, TccDbAPIv1Impl.java
> {code}
>  * saga-db saga-akka and tcc-db cannot be used together
>  * Refactor Redis and Rabbit channel configuration in saga-akka module
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.7#820007)