Apache ShardingSphere 企業行|走進怪獸充電
前段時間,Apache ShardingSphere 核心技術團隊應邀來到位於上海的怪獸充電公司總部,PMC Chair 張亮與怪獸充電的技術同學在 ShardingSphere 場景解決方案、開源生態建設等話題方面展開了深度交流與探討。
作為國內共享充電寶領域的領軍企業之一,怪獸充電立足於整個行業,在資料分片層面早有需求。怪獸充電從 2017 年時就開始應用 Sharding-JDBC,主要應用場景是分庫分表,ShardingSphere-Proxy 則主要被應用於測試場景,並沒有被部署在真實生產環境當中。
怪獸充電技術團隊在使用 Apache ShardingSphere 的過程中也遇到了一些問題,如需要將研發所寫的分庫分表策略集中在一個檔案後再配置到 Proxy 中以形成一套新的資料庫,在分庫分表之後進行資料查寫操作相對繁瑣,需要額外設計許多 binlog、閾值管理等工作。在本次交流中,雙方著重對以下這些使用場景展開了討論。
如何保證加解密過程中金鑰的安全性
Apache ShardingSphere 的加解密功能同分片類似,都是將使用的決策交給了使用者,靈活度很高。
加密是用加密規則將資料變形,以達到安全控制目的。Apache ShardingSphere 內建了部分的加密演算法以及國密演算法。如果不希望 ShardingSphere 在本地配對金鑰,使用者可以自定義加密演算法。
在效能層面,資料加解密過程是否會對業務效能產生較大的影響,其關鍵在於加解密演算法本身。如果演算法本身優化的不夠好,就會拖慢資料加解密的整體效率,另一方面解密資料的力度也會對效能產生影響。一般在沒有額外加密演算法損耗效能的情況下,Apache ShardingSphere 加解密能力對於業務的損耗會被控制在 10% 以內。
擴容時如何減少資料的遷移量?是否考慮過一致性雜湊演算法?
目前 Apache ShardingSphere 在擴容方面做得還相對粗糙,是計劃未來進行優化的方向之一。在當前版本中,Apache ShardingSphere 在擴容時沒有考慮資料是否需要被遷移的問題,因此往往需要對所有資料進行遷移,這無疑加大了資料庫擴容之外工作量。未來 ShardingSphere 將會實現更加細粒度的遷移,使用者只需遷移定量的資料。此外基於 range 擴容、在固定時間建表擴容等操作,可以不做遷移操作直接擴表。
關於一致性雜湊演算法,這其實是分片演算法的一部分。如果分片採用的是一致性雜湊演算法,那麼資料遷移過程就相對簡單。如果是 mod,那就需要將資料全部遷移或只遷移一半。另外,現在 Apache ShardingSphere 實現的是邏輯遷移,未來也在考慮實現物理遷移的方式。先做預分片,建立邏輯庫,在建好的邏輯庫中進行分片。如果一個數據庫裡建立 100 個邏輯庫、分 100 片,未來擴容時只需要用物理遷移的方式將其中的 50 片遷移到新的資料庫即可。
共建 ShardingSphere 開源生態
在交流過程中,發現怪獸充電的許多需求與 Apache ShardingSphere 部分規劃都不謀而合。雙方也約定未來將在社群層面展開合作,怪獸充電也將積極在 Apache ShardingSphere 社群中貢獻自己的力量,怪獸充電自主研發了一款查詢平臺,依賴 information schema 裡的資料來自動生成關聯表。但目前 Apache ShardingSphere 在這方面的支援度還不夠友好,未來怪獸充電技術團隊也將與 Apache ShardingSphere 社群聯絡起來,共同梳理 information schema 功能實現的優先順序。
此外包括訂單業務下的分片鍵改動、資料加解密等方面的需求,後續 Apache ShardingSphere 社群也將與怪獸充電團隊保持互動,進一步豐富社群生態。
【聯絡我們】
如果您在業務中有應用 Apache ShardingSphere,想要快速瞭解、接入 Apache ShardingSphere 5.0 新生態,希望藉此機會在團隊內部舉辦一場關於 Apache ShardingSphere 的技術分享,歡迎在評論區留下您的姓名、公司、職位、電話等資訊,或掃描下方二維碼新增官方小助手,備註“走進企業”,會有專人與您對接。
在溝通過後如果雙方認為產品和場景均非常匹配,Apache ShardingSphere 社群的核心團隊將會走進您的企業,與各條研發線的工程師們現場溝通,解答關於 Apache ShardingSphere 的任何疑問。