Bläddra i källkod

分片数据分片功能开发完成

wuxw 7 år sedan
förälder
incheckning
48cd77ef66

+ 75 - 0
CodeService/src/main/resources/dataSource.yml

@@ -0,0 +1,75 @@
+dataSources:
+  ds0: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8
+    username: hc_community
+    password: hc_community@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds0_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+  ds1: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+    username: TT
+    password: TT@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds1_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+
+shardingRule:
+  tables:
+    business_xxx:
+      actualDataNodes: ds${0..1}.business_community
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+
+  bindingTables:
+    - business_xxx
+
+  defaultDataSourceName: ds1
+  defaultDatabaseStrategy:
+    none:
+  defaultTableStrategy:
+    none:
+
+#  masterSlaveRules:
+#    ms_ds0:
+#     masterDataSourceName: ds0
+#     slaveDataSourceNames:
+#       - ds0_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+#   ms_ds1:
+#     masterDataSourceName: ds1
+#     slaveDataSourceNames:
+#       - ds1_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+props:
+  sql.show: true

+ 75 - 0
CommentService/src/main/resources/dataSource.yml

@@ -0,0 +1,75 @@
+dataSources:
+  ds0: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8
+    username: hc_community
+    password: hc_community@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds0_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+  ds1: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+    username: TT
+    password: TT@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds1_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+
+shardingRule:
+  tables:
+    business_xxx:
+      actualDataNodes: ds${0..1}.business_community
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+
+  bindingTables:
+    - business_xxx
+
+  defaultDataSourceName: ds1
+  defaultDatabaseStrategy:
+    none:
+  defaultTableStrategy:
+    none:
+
+#  masterSlaveRules:
+#    ms_ds0:
+#     masterDataSourceName: ds0
+#     slaveDataSourceNames:
+#       - ds0_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+#   ms_ds1:
+#     masterDataSourceName: ds1
+#     slaveDataSourceNames:
+#       - ds1_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+props:
+  sql.show: true

+ 0 - 60
CommunityService/src/main/resources/application.yml

@@ -1,63 +1,3 @@
 spring:
-  shardingsphere:
-    datasource:
-      #      names: ds_master_0,ds_master_1,ds_master_0_slave_0,ds_master_0_slave_1,ds_master_1_slave_0,ds_master_1_slave_1
-      names: ds_master_0,ds_master_1
-      #      ds_master_0_slave_0:
-      #        jdbc-url: jdbc:mysql://localhost:3306/demo_ds_master_0_slave_0?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
-      #        password:
-      #        type: com.zaxxer.hikari.HikariDataSource
-      #        driver-class-name: com.mysql.jdbc.Driver
-      #        username: root
-      ds_master_0:
-        driver-class-name: com.mysql.jdbc.Driver
-        type: com.alibaba.druid.pool.DruidDataSource
-        jdbc-url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8
-        username: hc_community
-        password: hc_community@12345678
-        minIdle: 5
-        validationQuery: SELECT 1 FROM DUAL
-        initialSize: 5
-        maxWait: 60000
-        filters: stat,wall,log4j
-        poolPreparedStatements: true
-      ds_master_1:
-        driver-class-name: com.mysql.jdbc.Driver
-        type: com.alibaba.druid.pool.DruidDataSource
-        jdbc-url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
-        username: TT
-        password: TT@12345678
-        minIdle: 5
-        validationQuery: SELECT 1 FROM DUAL
-        initialSize: 5
-        maxWait: 60000
-        filters: stat,wall,log4j
-        poolPreparedStatements: true
-    sharding:
-      tables:
-        business_community:
-          actual-data-nodes: ds_master_$->{0..1}.business_community
-          database-strategy:
-            inline:
-              sharding-column: community_id
-              algorithm-expression: ds_master_$->{Long.parseLong(community_id) % 2}
-        community:
-          actual-data-nodes: ds_master_$->{0..1}.community
-          database-strategy:
-            inline:
-              sharding-column: community_id
-              algorithm-expression: ds_master_$->{Long.parseLong(community_id) % 2}
-      default-database-strategy:
-        none:
-      default-table-strategy:
-        none:
-      default-datasource-name: ds_master_0
-#      master-slave-rules:
-#        ds_1:
-#          slave-data-source-names: ds_master_1_slave_0, ds_master_1_slave_1
-#          master-data-source-name: ds_master_1
-#        ds_0:
-#          slave-data-source-names: ds_master_0_slave_0, ds_master_0_slave_1
-#          master-data-source-name: ds_master_0
   profiles:
     active: dev

+ 49 - 4
CommunityService/src/main/resources/dataSource.yml

@@ -50,18 +50,63 @@ shardingRule:
         inline:
           shardingColumn: community_id
           algorithmExpression: ds${Long.parseLong(community_id) % 2}
-    community:
-      actualDataNodes: ds${0..1}.community
+    s_community:
+      actualDataNodes: ds${0..1}.s_community
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+    business_community_attr:
+      actualDataNodes: ds${0..1}.business_community_attr
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+    s_community_attr:
+      actualDataNodes: ds${0..1}.s_community_attr
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+    business_community_member:
+      actualDataNodes: ds${0..1}.business_community_member
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+    business_community_photo:
+      actualDataNodes: ds${0..1}.business_community_photo
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+    s_community_member:
+      actualDataNodes: ds${0..1}.s_community_member
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+    s_community_photo:
+      actualDataNodes: ds${0..1}.s_community_photo
       databaseStrategy:
         inline:
           shardingColumn: community_id
           algorithmExpression: ds${Long.parseLong(community_id) % 2}
   bindingTables:
-    - business_community,community
+    - business_community
+    - s_community
+    - business_community_member
+    - business_community_photo
+    - s_community_member
+    - s_community_photo
+    - business_community_attr
+    - s_community_attr
 
   defaultDataSourceName: ds0
   defaultDatabaseStrategy:
-    none:
+    inline:
+      shardingColumn: community_id
+      algorithmExpression: ds${community_id % 2}
   defaultTableStrategy:
     none:
 

+ 75 - 0
OrderService/src/main/resources/dataSource.yml

@@ -0,0 +1,75 @@
+dataSources:
+  ds0: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8
+    username: hc_community
+    password: hc_community@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds0_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+  ds1: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+    username: TT
+    password: TT@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds1_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+
+shardingRule:
+  tables:
+    business_xxx:
+      actualDataNodes: ds${0..1}.business_community
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+
+  bindingTables:
+    - business_xxx
+
+  defaultDataSourceName: ds1
+  defaultDatabaseStrategy:
+    none:
+  defaultTableStrategy:
+    none:
+
+#  masterSlaveRules:
+#    ms_ds0:
+#     masterDataSourceName: ds0
+#     slaveDataSourceNames:
+#       - ds0_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+#   ms_ds1:
+#     masterDataSourceName: ds1
+#     slaveDataSourceNames:
+#       - ds1_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+props:
+  sql.show: true

+ 75 - 0
ShopService/src/main/resources/dataSource.yml

@@ -0,0 +1,75 @@
+dataSources:
+  ds0: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8
+    username: hc_community
+    password: hc_community@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds0_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+  ds1: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+    username: TT
+    password: TT@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds1_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+
+shardingRule:
+  tables:
+    business_xxx:
+      actualDataNodes: ds${0..1}.business_community
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+
+  bindingTables:
+    - business_xxx
+
+  defaultDataSourceName: ds1
+  defaultDatabaseStrategy:
+    none:
+  defaultTableStrategy:
+    none:
+
+#  masterSlaveRules:
+#    ms_ds0:
+#     masterDataSourceName: ds0
+#     slaveDataSourceNames:
+#       - ds0_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+#   ms_ds1:
+#     masterDataSourceName: ds1
+#     slaveDataSourceNames:
+#       - ds1_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+props:
+  sql.show: true

+ 75 - 0
StoreService/src/main/resources/dataSource.yml

@@ -0,0 +1,75 @@
+dataSources:
+  ds0: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8
+    username: hc_community
+    password: hc_community@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds0_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+  ds1: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+    username: TT
+    password: TT@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds1_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+
+shardingRule:
+  tables:
+    business_xxx:
+      actualDataNodes: ds${0..1}.business_community
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+
+  bindingTables:
+    - business_xxx
+
+  defaultDataSourceName: ds1
+  defaultDatabaseStrategy:
+    none:
+  defaultTableStrategy:
+    none:
+
+#  masterSlaveRules:
+#    ms_ds0:
+#     masterDataSourceName: ds0
+#     slaveDataSourceNames:
+#       - ds0_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+#   ms_ds1:
+#     masterDataSourceName: ds1
+#     slaveDataSourceNames:
+#       - ds1_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+props:
+  sql.show: true

+ 75 - 0
UserService/src/main/resources/dataSource.yml

@@ -0,0 +1,75 @@
+dataSources:
+  ds0: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8
+    username: hc_community
+    password: hc_community@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds0_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+  ds1: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+    username: TT
+    password: TT@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds1_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+
+shardingRule:
+  tables:
+    business_xxx:
+      actualDataNodes: ds${0..1}.business_community
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+
+  bindingTables:
+    - business_xxx
+
+  defaultDataSourceName: ds1
+  defaultDatabaseStrategy:
+    none:
+  defaultTableStrategy:
+    none:
+
+#  masterSlaveRules:
+#    ms_ds0:
+#     masterDataSourceName: ds0
+#     slaveDataSourceNames:
+#       - ds0_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+#   ms_ds1:
+#     masterDataSourceName: ds1
+#     slaveDataSourceNames:
+#       - ds1_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+props:
+  sql.show: true

+ 75 - 0
WebService/src/main/resources/dataSource.yml

@@ -0,0 +1,75 @@
+dataSources:
+  ds0: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8
+    username: hc_community
+    password: hc_community@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds0_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+  ds1: !!com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.jdbc.Driver
+    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+    username: TT
+    password: TT@12345678
+    minIdle: 5
+    validationQuery: SELECT 1 FROM DUAL
+    initialSize: 5
+    maxWait: 60000
+    filters: stat,wall,log4j
+    poolPreparedStatements: true
+#  ds1_slave0: !!com.alibaba.druid.pool.DruidDataSource
+#    driverClassName: com.mysql.jdbc.Driver
+#    url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8
+#    username: TT
+#    password: TT@12345678
+#    connectionTimeoutMilliseconds: 30000
+#    idleTimeoutMilliseconds: 60000
+#    maxPoolSize: 50
+#    minPoolSize: 1
+#    maintenanceIntervalMilliseconds: 30000
+
+shardingRule:
+  tables:
+    business_xxx:
+      actualDataNodes: ds${0..1}.business_community
+      databaseStrategy:
+        inline:
+          shardingColumn: community_id
+          algorithmExpression: ds${Long.parseLong(community_id) % 2}
+
+  bindingTables:
+    - business_xxx
+
+  defaultDataSourceName: ds1
+  defaultDatabaseStrategy:
+    none:
+  defaultTableStrategy:
+    none:
+
+#  masterSlaveRules:
+#    ms_ds0:
+#     masterDataSourceName: ds0
+#     slaveDataSourceNames:
+#       - ds0_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+#   ms_ds1:
+#     masterDataSourceName: ds1
+#     slaveDataSourceNames:
+#       - ds1_slave0
+#     loadBalanceAlgorithmType: ROUND_ROBIN
+props:
+  sql.show: true

+ 22 - 0
java110-core/src/main/java/com/java110/core/proxy/ITestService.java

@@ -0,0 +1,22 @@
+package com.java110.core.proxy;
+
+/**
+ * @ClassName ITestService
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/5/15 15:53
+ * @Version 1.0
+ * add by wuxw 2019/5/15
+ **/
+public interface ITestService {
+
+    /**
+     * 获取
+     *
+     * @param param 参数
+     * @return 返回
+     */
+    String get(String param);
+
+    void set(String param);
+}

+ 34 - 0
java110-core/src/main/java/com/java110/core/proxy/ServiceInvocationHandler.java

@@ -0,0 +1,34 @@
+package com.java110.core.proxy;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+/**
+ * @ClassName ServiceInvocationHandler
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/5/15 15:54
+ * @Version 1.0
+ * add by wuxw 2019/5/15
+ **/
+public class ServiceInvocationHandler implements InvocationHandler {
+    private Class<?> interfaceType;
+
+    public ServiceInvocationHandler(Class<?> intefaceType) {
+        this.interfaceType = interfaceType;
+    }
+
+    @Override
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        if (Object.class.equals(method.getDeclaringClass())) {
+            System.out.println("if调用前");
+            return method.invoke(this, args);
+        }
+        System.out.println("调用前,参数:{}" + args);
+        Object result = Arrays.asList(args);
+        System.out.println("调用后,结果:{}" + result);
+        return result;
+    }
+
+}

+ 39 - 0
java110-core/src/main/java/com/java110/core/proxy/ServiceProxyFactory.java

@@ -0,0 +1,39 @@
+package com.java110.core.proxy;
+
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+
+
+/**
+ * @ClassName ServiceProxyFactory
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/5/15 15:56
+ * @Version 1.0
+ * add by wuxw 2019/5/15
+ **/
+@Component
+public class ServiceProxyFactory implements FactoryBean<ITestService> {
+
+    @Override
+    public ITestService getObject() throws Exception {
+        Class<?> interfaceType = ITestService.class;
+        InvocationHandler handler = new ServiceInvocationHandler(interfaceType);
+        return (ITestService) Proxy.newProxyInstance(interfaceType.getClassLoader(),
+                new Class[]{interfaceType}, handler);
+    }
+
+    @Override
+    public Class<?> getObjectType() {
+        return ITestService.class;
+    }
+
+    @Override
+    public boolean isSingleton() {
+        return true;
+    }
+
+}

+ 41 - 0
java110-core/src/test/java/com/java110/core/proxy/AppProxyTest.java

@@ -0,0 +1,41 @@
+package com.java110.core.proxy;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.lang.reflect.Proxy;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppProxyTest
+        extends TestCase {
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppProxyTest(String testName) {
+        super(testName);
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite() {
+        return new TestSuite(AppProxyTest.class);
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp() {
+
+        CglibProxy proxy = new CglibProxy();
+        //通过生成子类的方式创建代理类
+        ITestService proxyImp = (ITestService)proxy.getProxy(ITestService.class);
+        proxyImp.get("123213");
+        proxyImp.set("123123");
+    }
+}

+ 33 - 0
java110-core/src/test/java/com/java110/core/proxy/CglibProxy.java

@@ -0,0 +1,33 @@
+package com.java110.core.proxy;
+
+import org.assertj.core.internal.cglib.proxy.Enhancer;
+import org.assertj.core.internal.cglib.proxy.MethodInterceptor;
+import org.assertj.core.internal.cglib.proxy.MethodProxy;
+
+import java.lang.reflect.Method;
+
+/**
+ * @ClassName CglibProxy
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/5/15 16:50
+ * @Version 1.0
+ * add by wuxw 2019/5/15
+ **/
+public class CglibProxy implements MethodInterceptor {
+    private Enhancer enhancer = new Enhancer();
+    public Object getProxy(Class clazz){
+        //设置需要创建子类的类
+        enhancer.setSuperclass(clazz);
+        enhancer.setCallback(this);
+        //通过字节码技术动态创建子类实例
+        return enhancer.create();
+    }
+    //实现MethodInterceptor接口方法
+    public Object intercept(Object obj, Method method, Object[] args,
+                            MethodProxy proxy) throws Throwable {
+        System.out.println("代理" + method.getName());
+        //通过代理类调用父类中的方法
+        return "123213";
+    }
+}

+ 22 - 0
java110-core/src/test/java/com/java110/core/proxy/ITestService.java

@@ -0,0 +1,22 @@
+package com.java110.core.proxy;
+
+/**
+ * @ClassName ITestService
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/5/15 15:53
+ * @Version 1.0
+ * add by wuxw 2019/5/15
+ **/
+public interface ITestService {
+
+    /**
+     * 获取
+     *
+     * @param param 参数
+     * @return 返回
+     */
+    String get(String param);
+
+    void set(String param);
+}

+ 34 - 0
java110-core/src/test/java/com/java110/core/proxy/ServiceInvocationHandler.java

@@ -0,0 +1,34 @@
+package com.java110.core.proxy;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+/**
+ * @ClassName ServiceInvocationHandler
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/5/15 15:54
+ * @Version 1.0
+ * add by wuxw 2019/5/15
+ **/
+public class ServiceInvocationHandler implements InvocationHandler {
+    private Class<?> interfaceType;
+
+    public ServiceInvocationHandler(Class<?> intefaceType) {
+        this.interfaceType = interfaceType;
+    }
+
+    @Override
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        if (Object.class.equals(method.getDeclaringClass())) {
+            System.out.println("if调用前");
+            return method.invoke(this, args);
+        }
+        System.out.println("调用前,参数:{}" + args);
+        Object result = Arrays.asList(args);
+        System.out.println("调用后,结果:{}" + result);
+        return result;
+    }
+
+}

+ 39 - 0
java110-core/src/test/java/com/java110/core/proxy/ServiceProxyFactory.java

@@ -0,0 +1,39 @@
+package com.java110.core.proxy;
+
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+
+
+/**
+ * @ClassName ServiceProxyFactory
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/5/15 15:56
+ * @Version 1.0
+ * add by wuxw 2019/5/15
+ **/
+@Component
+public class ServiceProxyFactory implements FactoryBean<ITestService> {
+
+    @Override
+    public ITestService getObject() throws Exception {
+        Class<?> interfaceType = ITestService.class;
+        InvocationHandler handler = new ServiceInvocationHandler(interfaceType);
+        return (ITestService) Proxy.newProxyInstance(interfaceType.getClassLoader(),
+                new Class[]{interfaceType}, handler);
+    }
+
+    @Override
+    public Class<?> getObjectType() {
+        return ITestService.class;
+    }
+
+    @Override
+    public boolean isSingleton() {
+        return true;
+    }
+
+}

+ 33 - 24
java110-db/src/main/java/com/java110/db/DataSourceConfig.java

@@ -1,8 +1,19 @@
 package com.java110.db;
 
+import org.apache.shardingsphere.shardingjdbc.api.yaml.YamlMasterSlaveDataSourceFactory;
+import org.apache.shardingsphere.shardingjdbc.api.yaml.YamlShardingDataSourceFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
 
+import javax.servlet.Filter;
+import javax.sql.DataSource;
+import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.sql.SQLException;
 
 /**
@@ -11,10 +22,10 @@ import java.sql.SQLException;
 @Configuration
 public class DataSourceConfig {
 
-//    @Autowired
-//    private Filter statFilter;
-//
-//    private static final String SHARDING_YML_PATH = "dataSource.yml";
+    //@Autowired
+    private Filter statFilter;
+
+    private static final String SHARDING_YML_PATH = "dataSource.yml";
 
     /**
      * 构建dataSource
@@ -26,8 +37,8 @@ public class DataSourceConfig {
      * @throws IOException  IO 异常
      * @since 1.8
      */
-//    @Bean
-//    public DataSource dataSource() throws SQLException, IOException {
+    @Bean
+    public DataSource dataSource() throws SQLException, IOException {
 //        YamlShardingConfiguration config = parse();
 //        YamlShardingRuleConfiguration rule = config.getShardingRule();
 //        for (String key : config.getDataSources().keySet()) {
@@ -36,22 +47,20 @@ public class DataSourceConfig {
 //        }
 //        return ShardingDataSourceFactory.createDataSource(config.getDataSources(),
 //                rule.getShardingRuleConfiguration(), config.getConfigMap(), config.getProps());
-//    }
-//
-//    /**
-//     * 解析yml
-//     *
-//     * @return yaml 配置文件
-//     * @throws IOException                  IO 异常
-//     * @throws FileNotFoundException        文件未发现异常
-//     * @throws UnsupportedEncodingException 不支持编码异常
-//     */
-//    private MasterSlaveDataSourceFactory parse() throws IOException, FileNotFoundException, UnsupportedEncodingException {
-//        Resource certResource = new ClassPathResource(SHARDING_YML_PATH);
-//        try (
-//                InputStreamReader inputStreamReader = new InputStreamReader(certResource.getInputStream(), "UTF-8")
-//        ) {
-//            return YamlMasterSlaveDataSourceFactory;
-//        }
-//    }
+
+        return YamlShardingDataSourceFactory.createDataSource(getYmlFile());
+    }
+
+    /**
+     * 解析yml
+     *
+     * @return yaml 配置文件
+     * @throws IOException                  IO 异常
+     * @throws FileNotFoundException        文件未发现异常
+     * @throws UnsupportedEncodingException 不支持编码异常
+     */
+    private File getYmlFile() throws IOException {
+        Resource certResource = new ClassPathResource(SHARDING_YML_PATH);
+        return certResource.getFile();
+    }
 }

+ 1 - 1
java110-db/src/main/java/com/java110/db/druid/DuridConfig.java

@@ -37,7 +37,7 @@ public class DuridConfig {
      *  servlet注册
      * @return ServletRegistrationBean
      */
-    //@Bean
+    @Bean
     public ServletRegistrationBean statViewServlet() {
         //创建servlet注册实体
         ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");