Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Đề xuất một số cải tiến #109

Open
tvd12 opened this issue Mar 22, 2022 · 1 comment
Open

Đề xuất một số cải tiến #109

tvd12 opened this issue Mar 22, 2022 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@tvd12
Copy link

tvd12 commented Mar 22, 2022

Xin chào, mình là Dũng, đến từ youngmonkeys.org, mình rất ngưỡng mộ khi thấy các bạn làm 1 project với độ khó cao thế này. Mình xin phép đưa ra 1 số đề xuất các bạn xem có nên cải tiến không nhé. (xin đừng tiêu cực về những đề xuất này nhé)

  1. Về việc tổ chức project: mình nghĩa rằng phần core sẽ chỉ nên chứa các thành phần quản lý và xử lý dữ liệu ví dụ như: https://github.com/keva-dev/keva/tree/master/core/src/main/java/dev/keva/core/command/impl còn những phần liên quan đến socket server thì nên tổ chức thành 1 module riêng để gọi đến phần core này, để ai mạnh về data thì sẽ care phần core này, ai mạnh về phần socket thì sẽ care phần giao tiếp
  2. Những cái kiểu thế này nên cho vào file, vừa dễ đọc mà đỡ làm dài code: https://github.com/keva-dev/keva/blob/master/core/src/main/java/dev/keva/core/server/KevaServer.java#L28
  3. Cần phải chia việc quản lý dữ liệu thành nhiều tầng, ví dụ tầng memory và tầng persistence nên tách riêng nhau để nâng cấp cho dễ, có vẻ như lớp OffHeapDatabaseImpl đã làm việc này rồi, tuy nhiên thấy chưa thực sự rõ ràng
  4. Việc lock global này sẽ làm nghẽn cổ chai, nên mình nghĩ các bạn nên lock theo từng key kết hợp sử dụng partition map để giảm phạm vi lock lại, các bạn thử tham khảo lớp BytesMapPartitionImpl và lớp BytesMapImpl này xem sao.
  5. Một trong những ngược điểm rất lớn của redis là nó lưu dữ liệu vào file riêng, hazelcast ra đời đã khắc phục được nhược điểm này bằng việc cho phép persistence dữ liệu vào database bất kỳ như mysql, mongo, các bạn có thể tham khảo hazelcast hoặc calabash xem sao nhé
@tuhuynh27 tuhuynh27 self-assigned this Mar 22, 2022
@tuhuynh27 tuhuynh27 added the enhancement New feature or request label Mar 22, 2022
@tuhuynh27
Copy link
Member

Cảm ơn bạn @tvd12 đã đề xuất 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants