ShardingSphere 在数十个联通政务热线场景中的应用:稳定、高效、可复制

联通数科整合中国联通”云、大、物、智、链、安”(云计算、大数据、物联网、人工智能、区块链、安全)等能力,面向智慧城市、数字政府、工业互联网、生态环保、文化旅游等领域,联通数科已积累大量行业标杆案例,成功为客户提供更加丰富、专业的产品和服务。

一、项目背景

随着”互联网+政务服务”政策的持续发力,越来越多的地方政府开始着手打造”互联网+”环境下的政务服务平台。

近年来,联通数科先后助力数十个政务热线平台上线,以提升政务服务能力,部分项目如下图。

ShardingSphere 在数十个联通政务热线场景中的应用:稳定、高效、可复制

政务热线业务有并发高、数据量大的特点,我们每拨打一次政务热线,即产生一条工单记录。相比以往,疫情期间的热线业务量更是翻了数倍。

在政务热线的工单模块中,为满足大规模、海量数据以及高稳定的业务需求,联通数科采用 ShardingSphere 对工单信息进行分片存储,在政民互动的桥梁中构建坚固的桥墩

二、业务挑战

政务热线是政府与企业、群众互动的主要渠道,以单一号码面对公众,提供 7 * 24 服务。除受理工单外,还包括了话务、知识库、语音对答及智能坐席等业务。

在系统规划阶段,数据库层作为业务系统的基石,技术选型过程更为谨慎。系统的稳定是硬性指标,其次是性能,性能直接影响热线业务的服务能力,同时还要具备易于维护和管理的特点,便于系统升级及后台维护。

在数据库架构选型中,政务热线系统对架构要求如下:

  • 成熟稳定
  • 高性能
  • 易维护
  • 业务代码低耦合

三、选择 ShardingSphere 的理由

经过技术团队多轮调研测试,包括稳定性、产品功能、接入方式及性能等,最终选择”ShardingSphere + MySQL”分布式数据库解决方案

  • 理念先进

随业务应用场景多元化发展,数据库已呈碎片化趋势,「 Database Plus」旨在数据库上层建立标准和生态,为数据库提供增量能力,可防止数据库绑定、实现自主可控,突破原有数据库功能局限,提升数据基础设施整体功能上限。

  • 成熟稳定/案例多

ShardingSphere 于 2016 年开源,经过多年的研发迭代,产品历经多个头部互联网大型场景打磨,成熟稳定、值得信赖。

  • 功能全面

ShardingSphere 除了具备 Sharding 能力外,数据加解密和影子库的功能也是作为联通技术团队评估的指标,通过一套技术栈既可解决安全和压测的场景需求。ShardingSphere 为政务热线系统建设及架构扩展,提供了更多的能力支持。

  • 高兼容/接入方便

ShardingSphere 与 MySQL 协议兼容,语法支持度也非常高,在开发过程中几乎不用考虑 SQL 的支持问题,接入非常方便。

  • 高性能

政务热线忙时有数千坐席在线,工单记录以千万记录为起始单位,对性能有明确的要求。ShardingSphere-JDBC 定位为轻量级的 Java 框架,压测结果数据理想,可满足政务系统服务能力要求。

  • 易运维

在 JDBC 良好的性能基础之上,ShardingSphere 还提供了对运维人员友好的 Proxy,使用常用的客户端即可直接访问,上手维护较容易。

除了以上五个维度的权衡,选型中也参考了其他数据库中间件产品,以下表格是 ShardingSphere 和 Mycat 的比对。

Apache ShardingSphere Mycat 开源协议 Apache-2.0 GPL-2.0/GPL-3.0 接入端 客户端/代理端 代理端 数据库支持 客户端:任意

代理端:MySQL/PG/openGauss MySQL、Oracle、DB2、SQL Server、PostgreSQL 等 性能 客户端:损耗低

代理端:损耗高 损耗高 读写分离 有 有 数据加密 有 无 全链路压测 有 无 社区成熟度 Apache 软件基金会

信通院可信认证

社区活跃度高 个人/三方社区

社区活跃度一般 商业公司支持 有 无

四、解决方案

由于”ShardingSphere+MySQL “具备稳定、易用及性能极致等特点,该方案在联通数科的多个政务热线项目中复制使用。

  • 部署方式

ShardingSphere-JDBC 和 ShardingSphere-Proxy 混合使用的方式,兼顾了系统性能和可维护性。

  • 分片键/分片算法

政务热线的工单表相对较大,且使用逻辑简单,因此在分片设计上,选取工单 ID 作为分片键,通过哈希算法分布数据。

  • 迁移

新建项目不涉及历史数据,因此无需考虑数据迁移环节,上线即直接使用。

  • 实施过程

回忆数个已上线的项目,由于技术方案评估较全面,且多次复制方案,实施过程并没有遇到”坑”。

  • 系统架构

政务热线业务模块采用了微服务架构,节点在十几到几十不等,以具体省市规模决定。在数据库层,使用物理机部署 3 节点 MHA,每个政务热线系统一般需要 4 套 MHA 来支撑业务。

ShardingSphere 在数十个联通政务热线场景中的应用:稳定、高效、可复制

五、用户收益

  • 业务角度
  • 支持客户端模式,最大化保证了政务热线 对性能的要求
  • 系统稳定,为业务连续性带来有力的支撑。
  • 研发角度
  • 兼容良好,兼容主流数据库 SQL 语法,对接即可使用;
  • 功能全面,读写分离、数据加密及全链路压测方案,系统扩展性强。
  • 运维角度
  • 支持代理端模式,为运维人员提供了 良好的维护入口
  • 技术选型角度
  • 防止数据库绑定,为未来升级提供了足够的灵活度支撑。

六、总结

通过联通数科政务热线的多个案例,验证了 ShardingSphere 在政务场景的能力,也进一步说明了 ShardingSphere 无行业限制的特点。

目前我国数字政府建设已进入全面提速阶段,联通数科和 ShardingSphere 通力合作,希望助力更多政务热线项目落地,打造更多高效、便捷和安全的政务热线。

如果大家对 Apache ShardingSphere 有任何疑问或建议,欢迎在 GitHub issue 列表提出,或可前往中文社区交流讨论。

GitHub issuehttps://github.com/apache/shardingsphere/issues/

5.1.2 版本下载链接https://shardingsphere.apache.org/document/current/cn/downloads/

贡献指南https://shardingsphere.apache.org/community/cn/contribute/

中文社区https://community.sphere-ex.com/

SphereEx 官网https://www.sphere-ex.com

欢迎添加社区经理微信(ss_assistant_1)加入交流群,与众多 ShardingSphere 爱好者一同交流

Original: https://www.cnblogs.com/sphereex/p/16470460.html
Author: SphereEx
Title: ShardingSphere 在数十个联通政务热线场景中的应用:稳定、高效、可复制

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621484/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java扫描某个包下的所有java类并加载

    最近在学习java的反射和注解,实际情景中需要扫描某个包下的所有java类,然后使用类加载器加载类。 基本思路,获得程序的路径扫描src下某个包内的子包和java类,实现也比较简单…

    数据库 2023年6月11日
    0103
  • Spark学习(1) Spark入门

    什么事spark Spark是一种快速、通用、可扩展的大数据计算引擎.项目是用Scala进行编写,基于内存计算的 包括交互式查询和流处理 spark内置项目 Spark SQL:是…

    数据库 2023年6月16日
    091
  • 粗粒度服务的执行时间统计算法实现及问题推广

    3.1 算法一:逐一合并算法 3.1.1 算法描述 如图3.我们先将所有的时间片段按照起始时刻排序,后面的处理过程即依次判定相邻两个时间片段的三种关系,并将统计时间进行合并,合并的…

    数据库 2023年6月14日
    0106
  • Java根据Freemarker模板生成Word文件

    准备模板 模板 + 数据 = 模型 1、将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2、将.xml文件重命名为.f…

    数据库 2023年6月14日
    098
  • MySQL 数据库中的数据类型

    整数类型 标准 SQL 中支持 INTEGER 和 SMALLINT 这两种类型,MySQL 数据库除了支持这两种类型以外,还扩展支持了 TINYINT、MEDIUMINT 和 B…

    数据库 2023年5月24日
    061
  • 关于互联网通信流程–架构–资源文件等

    互联网通信流程: 客户端 ——–服务端 互联网通&amp…

    数据库 2023年6月11日
    089
  • JUC学习笔记(五)

    创建线程的方法-一种是通过创建 Thread 类,另一种是通过使用 Runnable 创建线程。但是,Runnable 缺少的一项功能是,当线程终止时(即 run()完成时),我们…

    数据库 2023年6月6日
    0130
  • Vue3提高效率小技巧

    问题1:Vue3使用了setup API,无法访问到this,虽然提供了getCurrentInstance API,但访问全局变量时感觉比Vue2使用方式更繁琐了,因此想了个捷径…

    数据库 2023年6月11日
    093
  • SQL基础语法

    一:构建数据库和表的语法,字段数据类型 [En] One: syntax for building database and table, field data type 1:建库…

    数据库 2023年5月24日
    0126
  • 为Typora配置Gitee图床

    安装Typora 官网下载直接安装:https://www.typora.io/#download 编辑Typora图像设置 说明: 打开:文件–>偏好设置&#8…

    数据库 2023年6月11日
    0158
  • IO流学习笔记

    IO流就是以流的方式进行输入输出 IO 流 Input Output Stream(输入输出流):以流的方式进行输入输出与文件或数据交互的内容称为 IO 流,在 JDK 中 jav…

    数据库 2023年6月11日
    083
  • Java实现平滑加权轮询算法–降权和提权

    上一篇讲了普通轮询、加权轮询的两种实现方式,重点讲了平滑加权轮询算法,并在文末留下了悬念: 节点出现分配失败时降低有效权重值;成功时提高有效权重值(但不能大于weight值)。 本…

    数据库 2023年6月6日
    093
  • MySQL8.0解决“MySQL 服务无法启动。 服务没有报告任何错误。”

    TL;NRs 初始化服务时最好使用 mysqld –initialized –console命令; MySQL8.0的配置变量与MySQL5.7不同, [mysqld]下面设置…

    数据库 2023年5月24日
    0142
  • zabbix的基础使用

    zabbix的基础使用 创建zabbix监控服务 环境 IP 要安装的应用 服务器 192.168.111.135 lamp架构 zabbix server zabbix agen…

    数据库 2023年6月14日
    083
  • JDK自带线程池学习

    JDK自带线程池 线程池的状态 线程有如下状态 RUNNING状态:Accept new tasks and process queued tasks SHUTDOWN状态:Don…

    数据库 2023年6月11日
    0112
  • Mybatis缓存机制

    MyBatis是常见的 Java数据库访问层框架。在日常工作中,多数情况下是使用 MyBatis的默认缓存配置减轻数据库压力,提高数据库性能,但是 MyBatis缓存机制有一些不足…

    数据库 2023年6月11日
    0127
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球