欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Sharding-Proxy分庫分表和數(shù)據(jù)加密使用場景分析

 更新時間:2022年04月13日 09:34:01   作者:堅持是一種態(tài)度  
這篇文章主要介紹了Sharding-Proxy分庫分表和數(shù)據(jù)加密使用經(jīng)驗分享,通過場景模擬分析結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下

Sharding-Proxy分庫分表和數(shù)據(jù)加密

主要將實際項目中使用shardingshpere-proxy的經(jīng)歷經(jīng)驗,總結(jié)分享一下。

使用場景

  • 公司規(guī)劃研發(fā)了兩款針對政務新媒體和數(shù)字鄉(xiāng)村的SaaS平臺,作為新的利潤增長點??紤]到以后的用戶數(shù)量和數(shù)據(jù)數(shù)量,決定按照租戶(簽約客戶)進行分庫分表。對于一些敏感數(shù)據(jù),例如身份證號、手機號等,使用數(shù)據(jù)庫級別的加密解密,不存儲明文數(shù)據(jù)。
  • 考察了網(wǎng)上已有的一些數(shù)據(jù)庫中間件和分庫分表解決方案,公司決定使用Sharding-Proxy作為分庫分表和數(shù)據(jù)加密的數(shù)據(jù)庫中間件。主要原因是,它對代碼的侵入性很小,開發(fā)人員也不需要關注它,減少了學習成本,對DBA也很友好。另一方面,ShardingSphere已進入Apache孵化器,它完全開源免費,社區(qū)也很活躍,版本迭代也很快。
  • 本次使用的ShardingSphere-5.0

配置文件講解

server.yaml

  • resources文件夾,conf文件夾下面
  • 主要有注冊中心配置、登錄連接配置和基礎配置
mode:
  type: Cluster  # 集群
  repository:
    type: ZooKeeper  # 使用zookeeper
    props:
      namespace: governance_ds  
      server-lists: 192.168.1.100:2181
      retryIntervalMilliseconds: 50000
      timeToLiveSeconds: 60
      maxRetries: 3
      operationTimeoutMilliseconds: 50000
  overwrite: true 
  • mode.type: Cluster使用集群配置,單個部署也可以設置為Cluster,沒影響
  • mode.repository 配置存儲方式,可以選擇使用ZooKeeper
  • mode.overwrite,配置加載方式,本地配置是否覆蓋配置中心配置。true是可覆蓋,以本地為準,將本地配置同步到zookeeper;false則以zookeeper為準
  • 下面還有一些基礎配置,是否打印SQL等,暫時可都是要默認

config-sharding.yaml

  • resources文件夾,conf文件夾下面
  • schemaName 數(shù)據(jù)庫連接,數(shù)據(jù)庫名稱
  • dataSources 數(shù)據(jù)源
  • rules 規(guī)則
  • !SHARDING 分庫分表規(guī)則
  • tables 表
  • actualDataNodes 實際對于庫表
  • databaseStrategy 分庫策略 none 不分庫分表
  • defaultDatabaseStrategy 默認分庫策略
  • defaultTableStrategy 默認分表策略
  • defaultKeyGenerateStrategy 默認主鍵策略
  • shardingAlgorithms 自定義分片算法
  • keyGenerators 主鍵生成策略

config-encrypt.yaml

  • resources文件夾,conf文件夾下面
  • schemaName 數(shù)據(jù)庫連接,數(shù)據(jù)庫名稱
  • dataSources 數(shù)據(jù)源
  • rules 規(guī)則
  • !ENCRYPT 數(shù)據(jù)加密
  • encryptors 加密策略,可選擇AES或MD5,在下面具體字段可選則加密策略
  • aes_encryptor,aes可以配置加鹽
  • tables 表
  • columns 字段s
  • id_number 邏輯字段
  • plainColumn 原字段
  • cipherColumn 加密字段
  • encryptorName 加密策略
  • queryWithCipherColumn 查詢時是否使用加密字段

其他

  • 可以下載源碼或者下載程序看看,里面的功能,都有配置文件案例,是注釋掉的,一款PostgreSQL的,一款MySQL的
  • 目前就使用這2個功能,其他功能暫時沒研究,就不多說了
  • 實際使用時,分庫分表和數(shù)據(jù)加密是一起使用的,所以只用了一個配置文件,都放在rules下面
  • 后面我會把我的配置文件貼上去

使用情況

  • 政務新媒體SaaS平臺暫時只使用分庫分表
  • 數(shù)字鄉(xiāng)村SaaS平臺,使用了分庫分表和數(shù)據(jù)加密
  • 分庫分表,主要做了基于租戶分庫,部分表,又根據(jù)某些業(yè)務字段做了分表
  • 分表策略,默認分8個表寫法algorithm-expression: monitor_record_${media_id % 8}
  • 我們基于租戶的哈希進行分庫,但對于某些租戶,又想指定數(shù)據(jù)庫,這就需要自定義分庫分表策略
  • 要求分庫支持哈希和指定,寫了自定義分庫策略類,有一個靜態(tài)map,解析執(zhí)行SQL時,先從map里獲取,獲取不到,則根據(jù)哈希獲取
  • 數(shù)據(jù)加密,主要是添加加密字段和對歷史數(shù)據(jù)處理
  • 可以寫一個靜態(tài)方法,對已存在數(shù)據(jù)進行處理

總結(jié)

  • sharding-proxy對于按照租戶分庫分表,以及數(shù)據(jù)加密,是完全支持的,足夠我們使用
  • 使用起來很簡單,下載最新穩(wěn)定版安裝即可
  • 如果沒有自定義分庫分表策略要求,只使用已有的策略,那只需要修改配置文件部署即可
  • 如果需要自定義分庫分表策略,也不復雜,寫好類打包好,放入ext-lib下即可
  • 配置文件部分示例
schemaName: digital_village
dataSources:
  ds:
    url: jdbc:postgresql://192.168.1.xxx:5432/digital_village?currentSchema=public&serverTimezone=UTC&useSSL=false
    username: postgres
    password: xxxxxx
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 120
    minPoolSize: 1
  ds_0:
    url: jdbc:postgresql://192.168.1.xxx:5432/digital_village_0?currentSchema=public&serverTimezone=UTC&useSSL=false
  ds_1:
    url: jdbc:postgresql://192.168.1.xxx:5432/digital_village_1?currentSchema=public&serverTimezone=UTC&useSSL=false
    password: xxxxx
rules:
  - !SHARDING
    tables:
      # 需要分庫的表,根據(jù)租戶id分庫
      cms_basic_info:
        actualDataNodes: ds_${0..3}.cms_basic_info
      cms_column:
        actualDataNodes: ds_${0..3}.cms_column
      cms_content:
        actualDataNodes: ds_${0..3}.cms_content
      cms_content_text:
        actualDataNodes: ds_${0..3}.cms_content_text
      cms_menu_column_bind:
        actualDataNodes: ds_${0..3}.cms_menu_column_bind
      cms_message_board:
        actualDataNodes: ds_${0..3}.cms_message_board
      # 不需要分庫分表的表,全部存儲在 ds 數(shù)據(jù)源
      auth_cfg_catalog_data_permission:
        actualDataNodes: ds.auth_cfg_catalog_data_permission
        databaseStrategy: 
          none:
      auth_cfg_column_data_permission:
        actualDataNodes: ds.auth_cfg_column_data_permission
        databaseStrategy:
      
    # 默認分庫策略
    defaultDatabaseStrategy:
      standard:
        shardingColumn: customer_id  #分庫字段
        shardingAlgorithmName:  customer_id_inline #分庫規(guī)則:
    defaultTableStrategy:
      none:
    # 默認主鍵策略
    defaultKeyGenerateStrategy:
      column: id
      keyGeneratorName: snowflake
    # 自定義分片算法
    shardingAlgorithms:
      customer_id_inline:
        type: CLASS_BASED
        props:
          strategy: standard
          algorithmClassName: cn.lonsun.dv.DigitalVillageShardingAlgorithm
    # 主鍵生成策略
    keyGenerators:
      snowflake:
        type: SNOWFLAKE
          worker-id: 123
  - !ENCRYPT
    encryptors:
      aes_encryptor:
        type: AES
          aes-key-value: xxxwwaS213123SAD
      md5_encryptor:
        type: MD5
      party_position:
        columns:
          mobile:
            plainColumn: mobile
            cipherColumn: mobile_cipher
            encryptorName: aes_encryptor
      village_population:
          id_number:
            plainColumn: id_number
            cipherColumn: id_number_cipher
    queryWithCipherColumn: true

到此這篇關于Sharding-Proxy分庫分表和數(shù)據(jù)加密的文章就介紹到這了,更多相關Sharding-Proxy分庫分表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Seata?環(huán)境搭建部署過程

    Seata?環(huán)境搭建部署過程

    Seata是一個分布式事務,seata服務端也是一個微服務,需要和其他微服務一樣需要注冊中心和配置中心,這篇文章主要介紹了Seata?環(huán)境搭建,需要的朋友可以參考下
    2022-10-10
  • Java基礎之java泛型通配符詳解

    Java基礎之java泛型通配符詳解

    Java 泛型(generics)是 JDK 5 中引入的一個新特性, 泛型提供了編譯時類型安全檢測機制,該機制允許開發(fā)者在編譯時檢測到非法的類型,今天通過本文給大家介紹java泛型通配符的相關知識,感興趣的朋友一起看看吧
    2021-07-07
  • SpringBoot整合Mybatis Plus實現(xiàn)基本CRUD的示例代碼

    SpringBoot整合Mybatis Plus實現(xiàn)基本CRUD的示例代碼

    Mybatis Plus是在Mybatis的基礎上的增強,使得我們對一些基本的CRUD使用起來更方便,本文主要介紹了SpringBoot整合Mybatis Plus實現(xiàn)基本CRUD的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • 全面解析Spring Security 內(nèi)置 Filter

    全面解析Spring Security 內(nèi)置 Filter

    這篇文章主要介紹了Spring Security 內(nèi)置 Filter的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot集成E-mail發(fā)送各種類型郵件

    SpringBoot集成E-mail發(fā)送各種類型郵件

    這篇文章主要為大家詳細介紹了SpringBoot集成E-mail發(fā)送各種類型郵件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Java正則表達式之全量匹配和部分匹配

    Java正則表達式之全量匹配和部分匹配

    正則表達式異常強大,一直理解不深,用的也不深,這次項目中嘗試,體會到了它的強大之處,這篇文章主要給大家介紹了關于Java正則表達式之全量匹配和部分匹配的相關資料,需要的朋友可以參考下
    2023-06-06
  • SpringCloud之消息總線Spring Cloud Bus實例代碼

    SpringCloud之消息總線Spring Cloud Bus實例代碼

    這篇文章主要介紹了SpringCloud之消息總線Spring Cloud Bus實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java操作另一個Java程序使其重啟的簡單實現(xiàn)

    Java操作另一個Java程序使其重啟的簡單實現(xiàn)

    下面小編就為大家?guī)硪黄狫ava操作另一個Java程序使其重啟的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • IDEA中Services欄不顯示的解決方案小結(jié)

    IDEA中Services欄不顯示的解決方案小結(jié)

    正常編譯完一個SpringBoot或者SringCloud項目之后,Services都會顯示出你有哪些服務,如果沒有services欄怎么解決呢?下面小編給大家分享IDEA中Services欄不顯示的解決方案小結(jié),感興趣的朋友一起看看吧
    2021-08-08
  • spring security中的csrf防御原理(跨域請求偽造)

    spring security中的csrf防御原理(跨域請求偽造)

    這篇文章主要介紹了spring security中的csrf防御機制原理解析(跨域請求偽造),本文通過實例代碼詳解的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12

最新評論