Ua wehe ʻo PayPal i ka code JunoDB DBMS

Ua wehe ʻo PayPal i ke kumu kumu o ka DBMS JunoDB hoʻomanawanui hewa, nāna e hoʻoponopono i ka ʻikepili i kahi ʻano waiwai kī. Ua hoʻolālā mua ʻia ka ʻōnaehana me ka palekana kiʻekiʻe, ka scalability ākea, ka hoʻomanawanui hewa, a me ka hiki ke mālama i nā haneli haneli o nā pilina like me nā latencies wānana i ka noʻonoʻo. Ma PayPal, kokoke i nā lawelawe āpau, mai ka hoʻohana ʻana i nā mea hoʻohana i ka hoʻoili ʻana i nā hana kālā, pili iā JunoDB. Ua kākau ʻia ke code papahana ma Go (kahi waihona mea kūʻai aku Java) a ua māhele ʻia ma lalo o ka laikini Apache 2.0. E ʻae ka hoʻomohala hou i nā hoʻoponopono, hoʻomaikaʻi a me nā loli mai ke kaiāulu.

Hoʻokumu ʻia ka hoʻolālā ʻana o JunoDB ma ka hoʻohana ʻana i kahi mea hoʻohālikelike ukana e ʻae i nā noi mai nā noi a ka mea kūʻai aku a hāʻawi iā lākou i waena o nā kikowaena proxy e komo like i kahi pūʻulu o nā kikowaena mālama i ka wā e hoʻokō ʻia ai ka noi. Hoʻokumu kēlā me kēia kikowaena proxy i nā pilina i nā kikowaena mālama a pau i ka manawa hoʻokahi a hoʻouna i nā noi i kahi pūʻulu o nā kikowaena mālama e pili ana i ka index partition, i mālama ʻia i loko o ka ʻōnaehana hoʻolaha i hoʻonohonoho ʻia etcd.

Ua wehe ʻo PayPal i ka code JunoDB DBMS

Hoʻokaʻawale ʻia ka ʻikepili a hoʻopili ʻia i nā node e mālama ai me ka hashing, kahi e hōʻemi ai i ka neʻe ʻana o ka ʻikepili i ka wā e ulu a emi ai nā node o ka hui. No ka hōʻoia ʻana i ka ʻae ʻana i ka hewa, e hoʻopili hou ʻia kēlā me kēia ʻāpana o ka ʻikepili i kekahi mau node mālama, e hiki ai iā ʻoe ke mālama i ka ʻike ke hāʻule nā ​​​​server pākahi. Kākoʻo ʻia ka hana ʻana o nā waihona i hoʻolaha ʻia ma ka ʻāina, kahi i loaʻa ai nā pūʻulu o nā nodes i nā kikowaena data like ʻole.

Ua wehe ʻo PayPal i ka code JunoDB DBMS

Ma nā node mālama ʻikepili, aia lākou i loko o RAM a i ʻole i ka waihona kūloko e pili ana i ka waihona RocksDB. Ke mālama mau ʻia, mālama ʻia ka ʻikepili ma ke ʻano i hoʻopili ʻia (hiki ke hoʻoholo ʻia ke kī hoʻopunipuni e ka mea kūʻai aku a i ʻole ke kau ʻia ma ka pae proxy).

Ua wehe ʻo PayPal i ka code JunoDB DBMS

No ke komo ʻana i ka waihona mai nā noi, ua hoʻolako ʻia kahi waihona mea kūʻai aku e hāʻawi i kahi API no nā noi ma Java, Go a me C++. Hoʻomaʻamaʻa ʻia ka ʻāpana o ka mea kūʻai aku e like me ka hiki, a hoʻololi ʻia nā loiloi paʻakikī a me nā hoʻonohonoho i ka ʻaoʻao DBMS i nā manawa hiki. Hoʻokō ʻia ka pilina ma waena o ka mea kūʻai aku a me ka mea kaulike a i ʻole ka mea koho ma o kahi ala kamaʻilio i hoʻopili ʻia. No ka hoʻokele a hoʻouna ʻana i nā noi, hiki iā ʻoe ke hoʻohana i ka interface laina kauoha, e hoʻopiʻi ana i nā mana āpau o ka API mea kūʻai aku.

Hoʻolālā ʻia ka ʻōnaehana e hoʻoponopono i nā noi me nā latencies haʻahaʻa haʻahaʻa hiki ke ʻike ʻia, no ka laʻana, he pūʻulu o ʻekolu nodes mālama a hoʻokahi proxy, i hana ʻia mai n1-highmem-32 environments (32 Intel Xeon 2.30GHz CPUs, 214G RAM a me 450G SSD-based storage) , hiki iā ia ke hāʻawi i nā lohi paʻa ʻaʻole iʻoi aku ma mua o 2.5 ms ma 95% o nā hihia a me 16 ms ma 99% i ka wā e hoʻoponopono ai i ka 200 tausani mau pilina TLS a me ke kahe o 15 tausani mau noi i kēlā me kēia kekona (me 3000 mau pilina a me kahi kahe o 80 tausani mau noi. i kēlā me kēia kekona, ʻaʻole i ʻoi aku ka lōʻihi ma mua o 6 ms ma 95% o nā hihia a me 15 ms ma 99%). Ma PayPal, lawelawe nā lawelawe e pili ana iā JunoDB ma kahi o 350 biliona noi i kēlā me kēia lā.

Ua wehe ʻo PayPal i ka code JunoDB DBMS


Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka