Hedis - GET HBase via Redis

83
Hedis - GET HBase via Redis Kewang

Transcript of Hedis - GET HBase via Redis

Page 1: Hedis - GET HBase via Redis

Hedis - GET HBase via Redis

Kewang

Page 2: Hedis - GET HBase via Redis

2

Live DEMOhttps://www.youtube.com/watch?v=aAgJaqvgqLU

Page 3: Hedis - GET HBase via Redis

Who I am

● 王慕羣● Java / Node.js / AngularJS● SQL-like / HBase

GitHub: kewang

Facebook: kewangtw

Linkedin: kewangtw

Slideshare: kewang

Mail: [email protected]

Page 4: Hedis - GET HBase via Redis

What Mitake is

三竹資訊

Page 5: Hedis - GET HBase via Redis

What Mitake is

三竹資訊● 企業簡訊平台

Page 6: Hedis - GET HBase via Redis

What Mitake is

三竹資訊● 企業簡訊平台● 市佔 100%的行動下單

Page 7: Hedis - GET HBase via Redis

What Mitake is

三竹資訊● 企業簡訊平台● 市佔 100%的行動下單● 市佔 70%的行動銀行

Page 8: Hedis - GET HBase via Redis

What Mitake is

三竹資訊● 企業簡訊平台● 市佔 100%的行動下單● 市佔 70%的行動銀行● 企業內部應用、產壽險、金融相關政府機關

Page 9: Hedis - GET HBase via Redis

What Mitake is

三竹資訊● 企業簡訊平台● 市佔 100%的行動下單● 市佔 70%的行動銀行● 企業內部應用、產壽險、金融相關政府機關● 雲端:Qmi、 TechMe

Page 10: Hedis - GET HBase via Redis

What Mitake is

三竹資訊● 企業簡訊平台● 市佔 100%的行動下單● 市佔 70%的行動銀行● 企業內部應用、產壽險、金融相關政府機關● 雲端:Qmi、TechMe● 其他:兌彩券、台灣匯率、三竹小股王、行動股市 ...等

Page 11: Hedis - GET HBase via Redis

11

Agenda

● Redis brief● Scenario● Hedis (aka Hyper Redis)● Benchmark● TODO list

Page 12: Hedis - GET HBase via Redis

12

Redis brief

Page 13: Hedis - GET HBase via Redis

13

Redis brief

Page 14: Hedis - GET HBase via Redis

14

Redis brief

● Key-value pair

Page 15: Hedis - GET HBase via Redis

15

Redis brief

● Key-value pair● Value data type: String, List, Sets, Ordered sets,

Hashes

Page 16: Hedis - GET HBase via Redis

16

Redis brief

● Key-value pair● Value data type: String, List, Sets, Ordered sets,

Hashes● Binary-safe

Page 17: Hedis - GET HBase via Redis

17

Redis brief

● Key-value pair● Value data type: String, List, Sets, Ordered sets,

Hashes● Binary-safe● Single thread

Page 18: Hedis - GET HBase via Redis

18

Redis brief

● Key-value pair● Value data type: String, List, Sets, Ordered sets,

Hashes● Binary-safe● Single thread● In-memory database

Page 19: Hedis - GET HBase via Redis

19

ScenarioGet hot data, etc.

Page 20: Hedis - GET HBase via Redis

20

Redis

Page 21: Hedis - GET HBase via Redis

21

Redis

Application server

Redis Database

Client

Page 22: Hedis - GET HBase via Redis

22

Redis - Send request to AP

Application server

Redis Database

Client (1)

Page 23: Hedis - GET HBase via Redis

23

Redis - AP gets data from Redis

Application server

Redis Database

(2)

Client (1)

Page 24: Hedis - GET HBase via Redis

24

Redis - Redis has no data

Application server

Redis Database

(2)

Client (1)(3

)

Page 25: Hedis - GET HBase via Redis

25

Redis - Back to get data from DB

Application server

Redis Database

(4)(2)

Client (1)(3

)

Page 26: Hedis - GET HBase via Redis

26

Redis - AP got data

Application server

Redis Database

(4)(5)(2)

Client (1)(3

)

Page 27: Hedis - GET HBase via Redis

27

Redis - Store data to Redis

Application server

Redis Database

(6) (4)(5)(2)

Client (1)(3

)

Page 28: Hedis - GET HBase via Redis

28

Redis - Return data to client

Application server

Redis Database

(6) (4)(5)(2)

Client (7)(1)

(3)

Page 29: Hedis - GET HBase via Redis

29

Hedis

Page 30: Hedis - GET HBase via Redis

30

Hedis

Application server

Hedis Database

Client

Page 31: Hedis - GET HBase via Redis

31

Hedis - Send request to AP

Application server

Hedis Database

Client(1)

Page 32: Hedis - GET HBase via Redis

32

Hedis - AP gets data from Hedis

Application server

Hedis Database

Client

(2)

(1)

Page 33: Hedis - GET HBase via Redis

33

Hedis - Turns to get from DB

Application server

Hedis Database

Client

(2)

(3)

(1)

Page 34: Hedis - GET HBase via Redis

34

Hedis - Store data to Hedis

Application server

Hedis Database

Client

(2)

(3)

(4)

(1)

Page 35: Hedis - GET HBase via Redis

35

Hedis - Return data to AP

Application server

Hedis Database

Client

(2)

(3)

(4)

(5)

(1)

Page 36: Hedis - GET HBase via Redis

36

Hedis - Return data to client

Application server

Hedis Database

Client

(2)

(3)

(4)

(5)

(1)

(6)

Page 37: Hedis - GET HBase via Redis

37

HedisHyper Redis

Page 38: Hedis - GET HBase via Redis

38

Architecture

Page 39: Hedis - GET HBase via Redis

39

Architecture

Hedis

Page 40: Hedis - GET HBase via Redis

40

Architecture

Redis

Hedis

Page 41: Hedis - GET HBase via Redis

41

Architecture

Redis Connector

Hedis

Page 42: Hedis - GET HBase via Redis

42

Architecture

Redis Connector

MySQLHedis

Page 43: Hedis - GET HBase via Redis

43

Architecture

Redis Connector

MySQL

HBase

Hedis

Page 44: Hedis - GET HBase via Redis

44

Architecture

Redis Connector

MySQL

HBase

others

Hedis

Page 45: Hedis - GET HBase via Redis

45

Architecture

Redis Connector

MySQL

HBase

others

Hedis

Page 46: Hedis - GET HBase via Redis

46

Architecture

Redis Connector

MySQL

HBase

others

Hedis

Page 47: Hedis - GET HBase via Redis

47

Architecture

Redis Connector

MySQL

HBase

others

Hedis

Page 48: Hedis - GET HBase via Redis

48

Architecture

Redis Connector

MySQL

HBase

others

Hedis

Page 49: Hedis - GET HBase via Redis

49

Architecture

● Core● Connector● Database

Page 50: Hedis - GET HBase via Redis

50

Architecture

● Core - Redis● Connector● Database

Page 51: Hedis - GET HBase via Redis

51

Architecture

● Core - Redis● Connector - connect Redis and database together● Database

Page 52: Hedis - GET HBase via Redis

52

Architecture

● Core - Redis● Connector - connect Redis and database together● Database - any database (includes RDBMS &

NoSQL)

Page 53: Hedis - GET HBase via Redis

53

Configuration

Page 54: Hedis - GET HBase via Redis

54

Configuration

Page 55: Hedis - GET HBase via Redis

55

How to start Hedis up ?

Page 56: Hedis - GET HBase via Redis

56

How to start Hedis up ?

Page 57: Hedis - GET HBase via Redis

57

Commands - only GET currently

Page 58: Hedis - GET HBase via Redis

58

Commands - only GET currently

● GET "cdh1://user@kewang"

Page 59: Hedis - GET HBase via Redis

59

Commands - only GET currently

● GET "cdh1://user@kewang"– No exists: turns to get "kewang" rowkey at "user" table

on "cdh1" connector

Page 60: Hedis - GET HBase via Redis

60

Commands - only GET currently

● GET "cdh1://user@kewang"– No exists: turns to get "kewang" rowkey at "user" table

on "cdh1" connector– Exists: gets directly

Page 61: Hedis - GET HBase via Redis

61

Commands - another GET

Page 62: Hedis - GET HBase via Redis

62

Commands - another GET

● GET "cdh1://!user@kewang"

Page 63: Hedis - GET HBase via Redis

63

Commands - another GET

● GET "cdh1://!user@kewang"

Page 64: Hedis - GET HBase via Redis

64

Commands - another GET

● GET "cdh1://!user@kewang"– Always gets "kewang" rowkey at "user" table on "cdh1"

connector directly

Page 65: Hedis - GET HBase via Redis

65

Commands - another GET

● GET "cdh1://!user@kewang"– Always gets "kewang" rowkey at "user" table on "cdh1"

connector directly– Use ruby's bang sign ( ! ) concept, it will modify original

value

Page 66: Hedis - GET HBase via Redis

66

Benchmark

Page 67: Hedis - GET HBase via Redis

67

Latency - Lower is better

Page 68: Hedis - GET HBase via Redis

68

Latency - Lower is better

Page 69: Hedis - GET HBase via Redis

69

Request - Higher is better

Page 70: Hedis - GET HBase via Redis

70

Request - Higher is better

Page 71: Hedis - GET HBase via Redis

71

TODO list

Page 72: Hedis - GET HBase via Redis

72

TODO list

Page 73: Hedis - GET HBase via Redis

73

TODO list

● Fix memory leak

Page 74: Hedis - GET HBase via Redis

74

TODO list

● Fix memory leak● Support multiple Redis version

Page 75: Hedis - GET HBase via Redis

75

TODO list

● Fix memory leak● Support multiple Redis version● Support more commands

Page 76: Hedis - GET HBase via Redis

76

TODO list

● Fix memory leak● Support multiple Redis version● Support more commands● Support more databases

Page 77: Hedis - GET HBase via Redis

77

TODO list

● Fix memory leak● Support multiple Redis version● Support more commands● Support more databases● Support git

Page 78: Hedis - GET HBase via Redis

78

TODO list

● Fix memory leak● Support multiple Redis version● Support more commands● Support more databases● Support git● Add dockerfile

Page 79: Hedis - GET HBase via Redis

79

TODO list

● Fix memory leak● Support multiple Redis version● Support more commands● Support more databases● Support git● Add dockerfile● Redesign official website

Page 80: Hedis - GET HBase via Redis

80

Live DEMO

Page 81: Hedis - GET HBase via Redis

81

References

● http://hedis.io● http://redis.io

Page 82: Hedis - GET HBase via Redis

82

WE'RE HIRING !!!Backend, System, Web, ... etc.

Page 83: Hedis - GET HBase via Redis

83