SAP Hybris电商系统与阿里云联合测试系列十读写分离

Posted 架构与技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAP Hybris电商系统与阿里云联合测试系列十读写分离相关的知识,希望对你有一定的参考价值。

关系型数据库Scalability一直是互联网和电商应用的难点,分库分表与读写分离成为架构师们手中的利器,实现方式通常有下面两种:代理模式和应用直连模式。



Hybris内置支持应用直连方式的读写分离,无须借助第三方中间件就可以实现读写分离(详见数据库可扩展性预研文档 https://github.com/colorzhang/hybris)


读写分离架构

在对数据库有少量写请求,但有大量的读请求的应用场景下,单个实例可能无法抵抗读取压力,甚至对主业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,RDS 支持在某个地域中创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,以此增加应用的吞吐量。(需要应用支持读写分离)


读写分离是Scale out Read的常见方式,如下图所示:

SAP Hybris电商系统与阿里云联合测试系列十读写分离

只读实例为单个物理节点的架构(没有备节点),采用 mysql 的原生复制功能,将主实例的更改同步到所有只读实例。


读写分离主要功能

读写分离通常具有如下功能,请勿与Hybris提供的功能一一对照:)

Feature list:

  • All transactional db call, go master (can force to slave) 强读走写

  • All non-transaction db call, go slave (can force to master) 弱读走读

  • Always master (numseries generator) 强制走写

  • Always slave 强制走读

  • Round robin balance slave

  • Delay and retry interval

  • If slave down, switch to master automatically

  • If master down, fail

  • Can specific which tables are splitting (inclusive or exclusive)

  • Supports all databases 支持所有hybris支持的数据库(Oracle, MySQL, SQL Server, HANA)


本次测试在阿里云上构建RDS-mysql主从部署如下:

SAP Hybris电商系统与阿里云联合测试系列十读写分离


配置Hybris启用读写分离

1)设置主从数据源(可以一主多从,本次测试是一主一从)


2)启用读写分离Filter


测试结果与分析

读写分离流量切割与应用密切相关,有些操作是不允许读写分离的比如序列生成器等,我的测试场景主要是浏览前端页面,在点击过程中读写分离流量比例能达到5:1(有一些背景SQL执行),总体流量接近1:1(按执行SQL数量计算)


潜在问题及对策

1)延迟问题,目前测试环境数据量和压力很小,利用率和延迟很小。


2)RDS目前限制,其实也是优势->简单

只读实例有以下功能限制:

  • 1 个主实例做多可以创建 5 个只读实例

  • 备份设置:不支持备份设置以及临时备份

  • 数据迁移:不支持数据迁移至只读实例

  • 数据库管理:不支持创建和删除数据库

  • 账号管理:不支持创建和删除账号,不支持为账号授权以及修改账号密码功能

  • 实例恢复:不支持通过备份文件或任意时间点创建临时实例,不支持通过备份集覆盖实例

  • 创建只读实例后,主实例将不支持通过备份集直接覆盖实例来恢复数据


重要的事情说三遍:RDS使用真简单,真方便,上云后DBA要失业了!!!


本篇是Hybris@AliCloud测试号外,大部分场景已经测试完了,突发奇想测试一下云上读写分离,于是乎半天时间搞定后,就有了今天这篇文章。


顺带公开我的测试站点 https://hybris.space/yacceleratorstorefront/ 请勿搞破坏:)


周末愉快!

以上是关于SAP Hybris电商系统与阿里云联合测试系列十读写分离的主要内容,如果未能解决你的问题,请参考以下文章

项目总结57:使用阿里云性能测试-电商系统并发测试

SAP 电商云 Spartacus UI SSR 单元测试里的 callFake

测试 SAP 电商云 Spartacus UI 3.4.x 和 4.3.x 的 guest checkout 功能

Squirrel 客户端与 SAP Hybris

阿里腾讯决战ToB“操作系统”

SAP Hybris的类型系统更改和ABAP的LOAD_PROGRAM_TABLE_MISMATCH