91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Sharding-Proxy分庫分表和數據加密怎么實現

發布時間:2022-04-13 10:08:54 來源:億速云 閱讀:338 作者:iii 欄目:開發技術

這篇文章主要介紹“Sharding-Proxy分庫分表和數據加密怎么實現”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Sharding-Proxy分庫分表和數據加密怎么實現”文章能幫助大家解決問題。

    Sharding-Proxy分庫分表和數據加密

    主要將實際項目中使用shardingshpere-proxy的經歷經驗,總結分享一下。

    使用場景

    • 公司規劃研發了兩款針對政務新媒體和數字鄉村的SaaS平臺,作為新的利潤增長點。考慮到以后的用戶數量和數據數量,決定按照租戶(簽約客戶)進行分庫分表。對于一些敏感數據,例如身份證號、手機號等,使用數據庫級別的加密解密,不存儲明文數據。

    • 考察了網上已有的一些數據庫中間件和分庫分表解決方案,公司決定使用Sharding-Proxy作為分庫分表和數據加密的數據庫中間件。主要原因是,它對代碼的侵入性很小,開發人員也不需要關注它,減少了學習成本,對DBA也很友好。另一方面,ShardingSphere已進入Apache孵化器,它完全開源免費,社區也很活躍,版本迭代也很快。

    • 本次使用的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 數據庫連接,數據庫名稱

    • dataSources 數據源

    • rules 規則

    • !SHARDING 分庫分表規則

    • tables 表

    • actualDataNodes 實際對于庫表

    • databaseStrategy 分庫策略 none 不分庫分表

    • defaultDatabaseStrategy 默認分庫策略

    • defaultTableStrategy 默認分表策略

    • defaultKeyGenerateStrategy 默認主鍵策略

    • shardingAlgorithms 自定義分片算法

    • keyGenerators 主鍵生成策略

    config-encrypt.yaml
    • resources文件夾,conf文件夾下面

    • schemaName 數據庫連接,數據庫名稱

    • dataSources 數據源

    • rules 規則

    • !ENCRYPT 數據加密

    • encryptors 加密策略,可選擇AES或MD5,在下面具體字段可選則加密策略

    • aes_encryptor,aes可以配置加鹽

    • tables 表

    • columns 字段s

    • id_number 邏輯字段

    • plainColumn 原字段

    • cipherColumn 加密字段

    • encryptorName 加密策略

    • queryWithCipherColumn 查詢時是否使用加密字段

    其他

    • 可以下載源碼或者下載程序看看,里面的功能,都有配置文件案例,是注釋掉的,一款PostgreSQL的,一款MySQL

    • 目前就使用這2個功能,其他功能暫時沒研究,就不多說了

    • 實際使用時,分庫分表和數據加密是一起使用的,所以只用了一個配置文件,都放在rules下面

    • 后面我會把我的配置文件貼上去

    使用情況

    • 政務新媒體SaaS平臺暫時只使用分庫分表

    • 數字鄉村SaaS平臺,使用了分庫分表和數據加密

    • 分庫分表,主要做了基于租戶分庫,部分表,又根據某些業務字段做了分表

    • 分表策略,默認分8個表寫法algorithm-expression: monitor_record_${media_id % 8}

    • 我們基于租戶的哈希進行分庫,但對于某些租戶,又想指定數據庫,這就需要自定義分庫分表策略

    • 要求分庫支持哈希和指定,寫了自定義分庫策略類,有一個靜態map,解析執行SQL時,先從map里獲取,獲取不到,則根據哈希獲取

    • 數據加密,主要是添加加密字段和對歷史數據處理

    • 可以寫一個靜態方法,對已存在數據進行處理

    總結

    • sharding-proxy對于按照租戶分庫分表,以及數據加密,是完全支持的,足夠我們使用

    • 使用起來很簡單,下載最新穩定版安裝即可

    • 如果沒有自定義分庫分表策略要求,只使用已有的策略,那只需要修改配置文件部署即可

    • 如果需要自定義分庫分表策略,也不復雜,寫好類打包好,放入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:
          # 需要分庫的表,根據租戶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 數據源
          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 #分庫規則:
        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分庫分表和數據加密怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    张家港市| 彭泽县| 吴堡县| 靖宇县| 平湖市| 读书| 酒泉市| 富顺县| 马鞍山市| 方山县| 石阡县| 临漳县| 古丈县| 丰台区| 建瓯市| 理塘县| 文水县| 山东省| 永州市| 石河子市| 潍坊市| 金昌市| 新龙县| 三原县| 库伦旗| 泗洪县| 邵武市| 屏南县| 宜春市| 沂水县| 漳州市| 安乡县| 灵川县| 九寨沟县| 东兴市| 将乐县| 常山县| 铜陵市| 武义县| 保定市| 湘阴县|