THẢO LUẬN

thg 2 20, 2022 12:42 CH

@xuanvinhln ví dụ app của mình theo dạng nạp tiền thanh toán trước, kiểu nạp tiền vào game quy đổi ra game point. Thì khi mua item cần 2 step check số dư và add item. Nếu là monolithic thì transaction bao gồm 2 step: check số dư trước, pass thì - tiền và + item. Bây giờ 2 step check số dư và trừ tiền thuộc payment, + item thuộc order. Việc check số dư và tạo order mình có thể làm ở order service, đảm bảo số dư ok r mới tạo order, sau đó deduct money thực hiện sau. Nếu lỗi thì lỗi lúc này k phải do k đủ số dư (tức là data consistence). Ví dụ scrash app, singlepointfailure... thì bh bài toán này mình phải có cách handle khác và nó k nằm trong bài viết này. Mechanism thì vẫn là retry, timeout... Đây là case đầu tiên. nếu là thanh toán online nhập số thẻ visa/master thì mình có thể k thực hiện đc theo cách này, hoặc đến step deduct money phải làm kiểu khác.

Case t2, giống bài toán monolithic, 3 step kia thuộc cùng transaction, k thực hiện //. Vậy nên nếu làm shared database mình làm như c1, hạn chế dùng //. Nếu vẫn dùng // mình có rất nhiều cách để handle, 1 là read uncommited nhưng k phải database nào cũng support. 2 là dùng database lock.

a nghĩ là e đang hiểu nhầm việc sử dụng shared db để làm transaction cho các service. ý a muốn đề cập đến là việc mình đảm bảo đc data consistency -> dẫn đến việc xử lí data dễ hơn. hoặc em có idea gì khác thì share a nhé

0
thg 2 20, 2022 10:25 SA

@datbv E thấy chưa clear lắm. Như vd của a đang có 2 service:

  • order-service: create order
  • payment-service: deduct money.

Case 1: nếu thực hiện tuần tự, create order thành công, sau đó deduct money.

  • Do chạy trên 2 service khác nhau nên create order và deduct money là 2 transaction độc lập. Nếu như bước deduct money bị lỗi, làm sao để order-service biết mà rollback bước create-order?

Case 2: nếu thực hiện song song, create order và deduct money đồng thời.

  • Nếu DB đặt isolation mặc định ở mức REPEATABLE READ, thì 2 transaction create order và deduct money không nhìn thấy dữ liệu của nhau -> không biết cái nào đã được tạo thành công -> làm sao để cùng nhau commit hoặc rollback?
0
thg 2 20, 2022 8:58 SA

@HuyDQ ,ừ nhưng sữa lại được rồi,nếu muốn tạo page phải dùng model và cái chức năng elenoque gì đó ha,tạo csdl rồi migratevvvvvvvvvvvvvvv

+1
thg 2 20, 2022 8:53 SA

Sao mình không thấy phần 2.

0

500 chứ đúng không bạn?

0

anh ơi cho em hỏi với ạ, nếu vậy thì canvas nó hiển thị ra trang web nhưng nó lại che đi các element khác mất tiêu ạ, dẫn đến không tác động được gì với trang web đó ạ, anh có cách nào cho nó nằm dưới mà vẫn hiển thị được không anh??

0
thg 2 20, 2022 4:05 SA

ví dụ 2 action là create order (order-service) và deduct money (payment-service) thực hiện trên 2 service khác nhau với cùng 1 database. đầu tiên là create order: tạo transaction để làm mấy thứ lquan đến kiểm tra số dư và tạo order. tiếp theo là deduct money: tạo transaction để check order, trừ tiền, abc này nọ. 2 transaction này thực hiện trên cùng db nên lock lẫn nhau, k lo vấn đề concurrent.

còn việc 1 user có thể order nhiều order, trừ tiền nhiều lần, phần này phải làm sequence r nên cũng k lo việc data race

-> mấu chốt k phải là đưa toàn bộ các action vào cùng transaction mà để tránh việc inconsistence data khi thực hiện các transaction riêng lẻ. my idea, sai sót gì e bổ sung nhé 😄

0
thg 2 20, 2022 3:09 SA

E xin hỏi, với cách "1.4.1) Sử dụng chung database" Nếu 3 service A, B, C cùng nhau thực hiện đồng thời 3 action, update payment, update order, update deliver thì làm sao gom 3 action này vào cùng 1 transaction được?

0
thg 2 19, 2022 3:32 CH

bài viết hay ạ.

0

dạ anh ơi, cho em hỏi là em chèn vào trang web được rồi ạ, nhưng em tác động đến trang web đó không được (như click chuột vào các nút button trong trang web...v.v), kiểu nó bị cái canvas che đi nên không tác động được, mà dùng display: none; thì cái canvas lại không hiện lên mà lại tác động được với trang web ạ, anh có cách nào chỉ em với ạ, em cảm ơn anh nhiều.

0
thg 2 19, 2022 10:46 SA

heroku hỗ trỡ python 3.9.10 ,mình upload django sử dụng python 3.9.7 bị lỗi app crash 0

0
thg 2 19, 2022 10:27 SA

kha hay

0
thg 2 19, 2022 10:24 SA

@hoangviet ,mình dùng lệnh heroku ps:web scale=1 mà vẫn lỗi h10 app crash

0

cám ơn ông nhiều nhé ^^

0

hay quá ông, chân thực

+1
thg 2 19, 2022 7:31 SA

@hoangviet ,ừ bỏ rồi mà file requi kia còn thiếu thư viên gì không mà web bị lỗi application error,xem log thì nó báo gunicorn comment not found và lỗi app crash h10,12,dù mình fix procfile nhiều lần,còn lỗi app crash thì heroku ps:web scale=1 fix mà vẫn bị ,mình còn xem docs heroku mà chả thấy cách nào sữa hiệu quả,mình đang dùng miniconda 3.9.7 vì idle python 3.9.10 không tạo môi trường ảo được

0
thg 2 19, 2022 5:30 SA

bạn bỏ những chỗ có file local đi nhé, để version hoặc k cũng được

0
thg 2 19, 2022 4:36 SA

@hoangviet ,mình dùng cmd để xem log thì nó bảo mình bị lỗi h10,h12,h14 của application error ,dù mình dùng cách của heroku vẫn không fix được

0

Huyền làm thêm 1 bài về SphereFace đi. Mình chưa đọc kỹ nhưng thấy nó là cầu nối giữa CosFace và ArcFace. Hiểu rõ SphereFace thì ArcFace cũng rõ ràng hơn.

0
thg 2 19, 2022 3:35 SA

Uả, em nhớ hiểu dữ liệu của java script còn có thêm kiểu Function mà?

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí