Documente Academic
Documente Profesional
Documente Cultură
Winston Zhang
Nov 28, 2015
QQ279966750
52hybris.com
Agenda
1.
2.
3.
4.
Database Sharding
5.
Hybris recommendation
App
App
NoSQL
Search
Search
Database
Database
Cache
Web
Web
Service
Service
Service
CDN
Cache
Cache
Service
SQL
Database
Application
1
Decorator Pattern
Proxy Pattern
Composite Pattern
(scale up)
(scale out)
Database
Scalability
IOE
Hybris
[y]
3
Code Aspect
When
How
1
[y]
Spring AOP
Filter
DataSource (master/slave)
tenant.getDataSource()
@Override
public HybrisDataSource getDataSource()
{
// this is thread safe because getMasterDataSource() relies on volatile 'state'
HybrisDataSource ret = getMasterDataSource();
if (hasAltDataSource())
{
final DataSourceSelection currentAlternativeDS = getThreadDataSource();
if (currentAlternativeDS != null)
{
// allow alternative data source only if
// - it has no connection error
// - is is master or forceMaster mode is not active
if (currentAlternativeDS.canUseDataSource())
{
ret = currentAlternativeDS.getDataSource();
}
}
}
return ret;
}
Tips
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)
M
Scale out Write
M
S
M
S
Hybris
db.url=jdbc:mysql:loadbalance://node01:3306,node02:3306,node03:3306/hybris?
useConfigs=maxPerformance&
characterEncoding=utf8&
loadBalanceConnectionGroup=first&
loadBalanceEnableJMX=true
db.url=jdbc:mysql://node02:3306,node03:3306,node01:3306/hybris?
useConfigs=maxPerformance&
characterEncoding=utf8&
failOverReadOnly=false&
autoReconnect=true
jdbc:mysql://
address=(type=master)(host=master1host),
address=(type=master)(host=master2host),
address=(type=slave)(host=slave1host)
/database
Is it enough?
S
M
S
S
M
M
S
S
M
M
S
S
S
Database sharding
3
4
WCMS
Decorator
TDDL
MySQL Fabric
MySQL Proxy
Vitess
Proxy
Composite
PoC deployment
hybris
hybris
MyCAT
Hybris
Hybris
Backend
Hybris
ID
Hybris
Frontend
MyCAT
...
Frontend
PK:
...
ID
Join
:
: ,
: (Table Group)Join
: Join,
,Join
Sharding key
ID
ID
ID
ID
ID
ID
ID
ID ID
baseProd
Table_bid
buyerID % 4
1
0
2
2
0
3
3
0
4
4
0
5
8
4
0
Table_sid
sellerID % 4
7
3
0
8
4
0
3
0
4
4
0
5
2
0
3
Load balancer
Firewall
R
S
Redis cluster
S
SolrCloud
M
...
MariaDB cluster
hybris
MyCat
SolrCloud
hybris
hybris
SAP hybris
MyCat
Accenture CDC
1.
2.
DRDS
3.
DRDS
4.
MyCAT
5.
MariaDB
6.
Oracle2015
THANK YOU