Ua wehe ʻo PayPal i ka code JunoDB DBMS

Ua wehe ʻia ʻo JunoDB e PayPal, kahi ʻōnaehana hoʻokele waihona ʻikepili e hoʻomanawanui i ka hewa e hoʻokele ana i ka ʻikepili waiwai koʻikoʻi. Ua hoʻolālā ʻia ka ʻōnaehana mai ka honua aʻe no ka palekana kiʻekiʻe, ka scalability horizontal, ka hoʻomanawanui hewa, a me ka hiki ke lawelawe i nā haneli haneli o nā pilina like me ka latency wānana. ʻAneʻane pau nā lawelawe PayPal, mai ka hoʻokomo ʻana o ka mea hoʻohana a hiki i ka hana ʻana i nā hana kālā, hilinaʻi iā JunoDB. Ua kākau ʻia ke code o ka papahana ma Go (me kahi waihona puke mea kūʻai aku Java) a ua laikini ʻia ma lalo o ka laikini Apache 2.0. E komo pū ka hoʻomohala hou ʻana i nā hoʻoponopono, nā hoʻomaikaʻi, a me nā hoʻololi mai ke kaiāulu.

Hoʻokumu ʻia ke ʻano hana o JunoDB ma ka hoʻohana ʻana i kahi mea kaulike ukana e ʻae ana i nā noi mai nā polokalamu client a hāʻawi iā lākou ma waena o nā kikowaena proxy e komo pū ana i kahi hui o nā kikowaena ka mālama ʻana i ka wā e hoʻokō ai i kahi noi. Hoʻokumu kēlā me kēia kikowaena proxy i nā pilina me lākou āpau i ka manawa hoʻokahi. nā kikowaena ka mālama ʻana a me ke ala ʻana i nā noi i kahi hui o nā kikowaena mālama e pili ana i kahi papa kuhikuhi partitioning i mālama ʻia i loko o ka ʻōnaehana mālama hoʻonohonoho i hoʻokaʻawale ʻia etcd.

 Ua wehe ʻo PayPal i ka code JunoDB DBMS

Hoʻokaʻawale ʻia ka ʻikepili a hāʻawi ʻia i nā kikowaena mālama me ka hoʻohana ʻana i ka hashing, e hōʻemi ana i ka neʻe ʻana o ka ʻikepili ke hoʻonui ʻia a hoʻemi ʻia paha nā kikowaena i loko o kahi hui. No ka hōʻoia ʻana i ka hoʻomanawanui hewa, hana hou ʻia kēlā me kēia ʻāpana ʻikepili ma nā kikowaena mālama he nui, e mālama ana i ka ʻike ʻoiai inā hāʻule nā ​​​​kikowaena pākahi. Kākoʻo ʻia nā ʻōnaehana mālama i hoʻokaʻawale ʻia ma ke ʻano honua, me nā hui o nā kikowaena i loaʻa ma nā kikowaena ʻikepili like ʻole.

 Ua wehe ʻo PayPal i ka code JunoDB DBMS

Mālama ʻia ka ʻikepili ma nā kikowaena mālama i loko o ka RAM a i ʻole ma kahi mālama kūloko me ka hoʻohana ʻana i ka waihona puke RocksDB. No ka mālama mau ʻana, mālama ʻia ka ʻikepili i hoʻopāʻālua ʻia (hiki ke wehewehe ʻia ke kī hoʻopāʻālua e ka mea kūʻai aku a i hoʻonohonoho ʻia ma ka pae proxy).

 Ua wehe ʻo PayPal i ka code JunoDB DBMS

No ke komo ʻana i ka waihona ʻikepili mai nā noi, ua hoʻolako ʻia kahi waihona puke client, e hāʻawi ana i kahi API no nā noi i kākau ʻia ma Java, Go, a me C++. Ua hoʻomaʻalahi ʻia ka ʻaoʻao client e like me ka hiki, me ka logic paʻakikī a me nā hoʻonohonoho i neʻe ʻia i ka ʻaoʻao DBMS i nā manawa hiki. Hoʻokō ʻia ke kamaʻilio ma waena o ka client a me ka mea kaulike ukana a i ʻole ka proxy ma o kahi kahawai kamaʻilio i hoʻopāʻālua ʻia. Hiki ke hoʻohana ʻia kahi interface laina kauoha, e kope ana i nā hiki āpau o ka API client, no ka hoʻokele a me ka hoʻouna ʻana i nā noi.

Ua hoʻolālā ʻia ka ʻōnaehana e hana i nā noi me nā latency haʻahaʻa i wānana ʻia. No ka laʻana, ʻo kahi hui o ʻekolu mau kikowaena mālama a me hoʻokahi proxy, i hoʻokumu ʻia mai nā wahi n1-highmem-32 (32 Intel Xeon 2.30GHz CPUs, 214G RAM, a me ka waihona 450G SSD), ua hiki ke hāʻawi i nā latency paʻa ʻaʻole i ʻoi aku ma mua o 2.5 ms ma 95% o nā hihia a me 16 ms ma 99% o nā hihia i ka wā e hana ana i 200 mau pilina TLS like a me ke kahe o 80 mau noi i kekona (me 3000 mau pilina like a me ke kahe o 15 mau noi i kekona, ʻaʻole i ʻoi aku ka latency ma mua o 6 ms ma 95% o nā hihia a me 15 ms ma 99%). Mālama nā lawelawe a PayPal e pili ana iā JunoDB ma kahi o 350 biliona mau 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